나는 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가 사라졌습니다.TTY
ps
wget
답변
단순 : wget
중단하지 않습니다 SIGHUP
. 그것은에서 수행 SIGTERM
하고 SIGINT
있지만,.
거기에 아무것도 man
페이지 그러나 당신이 보낸 경우 SIGHUP
A와 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'.