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这个进程里面的东西
bash和ps -f这样才是平级的

专业术语叫forking 衍生

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

他的依赖一定是bash

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

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

如果判断?type

alias别名

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

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

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

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

这里是这个文件的内容

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

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

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

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

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

micro_frank

相关推荐
民乐团扒谱机32 分钟前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜1 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_371802111 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT1 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅2 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖3 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
阡陌数智4 小时前
Claude API新版本重大变更与安全升级指南
java·linux·安全
奶茶树4 小时前
【Linux】环境开发工具(vim,gcc,g++,Makefile)
linux·运维·vim
木子欢儿7 小时前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
say_fall8 小时前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信