如果我运行,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/0
在TTY
列。
您也可以TTY
按g第二次进行排序。
或者你可以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
,或您的系统使用的任何内容。