我创建了一个别名来搜索并显示与特定用户帐户关联的所有进程,这些进程似乎在我每次登录时都会自动启动,大约有 15 个,通过排除过程,我找到了父进程。基本上我希望显示别名,只是显示父进程而不是整个列表,我知道我必须通过管道,但除此之外我不确定。
例子:
ps -u *someuser* | grep <parent process name/PID>
编辑#1
这与我所指的进程树并不完全相关,但我打开了一个手册页,以便可以粘贴关联的进程:
966 man pidof ---
969 sh -c (cd '/usr/local/share/man' && (echo ".ll 12.8i"; echo ".nr LL 12.8i"; /usr/bin/gunzip -c '/usr/local/share/man/ ---
970 sh -c (cd '/usr/local/share/man' && (echo ".ll 12.8i"; echo ".nr LL 12.8i"; /usr/bin/gunzip -c '/usr/local/share/man/ --- 975 sh -c (cd '/usr/local/share/man' && (echo ".ll 12.8i"; echo ".nr LL 12.8i"; /usr/bin/gunzip -c '/usr/local/share/man/ ---
977 /usr/bin/less -is` how `kill 966` kills all the rest
答案1
您可以尝试使用 Unix 命令pstree
来获取树形结构中的进程名称列表。
例子
$ pstree
init-+-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-abrtd
|-acpid
|-atd
|-auditd-+-audispd-+-sedispatch
| | `-{audispd}
| `-{auditd}
|-autossh---ssh---ssh
|-avahi-daemon---avahi-daemon
|-bonobo-activati---2*[{bonobo-activat}]
|-chrome-+-3*[chrome]
| |-chrome-sandbox---chrome-+-chrome-+-25*[chrome---3*[{chrome}]]
| | | |-4*[chrome---4*[{chrome}]]
| | | `-chrome---6*[{chrome}]
| | `-nacl_helper_boo
| `-31*[{chrome}]
...
...
如果您只想与特定用户相关的进程,您还可以提供用户名。
例子
$ pstree saml
autossh---ssh---ssh
bonobo-activati---2*[{bonobo-activat}]
chrome-+-3*[chrome]
|-chrome-sandbox---chrome-+-chrome-+-25*[chrome---3*[{chrome}]]
| | |-4*[chrome---4*[{chrome}]]
| | `-chrome---6*[{chrome}]
| `-nacl_helper_boo
`-31*[{chrome}]
clock-applet---{clock-applet}
...
...