이 질문에 도달했습니다 꽤 많은 ( 정말 많은 ),하지만 난 대답은 일반적으로 불완전한 찾는거야. 일반적인 질문은 "ssh를 종료 / 종료 할 때 왜 내 작업이 종료되지 않습니까?"이며 여기에 내가 찾은 내용이 있습니다. 첫 번째 질문은 다음과 같은 정보는 얼마나 일반적입니까? 다음은 현대 데비안 리눅스에서는 사실 인 것 같지만 약간의 정보가 빠져 있습니다. 그리고 다른 사람들이 알아야 할 것은 무엇입니까?
ssh 연결이 닫히면 여부 SSH 연결을 통해 연 쉘의 백그라운드로 모든 자식 프로세스가 SIGHUP으로 사망하는 경우에만
huponexit
실행 옵션이 설정되어shopt huponexit
이것이 사실인지 확인 할 수 있습니다.경우
huponexit
사실, 당신은 사용할 수 있습니다nohup
또는disown
당신이 종료 할 때이 살해되지 않도록 쉘에서 프로세스를 떼어 놓다. 또는를 사용하여 실행하십시오screen
.요즘 최소한 일부 리눅스에서 기본값 인
huponexit
false 인 경우 정상적인 로그 아웃시 백그라운드 작업이 종료 되지 않습니다 .그러나 경우에도
huponexit
거짓, 다음 ssh 연결이됩니다 경우 사망 또는 (정상 로그 아웃과는 다른) 방울, 다음 백그라운드로 프로세스는 여전히 죽을 것입니다. 이것은 (2)에 의해disown
또는nohup
(2)에서 와 같이 피할 수 있습니다 .(a) 부모 프로세스가 터미널 인 프로세스와 (b) stdin, stdout 또는 stderr 이 터미널에 연결된 프로세스 사이에는 약간의 차이가 있습니다 . 나는 (a) 아닌 (b) 또는 그 반대의 프로세스에 어떤 일이 일어나는지 모른다.
마지막 질문 : 어떻게 행동을 피할 수 있습니까 (3)? 다시 말해, 데비안 백그라운드 프로세스는 기본적으로 로그 아웃 후 ssh 연결이 종료 된 후가 아니라 자체적으로 실행됩니다. 연결이 정상적으로 닫혔는지 또는 종료되었는지에 관계없이 프로세스에서 동일한 일이 발생하고 싶습니다. 아니면 이것이 나쁜 생각입니까?
편집 : 두 가지 경우 모두 작동하는 작업을 유지하는 또 다른 중요한 방법은 작동합니까 (?) screen을 통해 실행하는 것 입니다. 그러나 문제는 사물이 언제 죽이고 언제 죽지 않는지를 이해하는 것에 관한 것입니다. 때때로 사람들은 예를 들어 로그 아웃 할 때 일자리가 죽기를 원합니다.
이상의 스레드 - 신호 (SIGHUP), 작업에 대한 설명과 제어 터미널 - /server/117152/do-background-processes-get-a-sighup-when-logging-off이 - 계속 SSH 백그라운드 작업 / 작업 SSH를 닫을 때 - 윌 백그라운드에서 작업 넣어은 SSH 세션 후 실행 계속 닫혀? - 방지 SSH 클라이언트를 종료 후 중단되는 것을 이미 실행중인 백그라운드 프로세스 - 어떻게하면 내가 차단 한 후 계속 실행하도록 SSH를 통해 프로세스를 시작할 수 있습니다? - OS X에서 원격 작업을 계속 실행 할 수 없습니다 - 닫기 SSH 연결을