process grep 명령은 ps -ef | 아래에 표시되지 않습니다.

process grep 명령은 ps -ef | 아래에 표시되지 않습니다.

쉘에서 명령을 실행했는데 cat >my1.fifo & PID를 찾으려고 할 때 아래에 표시되지 않습니다.

ps -ef | grep my1.fifo 

답변1

리디렉션은 실행 전에 쉘에 의해 수행됩니다 cat. 이 같은:

(
    exec >my1.fifo
    exec cat
) &

보시다시피 cat명령줄 인수 없이 실행되지만 표준 출력은 열린 파일에 연결됩니다. 무엇을 쓰고 있는지 거의 알지 못합니다(물론 파일 이름도 모릅니다).

답변2

cat다음과 같이 실행하면 pid를 찾을 수 없습니다.

cat >my1.fifo &

이유는 간단합니다. cat일단 표준 입력이 닫히면 표준 입력 읽기가 완료되어야 합니다. 명령을 백그라운드로 푸시하면( &마지막으로) 시작 프로세스의 표준 입력이 닫힙니다.

즉, 명령이 cat >my1.fifo &백그라운드로 이동하여 즉시 완료됩니다. 따라서 ps후속 조치가 없습니다. 찾을 것이 없습니다.

프로세스의 pid가 무엇인지 알고 싶다면 다음을 수행하십시오. 그러면 echo $!백그라운드로 전송된 마지막 프로세스의 pid가 인쇄됩니다. 물론 프로세스 목록에서 더 이상 이 pid를 찾을 수 없습니다(완료되었습니다).

그러나 예를 들어 다른 것을 사용한다면 프로세스 목록에서 해당 항목을 찾아 해당 pid를 표시 tail -f somefile >my1.fifo &할 수 있습니다 .tailecho $!

관련 정보