PDA

View Full Version : processo che non termina alla disconnessione


wiso
07-09-2006, 19:33
Se eseguo un processo su una macchina remota quando mi disconnetto il processo muore. Come faccio a far si che continui anche dopo la mia disconnessione?

Scoperchiatore
07-09-2006, 19:53
Se eseguo un processo su una macchina remota quando mi disconnetto il processo muore. Come faccio a far si che continui anche dopo la mia disconnessione?

basta lanciarlo in background. Quando ti disconnetti lo eredita init, e non muore finchè non termina spontaneamente.

per lanciare in background usa "&" alla fine del comando

Se faccio

cat a_big_file | awk '{print $3 $2 $1}' | sort -un -k 5,5 &

lancio questo comando in background e se mi sconnetto, chiudo la shell, etc..., lui continua a vivere. Ovviametne perdo tutto l'output che però può essere opportunamente direzionato:

cat a_big_file | awk '{print $3 $2 $1}' | sort -un -k 5,5 > risultato.txt 2>errori.txt &

In questo modo il risultato del programma (o eventuali messaggi importanti) vanno sul file "risultato.txt", qualunque cosa stampata sullo standard error viene redirezionata e salvata nel file "errori.txt"

Se devi anche sapere come finirà il programma (se esce con stato d'uscita 0 o altri) forse è utile metterci vicino un time opportunamente settato, ma lì le cose si complicano. Questo ti dovrebbe bastare ;)

wiso
07-09-2006, 20:01
basta lanciarlo in background. Quando ti disconnetti lo eredita init, e non muore finchè non termina spontaneamente.

per lanciare in background usa "&" alla fine del comando

Se faccio

cat a_big_file | awk '{print $3 $2 $1}' | sort -un -k 5,5 &

lancio questo comando in background e se mi sconnetto, chiudo la shell, etc..., lui continua a vivere.

non è vero, i figli del processo shell, muoiono con lui, e poi io non uso la shell in locale, io apro una shell e faccio ssh xxx@xxx.xxx
e poi lavolo li. al momento della disconnessione dal server (per esempio allo spegnimento del mio computer) muoiono tutti i processi sull'account remoto.

r.
07-09-2006, 20:55
prova nohup

wiso
07-09-2006, 21:37
prova nohup

grazie, funziona

Scoperchiatore
07-09-2006, 23:05
non è vero, i figli del processo shell, muoiono con lui, e poi io non uso la shell in locale, io apro una shell e faccio ssh xxx@xxx.xxx
e poi lavolo li. al momento della disconnessione dal server (per esempio allo spegnimento del mio computer) muoiono tutti i processi sull'account remoto.

Suppongo dipenda anche dai settaggi di ssh, dato che io non ho mai avuto bisogno di nohup, ma lancio vari processi in background per ore.

Pardo
08-09-2006, 00:15
Primariamente dipende dal livello di nice del processo.
Nohup credo non faccia altro ke settare il nice a 15 o a 10, c'e` un livello oltre cui i processi non crepano piu` al logout.