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


11

이 매뉴얼 페이지에서 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 : 명령을 찾을 수 없습니다

내가 실수를 했습니까?


11
명령에 입력 할 때, 당신은 삭제합니다 [ ]브래킷을 교체 signalSIGHUPpid함께 123? 왜 그런 짓을 한거야? 당신은 그 기호를 알고 있기 때문에 [, signal그리고 pid메타 구문, 오히려 문자보다. 구문이 무엇인지 나타냅니다. 음,이 |상징은 같은 것입니다 : 또 다른 메타 구문론 구문 표시기. [a | b]수단 : 옵션 구문 항목이 될 수 있습니다 a또는 b(하지만 하나 개의 항목을해야합니다 둘 때문이다).
Kaz

당신의 지시에 감사드립니다. 그건 그렇고, 어떻게 발음 [a | b]합니까?
user43312

흠. "선택적 A 또는 B".
Kaz

답변:


51
kill [ -s signal | -p ]

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

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

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

입력 할 때

foo | bar

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


감사합니다, @Mat. 그래서 나는 같은 명령을 내린다 kill -p 123. 라고 말합니다 bash: kill: p: invalid signal specification. 그리고 kill -p SIGINT 123같은 것을 말합니다. 구문에 따라 신호를 넣을 장소가 없다고 생각합니다. -p옵션 사용에 대한 데모 만 제공해도 됩니까?
user43312

2
@ user43312 : 이에 대한 slm의 답변 참조
Mat

32

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

이것은 실제로 작동합니다. 그리고 모든 데모에 감사드립니다.
user43312

@ user43312-NP. 예제는 맨 페이지 8-)보다 항상 따르기가 더 쉽습니다.
slm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.