kill -HUP이 수신 될 때 프로그램 동작?


32

킬 신호 HUP를받을 때 프로그램이 수행 할 작업을 찾는 방법이 있습니까?
단순히 c : D 명령을 실행하지 않고

예를 들어,
killall -HUP pppdpppd를 다시 시작
killall -HUP firefox하면 Firefox가 종료됩니다.

답변:


47

설명서를 읽으십시오. 그게 유일한 방법입니다. Keith가 이미 쓴 것처럼 SIGHUP 의 원래 의미 는 사용자가 프로그램에 대한 액세스 권한을 상실했기 때문에 대화식 프로그램이 죽어야한다는 것입니다. 사용자와 직접 상호 작용하지 않는 프로그램 인 데몬 은이 동작이 필요하지 않으며 SIGHUP을 수신 할 때 구성 파일을 다시로드하는 경우가 많습니다. 그러나 이것들은 단지 관습입니다.

소스가 있으면 읽을 수도 있습니다. 또는 바이너리 만있는 경우이를 분해하고에 sigaction대한 신호 처리기를 설정 한 호출을 SIGHUP찾은 다음 해당 신호 처리기가 수행중인 작업을 파악할 수 있습니다. SIGHUP을 해당 프로그램으로 보내지 않도록 준비하는 것이 더 쉬울 것입니다.

특정 시점에서 특정 프로세스는 특정 신호와 관련하여 세 가지 상태 중 하나에 있습니다. 무시하거나 기본 작업을 수행하거나 사용자 지정 처리기를 실행합니다. 많은 유니스를 사용하면 ps예를 들어 ps sLinux 등 을 사용하여 프로세스의 신호 마스크를 볼 수 있습니다 . 프로세스가 신호를 무시하고 있는지 또는 SIGHUP에서 즉시 죽을지를 알 수 있지만 프로세스가 핸들러를 설정 한 경우 핸들러가 무엇을하는지 알 수 없습니다.


1
SIGHUP은 전화 접속 모뎀 시절로 거슬러 올라갑니다. 모뎀 연결이 끊 겼음을 나타냅니다. 그것은 여전히 ​​끊어진 연결에 적용되지만 요즘 끊어지지 않아 끊어지지 않습니다.
P

@bill True이지만 SSH 세션은 클라이언트 연결이 끊어지면 자식 프로세스입니다.
Keith

@ Keith : 그것이 끊어진 연결에 적용되며 더 이상 끊어지지 않음을 나타냅니다. 이 시점에서 SIGDCN과 같은 연결 해제와 관련된 이름으로 이름을 변경하는 것은 혼란 스러울 것입니다.
BillThor

18

기본 조치는 SIGHUP에서 프로세스를 종료하는 것입니다. 자세한 내용 man 7 signal은 참조하십시오. 그러나 프로그램은이를 포착하여 원하는대로 수행 할 수 있습니다. 데몬 프로세스는 종료되지 않아야하므로 일반적으로 자체 재 초기화 (ppppd와 같이)와 같은 다른 목적으로 SIGHUP을 사용합니다. Firefox는 기본 동작을 유지합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.