GNU/Linux >> Linux Esercitazione >  >> Linux

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

Diciamo che stai accedendo a un altro sistema in remoto tramite SSH. Si desidera eseguire un comando che richiede molto tempo per terminare e quindi uscire dalla sessione SSH ma lasciare il comando in esecuzione anche se non si è più connessi al sistema remoto. Come si fa a farlo? Come forse saprai, una volta usciti da SSH, tutti i lavori in esecuzione verranno terminati. Inizierai il lavoro dall'inizio? Non devi. Qui ho fornito 4 metodi per mantenere un comando in esecuzione dopo che ti sei disconnesso dalla sessione ssh. Continua a leggere.

Mantieni un comando in esecuzione dopo esserti disconnesso dalla sessione SSH in Linux

Potrebbero esserci molti modi per farlo. Tuttavia, trovo che i seguenti metodi siano facili e diretti.

Metodo 1:utilizzo dello schermo

Lo schermo tool, un gestore di finestre a schermo intero con emulazione terminale VT100/ANSI, consente di scollegarsi in sicurezza dalla sessione SSH senza uscire dal lavoro remoto. Sarà utile per coloro che lavorano con più server remoti. Il comando Screen è preinstallato nella maggior parte dei sistemi operativi Linux. Per ogni evenienza, se non è installato, puoi installarlo utilizzando il gestore di pacchetti della tua distribuzione.

Su Arch Linux e derivati:

$ sudo pacman -S screen

Su RHEL, CentOS e altri sistemi basati su RPM:

$ sudo yum install screen

Su Debian, Ubuntu e altri sistemi basati su DEB:

$ sudo apt-get install screen

Su SUSE/OpenSUSE:

$ sudo zypper install screen

Dopo aver installato screen sui tuoi sistemi remoti, avvia la sessione dello schermo:

$ screen

La sessione dello schermo è stata avviata ora. Ora esegui qualsiasi lavoro o attività che desideri eseguire sul tuo sistema remoto.

Sto per scaricare l'immagine di Ubuntu 16.04:

$ wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso

Ubuntu 16.04 ISO ha una dimensione di circa 1,5 GB. Ci vorrà quasi un'ora per scaricare con una normale connessione a banda larga. Non devi aspettare così a lungo. Lascia semplicemente il processo di download in esecuzione sul sistema remoto ed esci dalla sessione dello schermo premendo "Ctrl-A" seguito da “d“ . Vedrai un output simile a quello di seguito.

[detached from 1365.pts-0.server]

Dopo esserti disconnesso dalla sessione dello schermo, puoi disconnetterti dal sistema remoto. Il lavoro remoto continuerà a essere eseguito nel server.

Puoi ricollegarti alla sessione dello schermo in qualsiasi momento usando il comando:

$ screen -r

Vedrai che il processo è ancora in esecuzione lì.

Se si dispone di più di una sessione dello schermo, è necessario digitare l'ID della sessione dello schermo per ricollegarlo. Per visualizzare il numero di sessioni dello schermo, esegui:

$ screen -ls

L'output di esempio sarebbe:

There are screens on:There are screens on: 
     1382.pts-0.server (Saturday 15 July 2017 04:39:51  IST) (Detached) 
     1365.pts-0.server (Saturday 15 July 2017 04:38:44  IST) (Detached)
2 Sockets in /var/run/screen/S-sk.

Ora, ricollegati alla sessione dello schermo desiderata, ad esempio 1382 , esegui:

$ screen -r 1382

Per maggiori dettagli, fare riferimento alle pagine man.

$ man screen
Download consigliato - Cheat sheet gratuito:"Cheat sheet di Linux Command Line"

Metodo 2 - Utilizzo di tmux

Il tmux è un multiplexer di terminali che consente di creare, accedere e controllare un certo numero di terminali da un'unica schermata. Una sessione tmux può essere scollegata da uno schermo e continuare a essere eseguita in background, quindi ricollegata in seguito. Come lo strumento Screen, puoi anche usare tmux per staccarti da una sessione SSH senza uscire dai lavori remoti. Il comando Tmux viene preinstallato sulla maggior parte dei sistemi operativi Linux. Per ogni evenienza, se non è installato, puoi installarlo utilizzando il gestore di pacchetti della tua distribuzione.

