Computer

Esegui il processo nel terminale Linux in background

Autore: Peter Berry
Data Della Creazione: 16 Luglio 2021
Data Di Aggiornamento: 9 Maggio 2024
Anonim
0x06 The jobs, fg, bg commands and the & operator
Video: 0x06 The jobs, fg, bg commands and the & operator

Contenuto

Sono uno sviluppatore di software con un grande interesse per l'analisi dei dati e le statistiche.

Se sei come me e hai iniziato a odiare fare clic sulle icone per avviare i progetti, li avvii dalla shell. Ad esempio, apro il mio terminale o ho un terminale aperto ed eseguo il comando VLC. Questo comando aprirà il lettore multimediale VLC se lo hai installato. Ma ora il processo è in esecuzione in primo piano sul tuo terminale aperto. Il ciclo di vita di VLC è strettamente legato al terminale e blocca altre azioni sul terminale. Se non disponi di VLC, utilizza ad esempio "gnome-calculator".

Quando avvii il processo in questo modo, vedrai che la shell attende (si blocca) finché il programma non finisce o viene terminato.

Se chiudi il terminale, ti verrà chiesto: “C'è ancora un processo in esecuzione in questo terminale. La chiusura del terminale lo ucciderà ”. Puoi annullare o chiudere il terminale. Questo perché il processo che hai avviato eredita alcune cose dalla shell (stdin, stdout, ecc.). Questo rende il processo legato a quel terminale.


Quando chiudi il tuo terminale, la shell riceve un SIGHUP. Invia anche un SIGHUP al processo che hai avviato. Questo finirà il processo.

Supponiamo che tu non voglia interrompere il processo, ma non hai più bisogno o non desideri più questo terminale. Oppure potresti voler continuare a utilizzare il terminale per altre attività.

Aggiunta di "&" al comando

Nel caso di VLC, il processo passa in background e puoi continuare a utilizzare il terminale come meglio credi. Riceverai di nuovo un prompt della shell. Spesso continuo da lì o pulisco il terminale e lo uso per altre attività o avvio processi diversi.

Se chiudi il terminale premendo il pulsante di chiusura (x) con il mouse o usando Shift + Ctrl + W, allora si fermeranno tutti i processi che hai avviato in quel terminale. Questo è più o meno lo stesso problema di prima, ma questa volta il terminale non ti chiede di farlo, semplicemente uccide immediatamente i programmi.

Se digiti il ​​comando exit nel terminale o chiudi con la scorciatoia Ctrl + D, chiuderà il terminale, ma i processi in esecuzione rimarranno attivi. Questa è stata la prima soluzione che ho provato. Lo uso ancora abbastanza spesso, ma ce ne sono altri. Alcuni hanno altri vantaggi o offrono più opzioni se necessario.


$ vlc &

Aggiunta di "e rinnegamento" al tuo comando

In molti modi, questo (e rinnegare) sembra fare lo stesso che aggiungere la "&" al comando. Ma quando aggiungi rinnegamento, il processo verrà rimosso dall'elenco dei lavori della shell. Il processo è ancora connesso al terminale, ma non riceve il SIGHUP.

Uno degli svantaggi di rinnegare è che è specifico di bash. Se utilizzi spesso sistemi diversi che non conoscono questo comando, può essere un problema. Poiché la maggior parte dei comandi dopo un po 'è quasi simile a un riflesso, potresti finire per digitare questo comando su sistemi in cui non serve. Ma per me questo non è davvero un problema, ma tienilo a mente.

$ vlc e rinnegare

Utilizzo di "setsid" nel comando della shell

Un comando eseguito con setsid apre e / o assegna un nuovo id di sessione al processo. Questo ID di sessione è diverso dall'ID di sessione del terminale in esecuzione. Un albero di tutti i processi (esecuzione di istanze dei programmi) in esecuzione sul sistema mostrerebbe che il processo con un nuovo ID di sessione inizia alla radice della struttura ad albero, non come un ramo del processo terminale.


Con setsid, non puoi controllare l'output del processo che hai iniziato in seguito. Questo è qualcosa che puoi fare con qualcosa come nohup e schermo. Con lo schermo c'è una sessione di schermo allegata al processo e con nohup puoi controllare il file di output. Ma è qualcosa di cui hai bisogno o che desideri per il processo che stai iniziando? A volte è così, ma spesso è sufficiente eseguire il programma e il gioco è fatto.

Puoi anche farlo scrivere su un file di output quando usi setsid.

$ setsid vlc

Utilizzo di "nohup" con il tuo comando

Nohup separerà il processo dal terminale. A causa della disconnessione, non riceverà SIGHUP, motivo per cui si chiama nohup. Se chiudi il terminale, il processo continuerà a funzionare finché non lo chiuderai.

Quando il terminale è aperto, il lavoro è ancora in primo piano e ancora sotto il controllo del lavoro della shell. Ciò significa che se usi solo nohup, non puoi comunque utilizzare quel terminale per altre attività. Quindi dovresti combinarlo con una "&".

$ nohup vlc

$ nohup vlc &

Come vedi, chiude / ignora l'input e aggiunge l'output a nohup.out. L'uso di nohup.out assicurerà che il processo possa ancora scrivere il suo output anche quando il terminale termina / si chiude.

Comandi di base di Linux, ubuntu

La finestra di dialogo Esegui

Puoi anche scegliere di non avviare il processo da un terminale. È possibile utilizzare il prompt della finestra di dialogo Esegui. Premi ALT + F2 e digita il processo che desideri avviare nella schermata di dialogo. Per avviare VLC media player nel nostro caso di esempio: vlc.

Questo articolo è accurato e fedele al meglio delle conoscenze dell'autore.Il contenuto è solo a scopo informativo o di intrattenimento e non sostituisce consulenza personale o consulenza professionale in questioni aziendali, finanziarie, legali o tecniche.

Consigliato Da Noi

Consigliato

L'anatomia di un computer
Computer

L'anatomia di un computer

A hley Doyle è canade e e crive pe o articoli u computer e tecnologia.Quando i compongono i componenti di un computer, vengono pe o paragonati alle parti del corpo. L'unità di elaborazio...
Perché dovrei usare Unity: 8 motivi principali
Misc

Perché dovrei usare Unity: 8 motivi principali

John è uno crittore di contenuti freelance e perto con una toria lavorativa eclettica.Decidere quale motore di gioco per il tuo pro imo progetto non è mai tato co ì impegnativo. Dovre t...