ps -l与lsof

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
云海幻梦
帖子: 51
注册时间: 2023-02-21 9:52
系统: linux

ps -l与lsof

#1

帖子 云海幻梦 » 2023-03-19 9:46

已打开一终端,再打开一终端,用ps -l命令无法显示新增终端进程,用lsof /bin/bash则可以!而且使用vim命令也不能在ps -l里显示?虽然ps是静态的,但按理说ps命令在新开终端动作后也应该显示出新终端进程?!
头像
peteryeh64
论坛版主
帖子: 9379
注册时间: 2008-12-20 15:43
系统: 家kubuntu20.04
来自: 心靈深處

Re: ps -l与lsof

#2

帖子 peteryeh64 » 2023-03-19 9:51

by chatGPT:
可能是因为`ps -l`命令只显示与当前shell相关的进程,而不会显示其他终端或进程。这意味着如果您在一个终端中打开另一个终端并运行命令,则新的bash进程将不会出现在原始终端上。
相反,使用`lsof /bin/bash`命令可以列出所有正在使用/bin/bash可执行文件的进程,包括您刚刚启动的那个新bash shell。
至于vim命令不能在ps -l中显示,在这种情况下也是类似的问题。当您在vim编辑器中输入编辑时,它实际上是作为子进程运行,并且与父bash shell没有直接关联。因此,在同一台机器上运行“ ps -l”时,vim编辑器不会立即出现在列表中。
总之,请注意: `ps -l` 命令只列出当前shell和其相关子进程。要查看系统上所有正在运行的进程,请考虑使用更广泛范围内适用于整个系统环境下如 `top`, `htop`, 或者更详尽但需要root权限才能操作如 `/proc/`.
[论坛版主行为规定]+[PITIVI簡易教程]+[ubuntu裝迅雷]
[releases.ubuntu.com]+[cdimage.ubuntu.com]+[old-releases.ubuntu.com]
[學ubuntu必須拜讀懶蝸牛"笨兔兔的故事"=viewtopic.php?f=112&t=162040][Linux明日的希望在中國]
云海幻梦
帖子: 51
注册时间: 2023-02-21 9:52
系统: linux

Re: ps -l与lsof

#3

帖子 云海幻梦 » 2023-03-19 10:27

学习了,谢谢
头像
astolia
论坛版主
帖子: 6513
注册时间: 2008-09-18 13:11

Re: ps -l与lsof

#4

帖子 astolia » 2023-03-20 17:27

云海幻梦 写了: 2023-03-19 9:46 但按理说ps命令在新开终端动作后也应该显示出新终端进程?!
又来想当然的“按理说”了。你先在man ps看看ps默认情况下显示的进程范围是什么好不好?看懂了就不会被“与当前shell相关”这种模糊的语言唬住带到沟里

至于楼上对vim部分的解释,更是完全错误的。一个简单的反例就是在vim的末行模式下执行!ps或者用vim &后台运行后再执行ps,一样能显示vim进程
回复