查看进程

回忆上次内容

  • 上次先<kbd>ctrl</kbd> + <kbd>z</kbd> 挂起进程
  • 然后运行 bg

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索

  • 程序继续跑起来
  • 而且不断输出到标准输出流
  • 甚至连<kbd>ctrl</kbd> + <kbd>c</kbd> 都无法结束进程了
  • 这可怎么办呢?
  • 只能新开一个终端想办法

查询进程

  • 搜索 ​​debian进程查询​

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_python_02

  • 找到具体方法

进程

  • 具体方法

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_python_03

动手试试

  • 新开一个终端
  • 运行ps -elf

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_04

  • 查看到两条进程信息
  • 看起来上一个zsh就是pid为281的进程
  • 记住281这个pid
  • 现在我想把这个278进程干掉怎么办?
  • 搜索一下

搜索

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_05

  • 搜索结果

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_06

杀意

  • 搜到了一个可怕的程序叫做 ​​kill​​😱
  • 他可以给指定 pid 的进程发送信号
  • pid的编号可以通过ps -elf的结果中找到
  • 找到上一个zsh的pid
  • 就是刚刚的281
#杀死进程
kill -9 PID
  • ​-9​​ 就是死亡信号
  • 发过去之后那个进程就要自尽 🥵
  • 没有任何进程愿意接受着这个信号
  • 君要臣死,臣不得不死
  • 权限对进程是多么重要啊
  • 但是接到了就要执行
  • 阿啊阿啊阿啊·~ 💀

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_07

  • 真的把之前的那个zsh进程干掉了
  • 窗口都消失了
  • 但是看到的进程太多了
  • 但我只想要和当前zsh有关的进程

zsh进程

#查询进程
#我们只要和zsh这个进程相关的
#把e去掉
ps -lf
  • 这样只出现本shell相关的进程

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_08

  • kill起来比较方便

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_09

  • 好像还挺好玩
  • 再建几个进程放后台
  • 试着kill一下

启动更多新进程

  • 先启动更多的报时程序

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_10

  • 再试着一个个地kill
  • 如何理解suspend呢?

suspend词源

  • suspend = sus + pend

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_11

  • sus来自于sub 下面
  • sustain
  • 支撑;承受(sus+tain握住→在下面握住→支撑)
  • suspect
  • 怀疑 (sus+pect看→在下面看一看→怀疑)
  • susceptive 有接受力的;敏感的(sus+cept拿+ive→有拿下的能力→有接受力的)
  • suspend是什么意思呢?

-pend

  • pend 来自于 *(s)pen-

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_12

  • *(s)pen- 意思为悬挂带着
  • depend
  • de-, 向下,离开 -pend, 悬挂
  • 即悬挂点
  • 引申义依靠
  • denpendent
  • independent
  • append
  • 词根词缀: ap- 来 , 临近
  • -pend- 悬挂
  • 垂→依附
  • expend
  • ex- 出 , 向外 + -pend- 支付
  • spend
  • suspend
  • 挂起
  • 吊,悬挂;推迟,暂停
  • 有啥关系?

suspend

  • 古代萨克逊人使用的刀叫做撒克逊刀
  • 刃朝上抽出来就是要战斗

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_13

  • 挂起来
  • sustain 了
  • 就是不战斗了
  • 推迟战斗了
  • 暂停了
  • 程序先不运行
  • 就是挂起了
  • 先运行再挂起还是有点麻烦
  • 可以直接后台运行但是不输出到屏幕吗?

搜索

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_14

  • 搜索结果

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_15

查询手册

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_python_16

后台运行不输出

  • 搜索后得到答案

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_后台运行_17

  • nohup python -u show_time.py > test.log 2>&1 &
  • 0 – stdin (standard input,标准输入)
  • 1 – stdout (standard output,标准输出)
  • 2 – stderr (standard error,标准错误输出)
  • 2>&1 解释:
  • 将标准错误 2 重定向到标准输出 &1
  • 标准输出 &1 再被重定向输入到 test.log 文件中
  • 最后的&表示后台运行
  • 可以在后台再开几个进程吗?

后台进程

  • 方向键<kbd>↑</kbd>可以找到上一条命令

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_18

  • 这些进程之间是什么关系呢
  • 可以查询得到吗?😜

总结

  • 进程查询
  • ​ps -elf​​ 查看所有进程信息
  • ​ps -lf​​ 查看本终端相关进程信息
  • 杀死进程
  • ​kill -9 PID​​ 给进程发送死亡信号
  • 运行多个 ​​python3 show_time.py​​ 的话
  • 各个进程独立
  • ​python3 show_time.py​​ 大概 8+M
  • 各占内存
  • 这些进程之间是什么关系呢?🤔

[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程_搜索_19