Come mantenere il programma in esecuzione dopo la disconnessione SSH? [duplicare]


15

Possibili duplicati:
mantenere un programma in esecuzione dopo aver chiuso una console, dopo l'avvio del programma
Come posso usare ssh per eseguire un comando su una macchina Unix remota e uscire prima che il comando venga completato?

Ciao!

Voglio eseguire il programma dal mio notebook tramite connessione SSH al server remoto. Il problema è che vado a casa con il mio taccuino :)

Come mantenere il programma in esecuzione?

Risposte:


22

'schermo' è molto probabilmente quello che vuoi. Ti consente di disconnetterti e riconnetterti a piacimento. Dopo aver inserito SSH nel server, eseguire screen prima di avviare il programma. Ctrl-a, Ctrl-d ti disconnetterà (il programma continua a prescindere). Al tuo ritorno, "screen -r" ti riconnetterà come se non fossi mai stato via.

Pensalo come VNC o RDP per terminali di testo. Cerca "utilizzo dello schermo" per molti tutorial.

Modificato per aggiungere: In questi giorni consiglierei invece tmux , specialmente se usato insieme allo script tmx . La possibilità di dividere i riquadri (verticalmente e orizzontalmente) e ridimensionarli è un enorme vantaggio sullo schermo.


5
Per inciso, lo schermo continuerà a funzionare se la connessione si interrompe o qualcosa del genere mentre sei ancora collegato ad esso. Alcuni comandi utili: ctrl + a, ctrl + d = stacca dallo schermo, schermo -r = ricollega a uno schermo, schermo -x = collega a uno schermo in modalità condivisa (può essere usato per insegnare ecc., Due utenti possono condividere la stessa schermata), ctrl + a, esc = entra nella modalità di scorrimento (premi q per uscire di nuovo). NOTA: se si avvia una schermata digitando "programma schermata", il programma verrà immediatamente avviato nella schermata, ma se esce si perde il buffer. Digitare solo "schermo" ti darà un terminale persistente.

Chris, anche grazie per una risposta utile.

18

nohup è un comando che eseguirà un altro comando e lo renderà immune al segnale di "blocco".

Lo esegui semplicemente come:

nohup command

ma dovrai anche reindirizzare stdin, stdout e stderr. Vedi la pagina man per maggiori informazioni.

Probabilmente vorrai anche metterlo in background.

Dovrai anche conoscere il killcomando per ucciderlo.


Sì, grazie mille! così facile))

Questo è quello che uso. Molto molto facile. Utilizzare teeper reindirizzare stdin, stdout e stderr.
Ritwik Bose,
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.