Immagina questo scenario. Tu esegui un programma. Ma non sai quanto tempo ci vorrà per finire. Il processo continua a funzionare per diversi minuti. Non puoi aspettare ancora a lungo, perché alcuni altri programmi importanti sono in coda. Ti è mai capitato di trovarti in una situazione del genere? Nessun problema! Ho appena trovato un semplice trucco per sospendere un processo e riprenderlo in seguito in Linux.
Quello che farò è semplicemente mettere in pausa il processo attualmente in esecuzione, eseguire alcune altre attività importanti e quindi riprendere il processo interrotto dopo che tutti gli altri processi sono stati completati.
Questo può essere molto utile quando hai meno RAM o Processore per svolgere più attività. Puoi mettere in pausa i processi in esecuzione in qualsiasi momento e riprenderli in un secondo momento, senza doverli ricominciare da capo.
Ora andiamo avanti e impariamo a sospendere o mettere in pausa un processo in esecuzione e riprenderlo in un secondo momento nei sistemi operativi simili a Linux e Unix.
Sospendi un processo e riprendilo più tardi in Linux
Questo è assolutamente facile! Tutto quello che devi fare è trovare il PID (Process ID) e utilizzare ps
o ps aux
comando, quindi mettilo in pausa, infine riprendilo utilizzando kill
comando.
Vediamo un esempio. Scaricherò l'immagine di avvio da rete di Ubuntu 18.04 usando wget
comando:
$ wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso &
Qui, &
Il simbolo sposterà l'attività in esecuzione (ad esempio wget
) sullo sfondo senza chiuderlo.
Ora voglio mettere in pausa questa attività ed eseguire altre attività importanti. Per farlo, trova prima i processi in esecuzione usando il comando:
$ ps
Risultato di esempio:
PID TTY TIME CMD 30056 pts/0 00:00:00 bash 16143 pts/0 00:00:01 wget 32677 pts/0 00:00:00 ps
Come vedi, il PID del comando wget è 16143 .
Fermiamo ora questo processo. Per farlo, esegui il seguente comando dal tuo Terminale:
$ kill -STOP 16143
Verifica se il processo è stato interrotto o meno utilizzando il comando:
$ ps
Risultato di esempio:
PID TTY TIME CMD 8155 pts/0 00:00:00 bash 16143 pts/0 00:00:01 wget 16398 pts/0 00:00:00 ps [1]+ Stopped wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
Vedere? Il wget
il processo è stato interrotto.
Vai avanti e svolgi altri compiti importanti. Una volta completate tutte le attività, riprendere il processo interrotto utilizzando il comando:
$ kill -CONT 16143
Per verificare se il processo è in esecuzione, esegui ps
comando.
$ ps

Vedere? Il processo che avevamo interrotto in precedenza è stato ripreso!
Come ho già detto, questo sarà utile se non puoi eseguire più attività in un sistema che ha una bassa velocità della RAM o della CPU.
TL;DR
Innanzitutto, trova il pid del processo in esecuzione usando il comando ps. Quindi, mettilo in pausa usando kill -STOP <PID>
, quindi ibernare il sistema. Riprendere il sistema e riprendere il processo interrotto utilizzando il comando kill -CONT <PID>
.
Funzionerà dopo aver riavviato il mio sistema?
Potresti chiederti, funzionerà anche dopo un arresto o un riavvio completo del sistema? NO . Perché i PID dei processi cambieranno automaticamente dopo il riavvio del sistema. Non persistono durante il riavvio. In questi casi, puoi sospendere o ibernare l'intero sistema e riprenderlo quando sei pronto.
E questo è tutto. Ora sai come mettere in pausa e riprendere un processo nei sistemi operativi simili a Linux e Unix. Spero che questo aiuti.
Lettura consigliata:
- Autospegnimento, riavvio, sospensione e ibernazione del sistema Linux in un momento specifico
- Riattiva automaticamente il tuo sistema Linux dalla modalità di sospensione o ibernazione
- Reptyr:sposta un processo in esecuzione da un terminale all'altro senza chiuderlo
- Come aggiungere comandi Linux alla coda ed eseguirli uno per uno
- Come visualizzare le informazioni di processo utilizzando Procs su Linux