Chiedendolo dopo una discussione prolungata con un collega, vorrei davvero un chiarimento qui.
Avvio di un processo in background, aggiungendo " &
" alla riga di comando o interrompendolo con CTRL-Z
e riprendendolo in background con " bg
". Quindi esco.
Che succede?
Eravamo abbastanza sicuri che avrebbe dovuto essere ucciso da un SIGHUP, ma ciò non è accaduto; dopo aver effettuato nuovamente l'accesso, il processo è stato felicemente in esecuzione e ha pstree
dimostrato che è stato "adottato" da init
.
È questo il comportamento previsto?
Ma allora, se lo è, qual è lo nohup
scopo del comando? Sembra che il processo non verrà comunque ucciso, con o senza di esso ...
Modifica 1
Alcuni dettagli in più:
- Il comando è stato avviato da una sessione SSH, non dalla console fisica.
- Il comando è stato lanciato senza
nohup
e / o&
; è stato quindi sospeso conCTRL-Z
e ripreso in background conbg
. - La sessione SSH non è caduta. Si è verificato un logout effettivo (
exit
comando " "). - Il processo è stato un'operazione di
scp
copia dei file. - Al login di nuovo, ha
pstree
mostrato il processo in esecuzione e di essere figlio diinit
.
Modifica 2
Per affermare la domanda in modo più chiaro: mettere un processo in background (usando &
o bg
) lo farà ignorare SIGHUP
, proprio come fa il nohup
comando?
Modifica 3
Ho provato a inviare manualmente un SIGHUP
a scp
: è uscito, quindi sicuramente non ignora il segnale.
Quindi ho provato di nuovo a lanciarlo, mettendolo in background e disconnettendomi: è stato "adottato" da init
e continuato a funzionare, e l'ho trovato lì quando ho riconnesso.
Sono abbastanza perplesso ora. Sembra che non sia SIGHUP
stato inviato affatto dopo la disconnessione.
1>/dev/null 2>&1
per bash, ecc.?