脚本应显示命令pstree -hsup $$
。我尝试过很多不同的方法,但找不到像这样打印输出的方法
28348 (bash,root)
28347 (su,root)
28346 (sudo,root)
14085 (bash,user)
14083 (lxterminal,user)
1 (Systemd,root)
答案1
ps -o ppid
将输出父进程的 pid。因此,从当前 pid 开始,然后询问父进程,然后询问其父进程,依此类推。
#! /bin/bash
pid=$1
while ((pid)) ; do
ps -h -o 'pid,comm,euser' $pid \
| sed -E 's/^( *[0-9]+ )([^ ]+) *([^ ]+)/\1(\2,\3)/'
pid=$(ps -h -o ppid $pid)
done
您想要输出 pid、命令和有效用户(或者可能是真实用户?)。在中指定它们,-o
并使用sed
重新格式化输出。在这里,我们捕获三个非空格字符串并在需要的地方插入括号和逗号。