pstree 不显示每个进程

new*_*w_x 4 process ps

我打开了一个终端,sudo su通过将其运行为 来在后台运行 Nano 编辑器nano&

我尝试在进程列表中找到新启动的nano进程。
为此,我输入了

ps aux|grep -i nano 
Run Code Online (Sandbox Code Playgroud)

-> 看到了新创建的nano

但是当我尝试使用 pstree 查看相同的纳米过程时,它没有列出纳米。我用了

pstree -p|grep -i nano
Run Code Online (Sandbox Code Playgroud)

没有显示输出。

ste*_*ver 6

看起来pstree在管道传输时会截断长行,例如

\n
# pstree -sp "$$"\nsystemd(1)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sddm(1007)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sddm-helper(1097)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80lxqt-session(1114)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80qterminal(1475)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80bash(1478)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sudo(28929)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sudo(28930)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80su(28931)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80bash(28932)\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80nano(28938)                          \n                                                                                                                                                      \xe2\x94\x94\xe2\x94\x80pstree(29086)\n
Run Code Online (Sandbox Code Playgroud)\n

\n
# pstree -sp "$$" | cat                                                                                                                   \nsystemd(1)---sddm(1007)---sddm-helper(1097)---lxqt-session(1114)---qterminal(1475)---bash(1478)---sudo(28929)---sudo(28930)---su(28+\n
Run Code Online (Sandbox Code Playgroud)\n

(注意后面的所有内容都sudo(28930)---su(28+被省略)。

\n

您可以通过-lor--long选项来防止这种情况,即

\n
# pstree -lsp "$$" | grep -i nano                                                                                                           \n                                                                                                                                                      |-nano(28938)\n
Run Code Online (Sandbox Code Playgroud)\n

或者通过不从 PID 1 开始来避免该问题 - 例如,从父 shell 的 PID 开始:

\n
# pstree -p "$$" | grep -i nano\n            |-nano(28938)\n
Run Code Online (Sandbox Code Playgroud)\n

或者(也许更好)避免 grep pstree 输出(这实际上是为人眼设计的),而是使用pgrep

\n
# pgrep -af nano\n28938 nano\n
Run Code Online (Sandbox Code Playgroud)\n