使用 top 查看用户代表 sudo 运行的进程

amc*_*ack 6 process top

如果我运行,top -u username我将看到特定用户的所有进程。有没有办法查看用户通过 sudo 调用的所有进程?

Mik*_*kel 10

这似乎不是一个简单的方法。

top的角度来看,用户运行的任何命令sudo似乎都在运行,root因为它确实是以 root 身份运行的。

您可以尝试的一种方法是将其跟踪到用户登录的终端,然后查看在该终端上以 root 身份运行的进程。

例如,

$ w user
USER     TTY      FROM        LOGIN@   IDLE   JCPU   PCPU WHAT
user     pts/0    w.x.y.z     07:01    0.00s  1.07s  0.03s w user
Run Code Online (Sandbox Code Playgroud)

注意用户在pts/0

现在运行top

现在按f(字段选择),然后g(切换控制 tty 字段),然后按Enter

现在看与工艺pts/0TTY列。

您也可以TTYg第二次进行排序。


或者你可以procfs用来获取一个列表pids,例如

$ sudo grep -l SUDO_USER="\<user\>" /proc/*/environ
Run Code Online (Sandbox Code Playgroud)

然后对该列表执行任何操作。甚至用它来运行top -p <pid1>,<pid2>....

sudo top -p $(sudo grep -l SUDO_USER='\<user\>' /proc/[0-9]*/environ |
    cut -f 3 -d / |
    tr '\n' ',' |
    sed -e 's/,$//')
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,top如果该用户使用sudo.


也不要忘记运行命令的用户可能正在被记录,例如,/var/log/secure/var/log/auth.log,或/var/log/sudo.log,或您的系统使用的任何内容。