현재 실행중인 프로세스가 루트 또는 사용자에 의해 열려 있는지 확인하는 방법

현재 실행중인 프로세스가 루트 또는 사용자에 의해 열려 있는지 확인하는 방법

현재 프로세스를 종료하기 위해 BASH 스크립트를 만들고 있습니다. 먼저 프로세스가 실행 중인지 확인한 다음 종료합니다. 하지만 if프로세스가 루트(현재 스크립트 대신)에 의해 열리는지 확인하기 위해 중첩을 추가하고 싶습니다 .

답변1

ps -o ruser=또는 다음 을 사용할 수 있습니다 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는 pid로 일치하고, -C는 명령 이름으로 일치합니다. OS X의 ps는 -C를 지원하지 않지만 pgrep을 사용할 수 있습니다.

$ ps -p $(pgrep -x cron) -o ruser=
root

관련 정보