나는 명령 사용법에 관한 많은 튜토리얼을 읽었습니다 kill
.최대3가지 방법
kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>
스크립팅 목적과 Macos 이식성을 위해 코드 번호는 사용되지 않습니다. kill -l
Macos는 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로 보내시겠습니까? (후자인데 의아해하시는 분들도 계실 겁니다.) 접두사 역시 모든 곳에서 인식되지 않으므로 생략하겠습니다.SIGTERM
SIGKILL
SIG
POSIX는 일부 디지털 신호 값을 지정합니다.
숫자 | 신호 |
---|---|
0 | "빈" 신호 |
1 | HUP |
2 | INT |
삼 | QUIT |
6 | ABRT |
9 | KILL |
14 | ALRM |
15 | TERM |