`kill -p`는 실제로 작동합니까? 개요

이 매뉴얼 페이지에서 kill다음과 같이 작성되었습니다.

개요

  kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
  kill -l [ signal ]

  -p     Specify  that kill should only print the process id (pid) of the
          named processes, and not send any signals.

그러나 RH와 RHEL에서 여러 번 시도했지만 kill -s SIGHUP |-p 123결코 작동하지 않는 것과 같은 명령 이 발생하고 항상 오류 가보고됩니다

bash : -p : 명령을 찾을 수 없습니다

내가 실수를 했습니까?



답변

kill [ -s signal | -p ]

매뉴얼 페이지의이 구문은 다음을 의미합니다.

당신은 사용할 수 있습니다 kill -s signal 또는 당신은 사용할 수 kill -p있지만 모두 사용할 수 없습니다 -s-p같은 시간에.

파이프 ( |)는 (독점) 또는 설명서를 나타내며 명령의 일부가 아닙니다.

입력 할 때

foo | bar

쉘, 그것은 시작하려고 시도합니다 foobar의 출력을, 파이프 foo받는 bar프로그램. (즉, 그 일을 쉘, 아니다 foo(또는 bar은)는 |귀하의 경우에는 어느 프로세스에 전달되지 않습니다.), 두 번째 부분입니다 -p 123, 쉘 시도 있도록라는 실행 파일을 찾아 -p그 오류 메시지와 함께 실패합니다.


답변

Bash kill에 명령과 함께 내장 명령이 있다는 사실에 넘어 졌다고 생각합니다 kill.

$ type -a kill
kill is a shell builtin
kill is /usr/bin/kill
kill is /bin/kill

읽고있는 맨 페이지는 kill아래 에있는 명령을 참조하고 있습니다 /bin. 전체 경로를 사용하여 소환하십시오.

$ /bin/kill -p sleep
16486

우연히에 /usr/bin/kill대한 링크 /bin/kill입니다.

$ ls -l /usr/bin/kill
lrwxrwxrwx 1 root root 14 Feb  9  2011 /usr/bin/kill -> ../../bin/kill

$ readlink -m /usr/bin/kill
/bin/kill