如果我运行,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/secure
or /var/log/auth.log
、 or/var/log/sudo.log
或您的系统使用的任何内容。
答案2
你可以安装顶部看看它是否能让您有更好的概览。 htop 也支持按用户过滤。