Ssh
為什麼ssh連接失去後我的wget沒有死?
我
ssh
編輯到我的伺服器並執行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