GNU/Linux >> Linux Esercitazione >  >> Linux

Impedisci che l'attività Linux attualmente in esecuzione venga terminata dopo la disconnessione da SSH

Se la tua attività è già stata avviata, è troppo tardi* prendere in considerazione soluzioni alternative che inseriscano uno strato aggiuntivo tra i tuoi ssh session e la shell che esegue il comando, come screen , tmux , byobu , nohup e simili.

Se il tuo processo supporta l'essere messo in background e in particolare non si blocca quando stdout e stderr non sono scrivibili/chiusi, puoi metterli in background prima di uscire con Controllo Z e bg poi staccalo dalla tua shell con il disown incorporato.

es:

$ ssh localhost
You have new mail.
Last login: Fri Jun  6 11:26:56 2014

$ /bin/sleep 3600    


^Z[1] + Stopped                  /bin/sleep 3600
$ bg
[1] /bin/sleep 3600&
$ jobs
[1] +  Running                 /bin/sleep 3600
$ disown %1
$ exit
Connection to localhost closed.
$ ps -ef|grep sleep
jlliagre 12864     1  0 21:12 ?        00:00:00 /bin/sleep 3600
jlliagre 13056 12477  0 21:13 pts/18   00:00:00 grep sleep
$ 

* Come ha commentato Bob, in realtà ci sono diversi modi hacker per riparare una sessione tty sotto Linux. repty, retty, injcode e neercs. Il più avanzato sembra essere reptyr ma potresti aver bisogno dei privilegi di root per consentire a ptrace di hackerare il tuo processo.


Una soluzione è usare lo schermo GNU. Potresti avviare screen , esegui il comando, quindi scollega con C-a d . Successivamente, per riconnetterti, esegui screen -r e torni alla sessione precedente.

Altri vantaggi di screen sono la gestione delle finestre (quindi puoi passare ad altre shell mentre il tuo comando è in esecuzione, senza bisogno di una nuova connessione SSH) e consente al tuo comando di rimanere in primo piano, sia nella sessione corrente che in una successiva.

Modifica: Come notato nei commenti, funzionerà solo se ti ricordi di avviare screen prima di eseguire il comando. Se il comando è già in esecuzione, avrai bisogno della soluzione di @jlliagre.


Linux
  1. Come trovare connessioni SSH attive su Linux

  2. Comando SCP Linux – Come trasferire file SSH da remoto a locale

  3. Come SSH su Linux da Android

  4. Come impedire l'arresto di un processo in background dopo la chiusura del client SSH in Linux

  5. Come fare in modo che un programma continui a essere eseguito dopo essersi disconnesso da ssh?

Programma hardware dalla riga di comando di Linux

4 modi per mantenere un comando in esecuzione dopo esserti disconnesso dalla sessione SSH

Come rimuovere un comando dalla cronologia in Linux

Come passare la password al comando SSH in Linux

12 cose da fare dopo aver installato un server Linux

Mantenere un processo Linux in esecuzione dopo il logout