I ssh
ed para o meu servidor e correu wget -r -np zzz.aaa/bbb/ccc
e começou a trabalhar. Em seguida, minha conexão com a Internet (em minha casa) foi interrompida e fiquei preocupado ao supor que ela wget
havia sido interrompida hup
porque a ssh
conexão foi perdida e, portanto, o terminal morreu. Mas então eu ssh
editei para o meu servidor e percebi que ele ainda estava em execução, colocando a saída e fazendo o wget.log
download de coisas. Alguém por favor pode me explicar o que pode ter acontecido aqui?
Isto é o que ps
me dá:
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
O que isso significa (ponto de interrogação) ?
na coluna de tty
?
logind
, o comportamento padrãologind
é matar (SIGTERM) todos os processos pertencentes a um usuário quando o usuário efetua logout. Portanto, esse comportamento é específico do sistema.KillUserProcesses=no
.Respostas:
Programas (e scripts) podem optar por ignorar a maioria dos sinais, exceto alguns semelhantes
KILL
. OHUP
sinal pode ser capturado e ignorado se o software desejar.Isto é
src/main.c
daswget
fontes (versão 1.19.2):Um pouco mais abaixo, o manipulador de sinal está instalado:
Portanto, parece que
wget
não está ignorando oHUP
sinal, mas escolhe continuar processando com sua saída redirecionada para o arquivo de log.Solicitado nos comentários: O significado de
?
naTTY
coluna da saída daps
pergunta é que owget
processo não está mais associado a um terminal / TTY. O TTY desapareceu quando a conexão SSH caiu.fonte
Simples :
wget
não interrompeSIGHUP
. Isso aconteceSIGTERM
eSIGINT
, no entanto.Não há nada na
man
página, mas se você enviouSIGHUP
para umwget
processo, obtém isso no terminal:fonte
kill -HUP pid
comando para mostrar como alguém pode enviarSIGHUP
para um processo.