SSH 연결이 끊어진 후에도 내 wget이 죽지 않는 이유는 무엇입니까?

SSH 연결이 끊어진 후에도 내 wget이 죽지 않는 이유는 무엇입니까?

ssh내 서버를 편집하고 실행하자 작동 wget -r -np zzz.aaa/bbb/ccc이 시작되었습니다. 그런 다음 집에서 인터넷 연결이 중단되었고 연결이 끊겨서 ped 가 발생하여 터미널이 정지 wget되었다고 가정하여 걱정했습니다 . 그런데 내 서버에 로그인하여 서버가 여전히 실행 중임을 깨닫고 출력을 넣고 콘텐츠를 다운로드했습니다. 누군가 여기서 무슨 일이 일어나고 있는지 나에게 설명해 줄 수 있습니까?hupsshsshwget.log

이것이 ps나에게 주는 것입니다:

PID   %CPU %MEM    VSZ    RSS TTY     STAT START   TIME COMMAND
32283  0.6 29.4 179824 147088 ?       S    14:00   1:53 wget -r -np zzz.aaa/bbb/ccc

?열의 (물음표)는 무엇을 의미합니까 tty?

답변1

프로그램(및 스크립트)은 일부 신호를 제외한 대부분의 신호를 무시하도록 선택할 수 있습니다 KILL. HUP소프트웨어는 원하는 경우 신호를 포착하고 무시할 수 있습니다.

이는 src/main.c소스 wget(버전 1.19.2)에서 가져온 것입니다.

/* Hangup signal handler.  When wget receives SIGHUP or SIGUSR1, it
   will proceed operation as usual, trying to write into a log file.
   If that is impossible, the output will be turned off.  */

조금 더 아래로 내려가면 신호 처리기가 설치됩니다.

  /* Setup the signal handler to redirect output when hangup is
     received.  */
  if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
    signal(SIGHUP, redirect_output_signal);

그래서 wget안 닮은거같아소홀히 하다signal HUP이지만 처리를 계속하도록 선택하고 출력을 로그 파일로 리디렉션합니다.


의견에서 요청됨: ?질문의 출력 열에 있는 의미는 프로세스가 더 이상 터미널/TTY와 연결되지 않는다는 것입니다. SSH 연결이 끊어지면 TTY가 사라집니다.TTYpswget

답변2

단순한: wget중단되지 않습니다 SIGHUP. 그러나 이 기능은 SIGTERM및 에서 작동합니다 SIGINT.

페이지에는 아무것도 없지만 프로세스 로 man보내면 터미널에 다음이 표시됩니다.SIGHUPwget

# in a different terminal while wget is running (with PID 12345)
kill -HUP 12345
# in the wget terminal
SIGHUP received.
Redirecting output to 'wget-log'.

관련 정보