"kill" 명령을 통해 신호 이름을 보내는 올바른 방법이나 권장되는 방법은 무엇입니까?

"kill" 명령을 통해 신호 이름을 보내는 올바른 방법이나 권장되는 방법은 무엇입니까?

나는 명령 사용법에 관한 많은 튜토리얼을 읽었습니다 kill.최대3가지 방법

kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>

스크립팅 목적과 Macos 이식성을 위해 코드 번호는 사용되지 않습니다. kill -lMacos는 Linux와 다르기 때문입니다 . 여기에 재생 신호 이름을 입력하세요.

질문

  • 올바른 전송 방법이나 권장되는 전송 방법은 무엇입니까?신호명명령 으로 kill?

내 말은:

  • 특별 이익 단체무엇또는무엇?

왜? 이 두 가지 방법이 존재하는 이유는 딱 하나죠? 한 가지 방법을 다른 방법보다 사용해야 하는 설득력 있는 이유가 있습니까?

환경

이 상황은 Ubuntu 데스크탑/서버 및 Fedora 워크스테이션/서버에 적용됩니다.

답변1

가장 휴대성이 뛰어난 변형은 다음과 같습니다.

kill -s TERM -- …

지정된 양식입니다POSIX에는 확장이 없습니다.: -s뒤에 신호 이름이 옵니다(정의된 경우)존재하다signal.h, 접두사 없음 SIG또는 "빈" 신호의 경우 0(주어진 식별자를 가진 프로세스가 존재하는지 확인하는 데 사용됨).

SIGTERM기본 신호이므로 다음 표준 형식을 사용하여 프로세스 또는 프로세스 그룹으로 보낼 수 있습니다.

kill <pid>
kill -- -<pgid>

일반적으로 Linux에서 대부분의 구현 kill(쉘 내장 기능 포함)은 접두사가 있거나 없는 숫자 또는 이름 신호를 허용합니다 . 주목할만한 예외에는 데비안 기반 배포판 기본 설정 SIG에 포함된 대시 내장이 포함됩니다 .kill/bin/sh힐리번 쉘.

사용하는 도구가 어떤 형식을 지원하든 관계없이 특정 형식을 다른 형식보다 사용해야 하는 "강제" 이유는 없습니다. 저는 개인적으로 숫자 형식이 모호해 보일 수 있으므로 사용을 피하고 싶습니다. 프로세스 그룹 9와 15로 kill -9 -15보내 시겠습니까, 아니면 프로세스 그룹 15로 보내시겠습니까? (후자인데 의아해하시는 분들도 계실 겁니다.) 접두사 역시 모든 곳에서 인식되지 않으므로 생략하겠습니다.SIGTERMSIGKILLSIG

POSIX는 일부 디지털 신호 값을 지정합니다.

숫자 신호
0 "빈" 신호
1 HUP
2 INT
QUIT
6 ABRT
9 KILL
14 ALRM
15 TERM

관련 정보