LINUX

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.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close