Mantieni un programma in esecuzione dopo aver chiuso una console, dopo che il programma è stato avviato [duplicato]


8

Possibile duplicato:
come posso staccare completamente un processo dal Terminale?

Ho un programma in esecuzione su una console Unix su un computer Unix remoto. Io (stupidamente) non l'ho eseguito usando nohup &, e ora ho bisogno di chiudere la console locale.

C'è un modo per farlo funzionare in remoto dopo aver chiuso la console locale?

Risposte:


12

Se la tua shell è bash, puoi usarla disown. Ctrl-Z per sospendere il processo, quindi disown -hper non ricevere SIGHUP.


Soluzione brillante. Ha funzionato :-)
Lanciato il

3
Solo curioso: poiché il processo è sospeso, questo non dovrebbe essere seguito bgo qualcosa del genere? O lo disown -hriprende pure?
Arjan,

Funzionerà se il processo è in esecuzione all'interno screen? Vorrei invece continuare a eseguire il processo nel mio normale xterm.
tjt263

IIRC una volta rinnegato non sarà collegato a nessun terminale
Douglas Leeder

5

Su Solaris 9, è possibile utilizzare nohup -p <pid>per non eseguire un processo in esecuzione. Ecco una spiegazione interessante dell'implementazione. Non so se questo è stato implementato su altri Unices.


nohup: opzione non valida - p Non funziona su gentoo, ubuntu o fedora (gli unix su cui ho provato questo), ma grazie comunque :-) Buono a sapersi, Solaris ce l'ha.
Lanciato il

2

Ctrl-Z per sospendere il processo, quindi bgfare in modo che il programma vada in background e continui a funzionare fino al completamento.


Il problema è che se chiudo la console, anche i processi in background si fermeranno. Ho bisogno di qualcosa che distacchi il processo dalla console, come fa nohup, ma dopo che il processo è iniziato :-)
Lanciato il

E non credo nemmeno che 'nohup bg &' funzionerà :-(
Lanciato il

1
L'ho provato su uno dei miei sistemi e ha funzionato bene quando sono uscito (usato solo du / >> tempcome programma di test) ma capisco di essere titubante se non vuoi perdere il programma o i suoi risultati.
Matrix Mole,

2

Se puoi permetterti di fermare il programma e riavviarlo prima di disconnetterti, quindi fermalo e riavvialo attraverso lo schermo , che è un must per chiunque usi connessioni remote per unix host.


1
Penso che il problema principale qui sia proprio che vorrebbe non interrompere il programma.
Gnoupi,

1
Sì, vorrei che il programma non venisse interrotto :-)
Lanciato il

Consiglio vivamente lo schermo per l'uso futuro di una situazione del genere (ho quasi sempre una sessione di schermo in esecuzione su qualsiasi sistema in cui ho una sequenza).
Matrix Mole,

1
Diversi anni dopo, mi sono reso conto che ero un pazzo a non usare lo schermo :-)
Lanciato il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.