Su Arch Linux e derivati:

$ sudo pacman -S tmux

Su RHEL, CentOS e altri sistemi basati su RPM:

$ sudo yum install tmux

Su Debian, Ubuntu e altri sistemi basati su DEB:

$ sudo apt-get install tmux

Su SUSE/OpenSUSE:

$ sudo zypper install tmux

Dopo aver installato tmux, avvia la sessione di tmux usando il comando:

$ tmux

Ora, inizia il tuo compito o lavoro. Quindi staccati in sicurezza dalla sessione di tmux senza uscire dai lavori remoti premendo "CTRL-b" seguito da "d" . Questo staccherà la tua sessione tmux ma lascerà che stai facendo in quella sessione in esecuzione in background. Ciò significa che tutti i telecomandi funzioneranno anche se sei disconnesso dalla sessione.

Per elencare le sessioni disponibili, esegui:

$ tmux ls
0: 1 windows (created Sat Jul 15 16:51:35 2017) [134x33]
1: 1 windows (created Sat Jul 15 16:53:58 2017) [134x33]

Puoi ricollegarti alla sessione di tmux utilizzando il rispettivo ID di sessione come mostrato di seguito:

$ tmux attach -t 0

Per maggiori dettagli, fare riferimento alle pagine man.

$ man tmux

Metodo 3:utilizzo di Reptyr

Cosa succede se ti sei dimenticato di avviare i comandi in screen/tmux in primo luogo? Nessun problema. Ecco dove Reptyr viene in aiuto. Reptyr ti aiuta a spostare i processi in esecuzione tra i pty. Abbiamo già pubblicato una guida dettagliata su Reptyr. Dai un'occhiata al seguente link.

  • Reptyr:sposta un processo in esecuzione da un terminale all'altro senza chiuderlo

Metodo 4:utilizzo di nohup

niente , sta per No h angsu , è un'altra utility della riga di comando per aiutarti a eseguire i comandi Linux anche dopo esserti disconnesso dalle sessioni SSH. Poiché fa parte di GNU coreutils, non è necessario installarlo. Viene preinstallato in tutte le distribuzioni Linux.

L'utilizzo è assolutamente facile. Dopo aver effettuato l'accesso al tuo sistema remoto, tutto ciò che devi fare è:

$ nohup <command> &

Sì, è così semplice.

Esempio:

$ nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Ora puoi uscire dalla sessione SSH. Il lavoro remoto continuerà a essere eseguito.

Accedi al sistema remoto ed esegui quanto segue per visualizzare l'elenco dei lavori in esecuzione.

$ jobs -l
[1]+ 1421 Running nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Per impostazione predefinita, gli output verranno aggiunti a 'nohup.out'. Ovviamente puoi modificare il file di output.

Ecco un altro esempio.

$ nohup find -size +10M > log.txt &

Il comando precedente troverà i file con dimensioni maggiori di 10 M e scrive l'output nel file log.txt.

Per maggiori dettagli, fare riferimento alle pagine man.

$ man nohup

E per ora è tutto gente. Hai qualcosa in mente? Sentiti libero di farmelo sapere nella sezione commenti qui sotto. Altre cose buone in arrivo. Continua a visitare!

Saluti!


Linux
  1. 5 modi per mantenere in esecuzione sessioni e processi SSH remoti dopo la disconnessione

  2. Ssh:mantieni i processi in esecuzione dopo la disconnessione della sessione Ssh?

  3. Ssh:come avviare un processo durante una sessione Ssh dopo che la sessione è terminata??

  4. Esempi di comandi Nohup:esegue un comando che continua a essere eseguito dopo la disconnessione

  5. SSH - Come includere il comando -t nel file ~/.ssh/config

Comando dello schermo Linux:mantieni i processi in esecuzione nonostante una connessione interrotta

4 modi per disconnettersi da una sessione desktop di Ubuntu

Come mantenere le sessioni SSH remote in esecuzione dopo la disconnessione

Come disconnettere un utente da SSH in Linux

Come installare e utilizzare il comando dello schermo Ubuntu 20.04

Come posso aumentare il buffer di scorrimento all'indietro in una sessione dello schermo in esecuzione?