쉘이 작업에만 신호를 보낼 수 있고 작업이 아닌 프로세스에는 신호를 보낼 수 없다는 것이 맞습니까?
disown
셸의 작업 목록에서 작업을 이동합니다. 이는 거부된 프로세스가 상위 셸로부터 모든 신호(SIGHUP뿐만 아니라)를 수신하지 않는다는 의미입니까? 여전히 다른 신호를 수신하는 경우 왜 이런 일이 발생합니까?
답변1
자신이 소유한 모든 프로세스에 언제든지 신호를 보낼 수 있습니다. 쉘 자체는 아마도 그렇지 않을 것입니다.
답변2
테스트하기 쉬움:
sleep
SIGUSR1을 받으면 죽습니다:
$ sleep 999 &
[1] 7399
$ kill -USR1 7399
$
[1]+ User defined signal 1 sleep 999
따라서 이를 거부하고 그것이 살아남는지 살펴보겠습니다.
$ sleep 999 &
[1] 7396
$ disown %1
$ jobs
$ ps -fp 7396
UID PID PPID C STIME TTY TIME CMD
schaller 7396 7360 0 19:59 pts/0 00:00:00 sleep 999
$ kill -USR1 7396
$ ps -fp 7396
UID PID PPID C STIME TTY TIME CMD
$