Я ssh
подошел к своему серверу и побежал, wget -r -np zzz.aaa/bbb/ccc
и он начал работать. Затем мое интернет-соединение (в моем доме) было прервано, и я забеспокоился, предполагая, что 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
?
logind
системе поведение по умолчаниюlogind
- уничтожение (SIGTERM) всех процессов, принадлежащих пользователю, когда пользователь выходит из системы. Так что это поведение зависит от системы.KillUserProcesses=no
.Ответы:
Программы (и скрипты) могут игнорировать большинство сигналов, кроме нескольких похожих
KILL
.HUP
Сигнал можно поймать и игнорировать , если программное обеспечение так хочет.Это из
src/main.c
изwget
источников (версия 1.19.2):Чуть дальше установлен обработчик сигнала:
Так что , похоже
wget
, не обращая внимания наHUP
сигнал, но он решает продолжить обработку с выходом перенаправлен в файл журнала.Запрошено в комментариях: значение
?
вTTY
столбце выходных данныхps
в вопросе заключается в том, чтоwget
процесс больше не связан с терминалом / TTY. TTY ушел, когда соединение SSH оборвалось.источник
Просто :
wget
не прерыватьSIGHUP
. Это происходитSIGTERM
иSIGINT
, тем не менее.Там нет ничего на
man
странице , но если вы послалиSIGHUP
кwget
процессу , то вы получите в терминале:источник
kill -HUP pid
команду, чтобы показать, как можно отправитьSIGHUP
процессу.