프로세스가 존재하지 않는 경우 출력을 생성하지 않음

프로세스가 존재하지 않는 경우 출력을 생성하지 않음

다음 명령이 tail실행되지 않을 때 출력이 생성되지 않으면 기쁠 것입니다.

ps --no-headers $(pidof tail)

대신 나는 다음을 얻습니다.

  964 pts/2    00:00:01 bash
 4393 pts/2    00:00:00 ps

답변1

ps귀하의 버전이 이 옵션을 지원하는 경우 -C:

ps --no-headers -C tail

ps그렇지 않은 경우 성공한 경우에만 실행할 수 있습니다 pidof.

pid=$(pidof tail) && ps --no-headers ${pid}

또는 (Zsh의 경우):

pid=$(pidof tail) && ps --no-headers $=pid

(감사해요자일스! ).

답변2

pidofpgrep시스템에서 실행 중인 항목을 확인하는 데 유용한 명령이지만 일부 운영 체제에서는 두 명령 모두 사용할 수 없습니다 . 이는 대부분의 Unix, BSD 및 Linux 버전에서 작동합니다.

ps aux | grep tail | grep -v grep

그러면 grep 명령 자체가 제거됩니다.

답변3

를 사용하면 pgrepPID와 명령을 나열할 수 있으며 빈 입력에서는 프로세스가 일치하지 않습니다.

pgrep -a tail

표시되는 필드를 더 자세히 제어하려면 pidof프로세스 목록이 비어 있지 않은 경우에만 또는 를 호출하세요 pgrep. ps임시 변수를 사용할 수 있습니다.

pids=$(pgrep -d, tail)
[ -z "$pids" ] || ps --no-headers -p "$pids"

또는 ifne에서더 많은 유틸리티:

pgrep tail | ifne xargs ps --no-headers

관련 정보