Não parece ser possível de maneira fácil.
Do ponto de vista de top
, qualquer comando executado por um usuário usando sudo
parece estar sendo executado como root
, porque está sendo executado como root.
Uma maneira que você pode tentar é rastreá-lo até o terminal em que o usuário está logado e, em seguida, ver os processos sendo executados como root nesse terminal.
Por exemplo,
$ 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
Observe que o usuário está em pts/0
.
Agora, execute top
.
Agora pressione f (seleção de campo), então g (alterne o campo de controle tty), então Digite .
Agora, observe os processos com pts/0
na coluna TTY
.
Você também pode classificar por TTY
pressionando g pela segunda vez.
Ou você pode usar procfs
para obter uma lista de pids
, por exemplo
$ sudo grep -l SUDO_USER="\<user\>" /proc/*/environ
Depois faça qualquer coisa com essa lista. Até mesmo usá-lo para executar 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/,$//')
É claro que, nesse caso, top
não mostrará se esse usuário iniciar um novo comando usando sudo
.
Também não se esqueça de que um usuário que está executando um comando provavelmente está sendo registrado, por exemplo, para /var/log/secure
ou /var/log/auth.log
, ou /var/log/sudo.log
, ou seja qual for o seu sistema.