Linux 1.0.4

父子shell

linux研究的就是shell

打开两个窗口就是两个shell

终端的软件有很多
bash也是一个软件

我们在terminal里面再打开一个bash,然后再次使用ps命令发现多出来一个bash,之后点击exit只是显示了一个exit,这个只是退出了在terminal中打开的bash

再使用ps命令发现之前的哪个bahs也消失了

这其中分为父shell子shell

上图中PPID意思就是他的父shell的位置

这样子可以一级一级往下推

孙子->父亲->爷爷

在一个窗口里面打开了好几个bash

有一个有意思的命令ps --forest

分号在命令里的作用

可以使用;来隔开各种命令,这样就可以做到依次执行命令的作用

就会出现这样的效果

还可以给命令加上括号()

加上括号之后就是先创建一个子shell然后来执行这些命令

但是这里发现并没有进入到根目录,主包猜是子shell进去了,但是父shell没进去
echo $BASH_SUBSHELL,这条命令可以显示子shell的数量


有点奇怪,多加几个括号就多了几个子shell

但是这个括号好像加的有点说法

现在只要知道有这么回事就行了

sleep和jobs

没什么屌用
sleep + 数字就是让你的终端延迟几秒再执行

想停止也没招,只有强行停止进程

但是就这样挂在前台我啥也做不了

所以希望这个可以放到后台去执行
sleep + 数字&

这时候会给你这个进程的PID

然后你就可以进后台看看

嗷,就是你小子在我后台挖矿呢是吧

干掉他就使用kill

在企业里的话,如果使用ps就显示的太多了

有个更好的选择jobs,就是看看后台谁在干活
jobs -l很实用的命令

等到任务结束之后就不是Running,就变成Done,意思就是已经执行完毕了

那为什么要使用sleep呢?

因为有些软件确实需要sleep来延迟去执行

后台用法的举例

假如说我要执行打包命令
(tar -zxvf ... ; tar -zxvf ...)&,这样就把这个东西放在后台了

个人感觉类似于windows里面的最小化

coproc协程

coproc + 进程名 + { 要执行的命令; }注意里面这个花括号,两边一定要有空格,而且指定的内容一定要以分号结尾

这个的作用和上面的有什么区别呢?

上面是挂在当前shell的后台,而这个是创建了一个子shell挂在子shell的后台

这个好处就是我不想在当前shell处理的话我就可以创建一个子shell来执行

但是这个命令不要随意的使用,虽然这样的方式很自由,但是会造成你的性能大大下降

外部命令和内部命令

ps -f的时候发现这玩意也算作了一个命令

但是为什么有的程序就没有创建进程呢?

举个例子ps -f就是为了看到shell里面的所有进程

那就得开个上帝视角,必须另外创建一个进程来专门运行ps -f,才能看到shell这个进程里面的东西
bashps -f这样才是平级的

专业术语叫forking 衍生

观察上面的ps -f发现他的PPID就是原来的bash

他的依赖一定是bash

单独的这样的命令叫做外部命令,因为他是单独的创建了一个进程

但是像cd这样的命令,使用的时候不需要创建进程,这样的命令叫做非外部命令,也叫做内建命令

如果判断?type

alias别名

history这条命令可以查看你之前使用过的命令

通常情况下保存的是一千多条命令

history跟踪的命令是可以修改的
!!双感叹号就是执行上一个命令

这里的这里的命令都是被保存到了一个文件中
.bash_history都保存到了这里

这里是这个文件的内容

使用history查看完历史命令之后可以使用! + 对应的命令序号,直接就可以执行对应的命令
alias别名

这个就可以看到有些命令的别名

可以自己去创建一个别名,就是把好多后缀弄成一个自己熟悉的命令
alias li='li',这样就是创建了一个名字

但是有一个缺点,只能在当前的shell去使用,一旦退出当前终端之后就没了

需要考虑如何设置成为永久的命令来保存起来

micro_frank

相关推荐
A小辣椒7 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒11 小时前
TShark:基础知识
linux
AlfredZhao13 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言