Como verificar se um processo atualmente em execução é aberto pelo usuário root ou usuário

2

Atualmente, estou criando um script BASH para eliminar processos. Eu primeiro verifico se o processo está rodando e mato-o. Mas gostaria de adicionar um if aninhado para descobrir se esse processo foi aberto pela raiz (não para o script atual).

    
por darkling3100 03.06.2013 / 11:28

1 resposta

3

Você pode usar ps -o ruser= ou ps -o uid= :

$ ps -p 930 -o ruser=
root
$ ps -C cron -o ruser=
root
$ [[ $(ps -C cron -o uid=) -eq 0 ]]; echo $?
0

-p corresponde por pid e -C pelo nome do comando. O ps do OS X não suporta -C, mas você pode usar o pgrep:

$ ps -p $(pgrep -x cron) -o ruser=
root
    
por 03.06.2013 / 11:41