Prerequisiti:
Per eseguire i passaggi in questa guida, sono necessari i seguenti componenti:
Esecuzione dei processi dal terminale
Ogni volta che eseguono un comando, i processi vengono generati sotto il terminale. Se il terminale è chiuso, tutti i processi associati vengono automaticamente terminati. In alcune situazioni, può essere scomodo. Per esempio:
Per affrontare questi problemi, ci sono un paio di opzioni:
I processi che eseguono in background non sopraffanno l'output del terminale. Inoltre, il terminale è gratuito per eseguire i comandi aggiuntivi. Per i processi distaccati, non terminerà anche se il terminale è chiuso.
Avvio dei processi in background
In molti casi, un comando può richiedere un po 'di tempo per completare. In generale, l'utente è costretto ad aspettare fino alla fine del comando. Ad esempio, quando si utilizza un editor di testo, la shell non è disponibile fino alla chiusura dell'editor.
Per dimostrare, utilizziamo il comando "Sì":
$ uomo sì
Metodo 1:
Ci sono un paio di modi in cui possiamo inviare il processo di esecuzione in background.
Innanzitutto, fermiamo il processo senza terminarlo. Per fare ciò, eseguire il seguente comando e premere "Ctrl + Z":
$ Sì "Hello World"> /Dev /Null
Ora, esegui il comando "BG" per inviare il processo in background:
$ bg
Una volta spinto sullo sfondo, il processo riprende. Il seguente comando elenca tutti i lavori in esecuzione in background:
$ posti di lavoro
Metodo 2:
Nel metodo precedente, il processo ha iniziato a funzionare in primo piano. Abbiamo messo in pausa il processo, lo abbiamo inviato in background, quindi abbiamo ripreso. Invece, possiamo eseguire il processo direttamente in background.
Per fare ciò, aggiungi il segno "&" alla fine del comando:
$ Sì "Oh Long Johnson"> /Dev /Null &
Qui, i processi generati vengono eseguiti automaticamente in background. Per verificare, controlla l'elenco dei lavori in background:
$ posti di lavoro
Metodo 3:
Possiamo anche lanciare i processi in background con l'aiuto di TMUX, un potente multiplexer in grado di gestire più sessioni di terminale all'interno di una singola finestra. Non viene preinstallato in Linux. Tuttavia, è disponibile per tutte le principali distro Linux. Ulteriori informazioni sull'installazione di TMUX su Linux.
Nel seguente esempio, utilizziamo TMUX per eseguire il ping di un target e registrare l'output:
$ tmux new -d 'ping -c 9 127.0.0.1> ping.tronco d'albero'
Il file di registro verifica se il comando viene eseguito correttamente o no:
$ cat ping.tronco d'albero
È solo un esempio di ciò che TMUX può fare. Ulteriori informazioni su TMUX con esempi.
Restituire i lavori in primo piano
Se desideri restituire un lavoro in primo piano, utilizziamo il comando "FG". Abbiamo anche bisogno del numero di lavoro dal comando di lavoro.
Innanzitutto, determina il lavoro che vuoi portare in primo piano:
$ posti di lavoro
Ora usa il comando "FG":
$ fg %
Distacco i processi dal terminale
Qualsiasi processo associato a un terminale viene terminato una volta che il terminale si chiude, sia che sia in primo piano o in background. Per evitare la terminazione del processo, dissociassiamo il processo di destinazione dal terminale/shell.
Metodo 1:
Per rinnegare un processo, abbiamo prima bisogno di un processo di fondo:
$ Sì "Qwerty"> /dev /null &
Controlla l'elenco dei lavori in background in esecuzione:
$ posti di lavoro
Nota il numero di serie del lavoro di sfondo target. Ora, usa il comando "rinnegato" per staccarlo dal terminale:
$ rinnegare %
Il lavoro target dovrebbe ora scomparire dall'elenco dei lavori:
$ posti di lavoro
Tuttavia, puoi ancora vedere il processo in esecuzione in background:
$ ps aux
Metodo 2:
Un altro modo per staccare un processo dal terminale principale è l'utilizzo del comando "Nohup". Mantiene un processo in esecuzione in background anche dopo aver chiuso il terminale.
L'uso di "Nohup" è il seguente:
$ nohupE
Verifica se il lavoro viene creato correttamente:
$ posti di lavoro
Metodo 3:
Questo metodo stacca completamente il processo target. È un modo più efficace per staccare le app GUI.
Ad esempio, per avviare Firefox e staccarlo completamente dal terminale, utilizzare il comando seguente:
$ Firefox /dev/null &
Qui:
Conclusione
Abbiamo dimostrato i vari modi di eseguire un processo in background. Abbiamo anche messo in mostra i modi per staccare un processo dal terminale madre. Queste tecniche possono essere utili ogni volta che lavorano con il terminale o esegue uno script.
Se è necessario eseguire determinati comandi in uno schema specifico, possiamo scaricarlo come servizio SystemD. Per le macchine remote, possiamo anche usare gli strumenti di terze parti come Ansible per automatizzare quasi tutto.
Felice calcolo!