当前位置: 首页 > article >正文

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的数量
在这里插入图片描述
这里echo没加括号
这里echo加括号
有点奇怪,多加几个括号就多了几个子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

http://www.lryc.cn/news/2394158.html

相关文章:

  • Qt -下载Qt6与OpenCV
  • 机器学习无监督学习sklearn实战一:K-Means 算法聚类对葡萄酒数据集进行聚类分析和可视化( 主成分分析PCA特征降维)
  • 可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?
  • C语言之编译器集合
  • 计量表计的演进历程与技术变革:从机械到物联网时代
  • 更换Homebrew 源
  • 人工智能在智能供应链中的创新应用与未来趋势
  • 鸿蒙OSUniApp自定义手势识别与操作控制实践#三方框架 #Uniapp
  • LLM优化技术——Paged Attention
  • 推荐几个不错的AI入门学习视频
  • 采用Bright Data+n8n+AI打造自动化新闻助手:每天5分钟实现内容日更
  • Real SQL Programming
  • Sentinel限流熔断机制实战
  • Java 数据处理 - 数值转不同进制的字符串(数值转十进制字符串、数值转二进制字符串、数值转八进制字符串、数值转十六进制字符串)
  • 79. 单词搜索-极致优化,可行性剪枝和顺序剪枝
  • ICDMC 2025:创新媒体模式,迎接数字时代的挑战
  • 深入解析C#多态性:基类引用、虚方法与覆写机制
  • SoftThinking:让模型学会模糊思考,同时提升准确性和推理速度!!
  • C++中 newdelete 与 mallocfree 的异同详解
  • 晨控CK-UR08与欧姆龙PLC配置Ethernet/IP通讯连接操作手册
  • STM32入门教程——LED闪烁LED流水灯蜂鸣器
  • 鸿蒙OSUniApp 实现的数据可视化图表组件#三方框架 #Uniapp
  • Tornado WebSocket实时聊天实例
  • HarmonyOS鸿蒙与React Native的融合开发模式以及能否增加对性能优化的具体案例
  • 化学分析原理。
  • 开源即战力!从科研到商用:Hello Robot 移动操作机器人Stretch 3多模态传感融合(RGB-D/激光/力矩)控制方案
  • 元胞自动机(Cellular Automata, CA)
  • 智能手表单元测试报告(Unit Test Report)
  • 微深节能 码头装卸船机定位与控制系统 格雷母线
  • 基于matlab遗传算法和模拟退火算法求解三维装箱优化问题