나는 ssh내 서버에 ed와 실행 wget -r -np zzz.aaa/bbb/ccc하고 작동하기 시작했다. 그런 다음 (내 집에서) 내 인터넷 연결이 중단했고 나는이 가정 걱정있어 wget되었습니다 hup때문에 PED ssh연결이 끊어졌습니다 때문에 터미널이 사망했다. 그러나 나는 ssh서버에 여전히 실행 중이며 출력을 넣고 wget.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?
답변
프로그램 (및 스크립트)은를 제외하고 대부분의 신호를 무시하도록 선택할 수 있습니다 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되지 무시HUP 신호를하지만 로그 파일로 재 출력과 처리를 계속하도록 선택합니다.
의견으로 요청 : 질문 의 출력 열 ?에서 의 의미 는 프로세스가 더 이상 터미널 / TTY와 관련이 없다는 것입니다. SSH 연결이 끊어지면 TTY가 사라졌습니다.TTYpswget
답변
단순 : wget중단하지 않습니다 SIGHUP. 그것은에서 수행 SIGTERM하고 SIGINT있지만,.
거기에 아무것도 man페이지 그러나 당신이 보낸 경우 SIGHUPA와 wget공정 당신은 터미널이 얻을 :
# 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'.
