Come mantenere i processi in esecuzione dopo la disconnessione SSH in Linux
Accade spesso che proviamo ad accedere a un’applicazione o a un contenuto, ma ci chiede di riconnetterci o una finestra pop-up indica che la tua sessione è scaduta. In generale, la sessione scade quando il contenuto viene mantenuto inattivo e non viene eseguita alcuna transazione. Spesso viene impostata la variabile “session_time”, che mantiene la connessione attiva per il momento. Ma cosa succede quando la sessione scade, viene inviato un segnale di “REGISTRAZIONE” ai processi in esecuzione in background e ai processi figli del processo principale, che sono costretti a terminare, indipendentemente dal completamento o dal completamento parziale di l’obiettivo. Quindi, come possiamo mantenere il processo in esecuzione anche dopo la disconnessione SSH? In questo articolo, spiegherò come mantenere il processo in esecuzione anche dopo che SSH è stato disconnesso da un terminale Linux (Ubuntu 18.04 e CentOS 7).
1) Comando sullo schermo
L’utility screen fornisce un modo per eseguire un comando su un sistema Linux scollegandolo e ricollegandolo successivamente. La schermata è particolarmente utile se si dispone di un processo che richiede molto tempo che si desidera continuare a eseguire anche dopo essersi disconnessi e si ha ancora la possibilità di ricollegarlo in un secondo momento e da una posizione diversa.
Utilizzando una singola sessione Screen
SUGGERIMENTO: qui stiamo usando il comando “top”, puoi eseguire il comando nella sessione dello schermo. Premi “ctrl+a” e “d” immediatamente per STACCARE dalla sessione dello schermo; Continuerà a funzionare in background.
Per accedere alla sessione dello schermo separato
$ screen -r
Mentre sei sullo schermo; usa “exit” per uscire completamente dalla sessione dello schermo.
$ exit
[screen is terminating]
Sei nella tua shell bash genitore; Controlla con “screen -r” se c’è qualche sessione dello schermo
$ screen -r
Non c’è nessuna schermata da riprodurre.
Aggiungi più schermate
Aggiungi più sessioni dello schermo e passa semplicemente da una all’altra. Abbiamo visto come utilizzare la sessione a schermo singolo sopra. Proviamo di più. Aggiungi la prima schermata:
$ screen
(run 'top' from screen session; And "ctrl+a" + "d")
$ top
[detached from 15603.pts-1.centos7]
Ora, aggiungi la seconda schermata:
$ screen
Esegui qualsiasi comando da questa nuova sessione dello schermo come desideri.Proviamo “df” per controllare i dischi montati. (Esegui “df -hT” dalla sessione dello schermo; e “ctrl+a” + “d”)
$ df -hT
[detached from 15652.pts-1.centos7]
BONUS: i nomi delle schermate sono troppo lunghi? Chiamiamo la sessione; nome sostituirà tty.host.
Questo nominerà la sessione come desideri; chiamiamo una sessione “ping”.
$ screen -S
$ screen -S ping
Quindi scollegare la sessione. Vedrai il nome della sessione subito dopo il pid; invece di tty.host
$ ping -c5 www.linoxide.com
[detached from 15929.ping]
$ screen -r
There are several suitable screens on:
15929.ping (Detached)
15652.pts-1.centos7 (Detached)
15603.pts-1.centos7 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
2) respingere l’ordine
Il comando precedente è come guardare nella scheda dei processi del task manager di Windows. Il comando precedente dice tutto sugli attuali processi in esecuzione, morti, zombi, ecc. Fornisce inoltre l’utilizzo della CPU e il carico medio della CPU per 1 min, 5 min, 15 min.
$ top > sys_summary &
$ jobs -l
[1]+ 10832 Stopped (signal) top > sys_summary
$ disown -h %1
$ ps -ef | grep top
root 2416 1979 0 13:40 ? 00:00:03 nautilus-desktop --force
root 10832 10724 0 19:36 pts/2 00:00:00 top
root 10915 10724 0 19:37 pts/2 00:00:00 grep --color=auto top
3) Il comando nohup
Eseguiamo yum usando nohup per installare un pacchetto
$ nohup yum install -y httpd* > ApacheInstall 2>&1 &
Ora vediamo i lavori in esecuzione in background
$ jobs -l
[1]+ 3646 Running nohup yum install -y httpd* > ApacheInstall 2>&1 &
4) Il comando setid
setsid – crea una sessione e imposta l’ID del gruppo di processi
setsid() crea una nuova sessione se il processo chiamante non è un leader del gruppo di processi. Il PID del processo chiamante è impostato sull’ID sessione del processo e sul rispettivo ID gruppo del processo chiamante.
$ setsid iostat
$ ps -ef | grep iostat
Per terminare il comando usa CLT+C
5) Comando Tmux
Tmux è un multiplexer terminale. Passare da un programma all’altro in un terminale è facile, staccarli (continuano a funzionare in background) e ricollegarli a un altro terminale.
Collega e scollega la sessione tmux
$ tmux attach
$ tmux detach
Esci/esci da tmux
$ exit
Denominazione delle sessioni durante la creazione
$ tmux new -s
Allegare utilizzando il nome
$ tmux attach
Passaggio da una sessione all’altra utilizzando i nomi
$ tmux switch -t
Le sessioni sono utili per separare diversi ambienti di lavoro. Generalmente ho una sessione “At Office” e una sessione “Home”; in “Office” tengo aperto tutto ciò di cui ho bisogno durante il mio sviluppo quotidiano, mentre in “Home” tengo aperte le attuali gemme open source da hackerare a casa.
6) il comando byobu
Molte distribuzioni non supportano bayou, segui i comandi seguenti per installare byobu su CentOS, Ubuntu o Fedora.
$ sudo apt-get install byobu (Ubuntu)
$ sudo yum install byobu (CentOS)
Una volta installato per quell’ambiente, usa questo semplice comando di seguito,
$ byobu
Ora avvieremo il lungo processo e usciremo.
$ tar -xvzf community_images.tar.gz
Premere “F6” per l’esecuzione in background del processo.
Dopo esserti connesso al sistema remoto, digita byobu per ricollegare la sessione.
$ byobu
Articoli simili
In quale altro modo pensi di mantenere il processo in esecuzione anche dopo la disconnessione dalla sessione SSH? Menziona nei tuoi commenti Grazie per averci seguito e apprezzato i nostri articoli.