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

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

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

答案1

这似乎不可能以简单的方式实现。

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

请注意,该用户已打开pts/0

现在运行top

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

现在观察列pts/0中的进程TTY

TTY您还可以通过按g第二次来排序。


或者您可以用来procfs获取 的列表pids,例如

$ sudo grep -l SUDO_USER="\<user\>" /proc/*/environ

然后对该列表执行任何操作。甚至用它来运行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/,$//')

当然,在这种情况下,top不会显示该用户是否使用 启动新命令sudo


另外,不要忘记运行命令的用户可能会被记录,例如记录到/var/log/secureor /var/log/auth.log、 or/var/log/sudo.log或您的系统使用的任何内容。

答案2

你可以安装顶部看看它是否能让您有更好的概览。 htop 也支持按用户过滤。

相关内容