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
似ていないと思います。無視するsignalHUP
ですが、処理を続行することを選択し、出力をログファイルにリダイレクトします。
コメントから要求された:?
質問の出力列の意味は、プロセスが端末/ 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'.