ssh
내 서버를 편집하고 실행하자 작동 wget -r -np zzz.aaa/bbb/ccc
이 시작되었습니다. 그런 다음 집에서 인터넷 연결이 중단되었고 연결이 끊겨서 ped 가 발생하여 터미널이 정지 wget
되었다고 가정하여 걱정했습니다 . 그런데 내 서버에 로그인하여 서버가 여전히 실행 중임을 깨닫고 출력을 넣고 콘텐츠를 다운로드했습니다. 누군가 여기서 무슨 일이 일어나고 있는지 나에게 설명해 줄 수 있습니까?hup
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
?
답변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가 사라집니다.TTY
ps
wget
답변2
단순한: wget
중단되지 않습니다 SIGHUP
. 그러나 이 기능은 SIGTERM
및 에서 작동합니다 SIGINT
.
페이지에는 아무것도 없지만 프로세스 로 man
보내면 터미널에 다음이 표시됩니다.SIGHUP
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'.