특정 프로세스가 특정 사용자로 실행되고 있는지 확인하고 있습니다. 내가 이것을 할 수 있는 이유
ps --no-headers -C command -o user | grep user
꽤 깔끔하지만 인수를 인쇄하려는 경우 약간 보기 흉해집니다(사용자 이름에 대한 grep을 방해할 수 있습니다!).
ps --no-headers -C command -o user,pid,comm | egrep \^user
사용자를 첫 번째 또는 마지막 열로 원하지 않으면 상황이 더 복잡해질 것입니다. PS에서 -C 및 -U 옵션을 다음과 같이 지정할 수 있다면 더 깔끔할 것입니다.
ps --no-headers -C command -U user -o pid
그러나 두 절이 AND가 아닌 OR 역할을 하기 때문에 이는 작동하지 않습니다. 제가 놓친 'ps' 기능이 있나요? 아니면 제가 사용할 수 있는 또 다른 깔끔한 라이너가 있을까요? 건배!
답변1
pgrep
다양한 조건을 지원합니다:
pgrep -x -u "user" "command"
인수와도 일치하려면 다음 -x
으로 바꾸십시오 . 디스플레이 명령줄에 -f
추가합니다 .-l
다음에서 직접 명령줄을 읽을 수도 있습니다 (null로 구분)./proc/PID/cmdline
if pids=$(pgrep -x -u "user" "command"); then
for pid in $pids; do
tr "\0" " " < /proc/$pid/cmdline; echo
done
fi