Shell

1.1 进程列表

  1. 可以在一行,指定依次运行的一系列命令,如pwd; ls。但是这不是进程列表。
  2. 进程列表需要用括号包裹起来,如(pwd; ls),进程列表是创建子shell进行运行。
  3. $BASH_SUBSHELL,返回0,则表示没有创建子shell。

1.2 后台模式

  1. 在命令的末尾加入&
    • sleep 10 &,结果是[2] 47073,当括号内的2,表示有两个后台任务,47073是进程ID。
  2. 原理
    • Shell会使用fork()系统调用创建一个子进程,然后后台执行任务
    • 后台运行不一定创建了子shell
  3. 查看后台作业jobs
    • -l查看更多信息。
  4. 将后台作业切换到前台fg %作业号
  5. 把前台作业放到后台
    • ctrl + z先暂停任务
    • bg %作业号
  6. 杀死后台任务kill %作业号
  7. 子shell和后台运行的区别
    • 子shell会阻塞父进程,后台运行不会
    • 子shell拥有自己的环境,后台运行共享Shell环境(除非明确在子shell中运行)。
  8. 子shell和后台运行都要创建子进程。
  9. 可以将进程列表放入后台(sleep 2; pwd) &

1.3外部命令

  1. 外部命令就是bash shell之外的程序。当执行外部命令时,会创建出一个子进程。例如ps,使用ps -f可以看见ps这条命令同样创建了一个进程。
  2. 内建命令速度会快很多。

1.4 history命令

  1. 作用:跟踪使用过的命令
  2. 常用方式
    • history
    • 然后!数字,就能够执行对应的命令
  3. !!执行刚刚执行的命令
  4. 一个环境变量HISTSIZE,保存最多命令的数量
  5. 历史命令保存在~/.bash_history中,先存放在内存,当shell退出时,才被写入。
    • history -a强制写。

1.5 alias命令

  1. 作用:为常用的命令创建另一个名称。
  2. alias -p查看当前可用的别名
  3. alias p='pwd',创建别名
  4. 一个别名仅在被定义的shell中才有效。
posted @   ouyangxx  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示