![현재 실행중인 프로세스가 루트 또는 사용자에 의해 열려 있는지 확인하는 방법](https://linux55.com/image/32675/%ED%98%84%EC%9E%AC%20%EC%8B%A4%ED%96%89%EC%A4%91%EC%9D%B8%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B0%80%20%EB%A3%A8%ED%8A%B8%20%EB%98%90%EB%8A%94%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%20%EC%9D%98%ED%95%B4%20%EC%97%B4%EB%A0%A4%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
현재 프로세스를 종료하기 위해 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