Supponiamo che ti ritrovi a esplorare la riga di comando di Linux per la prima volta o ad entrare nell'amministrazione di Linux. In tal caso, è essenziale una comprensione di basso livello di come spostarsi nel terminal e completare le attività di base. Per aiutarti a cogliere questi concetti, dai un'occhiata ai miei due articoli precedenti:
- 10 comandi per iniziare al terminale
-
Altri 10 comandi per manipolare i file
Tuttavia, se ti senti a tuo agio con questi concetti, in questo articolo aumenteremo ulteriormente la tua conoscenza di Linux. Esamineremo i processi e come gestirli.
Quindi, cos'è esattamente un processo ?
In Linux, un processo è qualsiasi istanza attiva (in esecuzione) di un programma. Ma cos'è un programma ? Bene, tecnicamente, un programma è qualsiasi file eseguibile contenuto nella memoria della tua macchina. Ogni volta che esegui un programma, hai creato un processo. A livello di base, è abbastanza facile da gestire ed è quello a cui daremo un'occhiata oggi.
Di cosa hai bisogno per iniziare
Ti consiglio di seguire la tua macchina virtuale preferita. In questo modo, puoi provare a fallire senza conseguenze (che è sicuramente il modo migliore per metterti a tuo agio al terminale).
Per questa demo, avvierò il processo di sospensione per 500 secondi. Questo approccio ti consente di vedere il processo senza che io apporti modifiche significative al mio sistema.
[tcarrigan@client ~]$ dormire 500^Z[1]+ Arrestato dormire 500
Ho quindi interrotto il processo con Ctrl+Z in modo da poter utilizzare il nostro terminale.
1. Elenca i processi
Per visualizzare i processi attualmente attivi, utilizza il ps
comando:
[tcarrigan@client ~]$ ps PID TTY TIME CMD 2648 pts/0 00:00:00 bash 3293 pts/0 00:00:00 sleep 3300 pts/0 00:00:00 ps
Qui ottieni alcune informazioni sui processi attivi sul tuo sistema. Dovrai prestare attenzione al PID (ID processo univoco), il TIME (quanto tempo di esecuzione del processo) e il CMD (il comando eseguito per avviare il processo).
2. Elenco dettagliato (processi)
Per visualizzare un elenco incredibilmente dettagliato dei processi, puoi utilizzare ps aux
comando.
- a - tutti gli utenti
- u - mostra l'utente/proprietario
- x - mostra i processi non eseguiti nel terminale (rendendo l'output piuttosto lungo)
Puoi vedere il comando qui (output modificato per la lunghezza):
; I 13:45 0:00 [kworker/1:1-mm_percpu_wq]root 3381 0.0 0.0 0 0 ? I 13:45 0:00 [kworker/1:3]root 3398 0.0 0.0 0 0 ? I 13:46 0:00 [kworker/3:2-ata_sff]root 3481 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/u8:2-flush-253:0]root 3482 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/0:1-events]root 3483 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/0:2]root 3508 0.0 0.0 0 0 ? I 13:51 0:00 [kworker/3:0-ata_sff]root 3511 0.0 0.0 18892 7732 ? S 13:52 0:00 systemd-userworkroot 3512 0.0 0.0 18892 7656 ? S 13:52 0:00 systemd-userworkroot 3513 0.0 0.0 18892 7656 ? S 13:52 0:00 systemd-userworkroot 3566 0.4 0.0 432792 8024 ? Ssl 13:54 0:00 /usr/libexec/fprintdtcarrig+ 3598 0.0 0.0 228208 3948 pts/0 R+ 13:54 0:00 ps aux3. Uccidi per PID
Inevitabilmente, un processo si bloccherà e dovrai uccidere
esso. Più tempo trascorri nella CLI, più è probabile che tu abbia bisogno del kill
comando. Il modo più accurato per identificare un processo è tramite ID processo (PID).
Usa la seguente sintassi:
[tcarrigan@client ~]$ kill PID
Questo comando invia il SIGTERM segnale. Tuttavia, se hai a che fare con un processo bloccato, aggiungi il -9
opzione.
[tcarrigan@client ~]$ ps PID TTY TIME CMD 2648 pts/0 00:00:00 bash 3293 pts/0 00:00:00 sleep 4684 pts/0 00:00:00 sleep 40527 pts /0 00:00:00 sleep 40540 pts/0 00:00:00 ps[tcarrigan@client ~]$ sudo kill -9 3293[sudo] password for tcarrigan: [1] Killed sleep 500
4. Uccidi per nome/parola chiave
Usa il killall
comando per terminare un processo per nome. Questo comando interromperà tutti i processi con la parola chiave/nome che hai specificato.
La sintassi è:
[tcarrigan@client ~]$ killall sleep
Questo ucciderebbe tutto il sonno
processi attivi sul sistema (il -9
l'opzione funziona anche qui). Ecco un esempio:
[tcarrigan@client ~]$ ps PID TTY TIME CMD 2648 pts/0 00:00:00 bash 4684 pts/0 00:00:00 sleep 40527 pts/0 00:00:00 sleep 40540 pts /0 00:00:00 ps[tcarrigan@client ~]$ killall -9 sleep [2]- Killed sleep 500[3]+ Killall sleep 500
I prossimi due comandi vanno di pari passo. Ti permettono di spostare/gestire i comandi in background. Darò uno sguardo di base alla sintassi di seguito; tuttavia, per uno sguardo approfondito a questi comandi, vedere il mio precedente articolo sull'argomento.
5. Elenca i lavori in background e riprendi i lavori in background
Per elencare e gestire i lavori in background, utilizzeremo il bg
comando. Ho iniziato un nuovo sleep 500
processo e quindi interrotto, inviandolo in background. Quindi lo vediamo elencato durante l'esecuzione di bg
sotto:
[tcarrigan@client ~]$ bg[1]+ dormi 500 &
6. Porta in primo piano il lavoro più recente
Per fare ciò, useremo il fg
comando. Questo porta in primo piano il lavoro/processo eseguito più di recente. L'esempio seguente è una continuazione del comando precedente. Il 500 posti letto
il processo che si trova in background è ora attivo in background. Portiamolo alla luce...
[tcarrigan@client ~]$ fgsleep 500
Questo comando ci porta al nostro comando finale in questo elenco.
7. Porta in primo piano un lavoro specifico
Usa il fg
comando di nuovo, ma seleziona un lavoro specifico da portare in primo piano (anziché il più recente). Per fare ciò, aggiungeremo semplicemente il nome del lavoro/processo al comando.
[tcarrigan@client ~]$ fg XXXample
Questo porta lavoro XXXample in primo piano.
[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]
Conclusione
In Linux Command Basics di oggi, abbiamo esaminato i processi e come gestirli. Ora puoi completare le attività generali di gestione dei processi, dall'elenco e l'eliminazione allo spostamento tra lo sfondo e il primo piano. Se ci sono altre aree di amministrazione Linux generali per le quali vorresti vedere un elenco dedicato di comandi, invia un'e-mail al team all'indirizzo [email protected] e farò del mio meglio per arricchirlo per te.