系统相关
首页 > 系统相关> > linux – 为什么pstree中显示的某些进程没有在ps -ef中显示?

linux – 为什么pstree中显示的某些进程没有在ps -ef中显示?

作者:互联网

作为标题,我在Linux的sh shell中运行上面的命令,但是我通过运行“ps -ef | grep dummy”找不到pid 7459的子进程.
    有人可以解释为什么这两个命令之间会有这样的差异吗?
    它们是活动进程,而不是LWP(线程),对吧?我怎样才能显示线程,顺便说一下?

sh-3.2$pstree -p  7459
dummy(7459)-+-{dummy}(7508)
            |-{dummy}(7528)
            |-{dummy}(7529)
            |-{dummy}(7530)
            |-{dummy}(7551)
            |-{dummy}(7552)
            |-{dummy}(7553)
            `-{dummy}(7554)
sh-3.2$ps -ef | grep dummy
root      7459  7167  0 Aug28 ?        00:09:13 /usr/bin/dummy
erv      23720 17254  0 13:22 pts/4    00:00:00 grep dummy
sh-3.2$

解决方法:

正如@nos已经说过,pstree默认显示线程,但是ps -ef没有.

ps可以显示线程,你只是没有要求它.试试这个(可能取决于你的版本):

ps -eLf

这一切都在man page.

Linux线程只是与另一个进程共享相同地址空间的进程.它就像一把叉子,没有干净利落地脱离.您可以在clone syscall documentation阅读更多内容.

标签:shell,linux,pstree
来源: https://codeday.me/bug/20190517/1119217.html