Ssh

為什麼ssh連接失去後我的wget沒有死?

  • January 21, 2018

ssh編輯到我的伺服器並執行wget -r -np zzz.aaa/bbb/ccc它並開始工作。然後我的網際網路連接(在我​​家)被中斷了,我很擔心假設它wget已經被hupped 因為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

引用自:https://unix.stackexchange.com/questions/418509