Il comando jobs in Linux consente all'utente di interagire direttamente con i processi nella shell corrente.
I lavori hanno tre possibili stati in Linux:in primo piano, in background e interrotto.
Cosa significa? Ti spiegherò di più tra un po'. Per prima cosa diamo un'occhiata ad alcuni degli strumenti integrati nel comando Lavori.
Job Control ha diverse funzioni. Ciascuno può essere eseguito in modo indipendente. Ecco una tabella dei comandi relativi a Job Control.
Comando | Descrizione |
---|---|
lavori | Elenca i lavori nella shell corrente |
bg %n | Invia processo in background |
fg %n | Porta il processo in primo piano |
Nella tabella, n rappresenta il numero dell'ID lavoro corrispondente.
Comprendere il controllo dei lavori in Linux
Che cos'è esattamente un lavoro comunque? Lavori, processi e attività sono parole spesso usate in modo intercambiabile.
In realtà ci sono alcune piccole differenze che sono importanti per chiarezza.
La differenza può essere ridotta a quale entità gestisce i compiti. Gli utenti possiedono i lavori, mentre il kernel possiede i processi.
In Linux, un lavoro può essere un singolo processo o può avere molti figli o sottoprocessi.
Un esempio di ciò potrebbe essere un lavoro che presenta diversi comandi in pipe come questo:
cat file1 | sort | uniq
Parizza l'output del file e ordina per valore uniq usando la combinazione dei comandi sort e uniq.
Nel personal computer, il sistema operativo gestisce automaticamente la maggior parte dei processi. Questo è solitamente ottimizzato per le esigenze del sistema o la priorità data a una determinata attività. Questi processi vengono completati dal kernel e ricevono un ID processo (PID).
Come controllare i lavori in Linux
Quando apri una nuova shell, hai il potere di creare i tuoi lavori. In effetti, questo è ciò che accade quando inserisci un comando (o una serie di comandi) in un terminale.
A livello di utente:da una shell, puoi inviare manualmente i lavori per lavorare in background, portarli in primo piano o sospenderli (usando Ctrl+z).
Quindi, mettiamo in pratica ciò che hai imparato finora con alcuni esempi.
Esempio 1:inviare lavori in background
Inviare un lavoro per lavorare in background è facile. Devi solo aggiungere il tuo comando con un & simbolo (e commerciale).
[email protected]:~$ nano Linux_Handbook &
[1] 2860
Puoi vedere che questo comando restituisce il numero del lavoro tra parentesi. Il numero seguente è l'ID del processo utilizzato dal kernel.
Esempio 2:Visualizza lavori
Se hai provato a digitare il comando jobs, potresti essere confuso dal fatto che non sia successo nulla. Questo perché non c'erano lavori attivi nella shell. Ora che hai un lavoro in esecuzione, puoi eseguire correttamente il comando jobs.
[email protected]:~$ jobs
[1]+ Stopped nano Linux_Handbook
Il numero PID non è elencato qui, ma non ne hai bisogno. Puoi controllare i lavori utilizzando l'ID lavoro specifico dell'utente/della shell.
Esempio 3:portare i lavori in primo piano
Puoi utilizzare quell'ID lavoro per portare la tua istanza di nano in primo piano.
[email protected]:~$ fg %1
Se hai seguito, questo dovrebbe portarti in Nano con il tuo file chiamato Linux Handbook.
Esempio 4:interrompere un lavoro con Ctrl+z
È possibile interrompere i lavori aperti utilizzando Ctrl+z. Ecco uno screenshot che mostra come usarlo con la parte superiore.
Nello screencast, puoi guardarmi aprire in alto, usare Ctrl+z per sospenderlo, visualizzarlo nell'elenco dei miei lavori e quindi riportarlo in primo piano prima di chiuderlo.
Esempio 5:eseguire lavori in background utilizzando bg
Mentre puoi inviare lavori in background con il simbolo &, è sempre bene avere un'alternativa. Nello screencast, mi hai visto interrompere il lavoro usando ctrl+z. Ho riportato il lavoro nella shell e in primo piano con fg %n comando. Puoi fare la stessa cosa usando bg .
Userò un'applicazione GUI solo per cambiare le cose. Potresti aver notato in passato che quando apri una GUI dal terminale che se chiudi il terminale, anche la GUI si chiuderà. Si spera che questo articolo ti abbia chiarito il motivo per cui ciò accade.
Quindi, usiamo Gedit. Farò quanto segue:
- Avvia Gedit
- Torna alla shell e Ctrl+z
- Invialo allo Sfondo da eseguire usando bg
- Controlla il mio elenco di lavori per verificare che sia in esecuzione
- Torna in primo piano e invia un interrupt di sistema utilizzando Ctrl+c per terminarlo
[email protected]:~$ gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ bg %1
[1]+ gedit &
[email protected]:~$ jobs
[1]+ Stopped gedit
[email protected]:~$ fg %1
gedit
^C
Suggerimento bonus sui lavori di terminazione in Linux
Molti di noi sono abituati a usare ctrl+c per terminare i lavori in una shell. C'è un altro modo per farlo che incorporare la tua nuova conoscenza del controllo del lavoro.
[email protected]:~$ fg %1
gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ kill %1
Esatto, il comando kill può essere utilizzato insieme all'ID lavoro anche per terminare un lavoro.
Conclusione
L'apprendimento della riga di comando di Linux ci avvicina al funzionamento interno del nostro sistema operativo preferito. Il controllo dei lavori di apprendimento ci dà la possibilità di gestire più lavori contemporaneamente.
Spero che tu abbia trovato qualcosa di nuovo da esplorare con questo articolo. Se ti è piaciuto, faccelo sapere nella sezione commenti qui sotto o usa i link per condividere sui social media.