GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Gestire i processi in Ubuntu Linux

La gestione dei processi in Linux è un argomento importante da apprendere e comprendere, poiché è un sistema operativo multitasking e ha molti processi in corso contemporaneamente. Linux fornisce molti strumenti per la gestione dei processi, come elencare i processi in esecuzione, terminare i processi, monitorare l'utilizzo del sistema, ecc. In Linux, ogni processo è rappresentato dal suo Process ID (PID). Esistono altri attributi del processo come ID utente e ID gruppo se un utente o un gruppo esegue il processo. A volte è necessario uccidere o interagire con un processo, quindi dovresti sapere come gestire questi processi per far funzionare il tuo sistema senza intoppi. In Linux, i processi possono essere gestiti con comandi come ps, pstree, pgrep, pkill, lsof, top, nice, renice and kill, ecc.

Processi

L'esecuzione di un'istanza di un programma è chiamata processo. In Linux, process id (PID) viene utilizzato per rappresentare un processo distintivo per ogni processo. Esistono due tipi di processi,

  • Processi in background
  • Processi in primo piano

Processi in background

I processi in background iniziano nel terminale e vengono eseguiti da soli. Se esegui un processo nel terminale, il suo output verrà visualizzato in una finestra del terminale e puoi interagire con esso, ma se non hai bisogno di interagire con il processo, puoi eseguirlo in background. Se vuoi eseguire un processo in background, aggiungi semplicemente un segno "&" alla fine del comando e inizierà a funzionare in background; ti farà risparmiare tempo e sarai in grado di avviare un altro processo. Per elencare i processi in esecuzione in background, usa il comando "jobs". Mostrerà tutti i processi in esecuzione in background.

Ad esempio, l'aggiornamento è un processo lungo in Linux. Ci vuole troppo tempo e se vuoi fare altre cose durante l'aggiornamento del sistema, usa il comando in background.

[email protetta]:~$ sudo apt-get upgrade -y &

Inizierà a funzionare in background. E nel frattempo puoi interagire con altri programmi. Puoi controllare quanti e quali processi sono in esecuzione in background digitando questo comando.

[email protetta]:~$ job
[1]+ Esecuzione di sudo apt-get upgrade -y &

Processi in primo piano

Tutti i processi che eseguiamo nel terminale sono, per impostazione predefinita, eseguiti come processi in primo piano. Possiamo gestirli tramite comandi in primo piano e in background.

Puoi portare in primo piano qualsiasi processo in background elencato nei lavori digitando il comando 'fg' seguito dal numero del processo in background.

[email protetta]:~$ fg %1
sudo apt-get upgrade -y

E se vuoi portare questo processo in background, digita questo comando.

[email protetta]:~$ bg %1

Elencare e gestire i processi con il comando ps

Il processo di elenco con il comando ps è uno dei modi più vecchi per visualizzare i processi in esecuzione sul terminale. Digita il comando ps per elencare quali processi sono in esecuzione e quanta risorsa di sistema stanno utilizzando e chi li sta eseguendo.

[email protetta]:~$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMANDO
Jim 1562 0.0 0.0 164356 6476 tty2 Ssl+ 13:07 0:00 shell
Jim 1564 5.2 0.9 881840 78704 tty2 Sl+ 3:07 13:13 dauth
Jim 2919 0.0 0.0 11328 4660 pts/0 SS 13:08 0:00 bash
Jim 15604 0.0 0.0 11836 pts/0 R+ 3412 :19 0:00 ps e
…snip…

La colonna utente mostra il nome utente nella tabella sopra e il PID mostra l'id del processo. È possibile utilizzare il PID per terminare o inviare il segnale di uccisione a un processo. %CPU mostra la percentuale della CPU del processore e %MEM mostra l'utilizzo della memoria ad accesso casuale. Per terminare un processo, digita.

[email protetta]:~$ kill [ ID processo (PID)]

o

[email protetta]:~$ kill -9 [ ID processo (PID)]

Usa il comando ps aux per vedere tutti i processi in esecuzione e aggiungi una pipe per vederli in ordine.

[email protetta]:~$ ps aux | meno

Se vuoi riordinare le colonne, puoi farlo aggiungendo un flag -e per elencare tutti i processi e -o per indicare le colonne tramite parole chiave nel comando ps.

[email protetta]:~$ps -eo pid,user,uid,%cpu,%mem,vsz,rss,comm
PID USER UID %CPU %MEM VSZ COMANDO RSS
1 root 0 0,1 0,1 167848 11684 sistemato
3032 jim 1000 16.5 4.7 21744776 386524 cromato
…snip…

Opzioni per il comando ps.

L'opzione u viene utilizzata per elencare i processi da parte degli utenti.

[email protetta]:~$ ps u

L'opzione f viene utilizzata per visualizzare l'elenco completo.

[email protetta]:~$ ps f

L'opzione x viene utilizzata per visualizzare le informazioni sul processo senza un terminale.

[email protetta]:~$ ps x

L'opzione viene utilizzata per visualizzare informazioni estese.

[e-mail protetta]:~$ ps e

viene utilizzata un'opzione per elencare tutti i processi con il terminale.

[email protetta]:~$ ps a

L'opzione v viene utilizzata per visualizzare il formato della memoria virtuale.

[email protetta]:~$ ps v

Flag per il comando ps.

-e flag viene utilizzato per vedere ogni processo sul sistema.

[e-mail protetta]:~$ ps -e

-u flag è usato per vedere i processi in esecuzione come root.

[email protetta]:~$ ps -u

-f flag viene utilizzato per un elenco completo dei processi.

[email protetta]:~$ ps -f

-o flag viene utilizzato per elencare i processi nella colonna desiderata.

[email protetta]:~$ ps -o
pstree

pstree è un altro comando per elencare i processi; mostra l'output in un formato ad albero.

[email protetta]:~$ pstree

Opzioni per il comando pstree

-n viene utilizzato per l'ordinamento dei processi per PID.

[email protetta]:~$ pstree -n

-H viene utilizzato per evidenziare i processi.

[e-mail protetta]:~$ pstree -H [PID]
[e-mail protetta]:~$ pstree -H 6457

-a viene utilizzato per mostrare l'output, inclusi gli argomenti della riga di comando.

[email protetta]:~$ pstree -a

-g viene utilizzato per mostrare i processi per ID gruppo.

[email protetta]:~$ pstree -g

-s viene utilizzato per la semina dell'albero o per un processo specifico.

[e-mail protetta]:~$ pstree -s [PID]
[e-mail protetta]:~$ pstree -s 6457

[nomeutente] viene utilizzato per mostrare i processi di proprietà di un utente.

[email protetta]:~$ pstree [userName]
[email protetta]:~$ pstree jim
pgrep

Con il comando pgrep puoi trovare un processo in esecuzione basato su determinati criteri. È possibile utilizzare il nome completo o l'abbreviazione del processo per trovare o per nome utente o altri attributi. Il comando pgrep segue il seguente schema.

[email protetta]:~$ Pgrep [opzione] [modello]
[email protetta]:~$ pgrep -u jim chrome
Opzioni per il comando pgrep

-io viene utilizzato per la ricerca senza distinzione tra maiuscole e minuscole

[email protetta]:~$ Pgrep -i firefox

-d viene utilizzato per delimitare l'output

[email protetta]:~$ Pgrep -u jim -d:

-u viene utilizzato per trovare il processo di proprietà di un utente

[email protetta]:~$ Pgrep -u jim

-a viene utilizzato per elencare i processi insieme ai loro comandi

[email protetta]:~$ Pgrep -u jim -a

-c viene utilizzato per mostrare il conteggio dei processi di corrispondenza

[email protetta]:~$ Pgrep -c -u jim

-l viene utilizzato per elencare i processi e il loro nome

[email protetta]:~$ Pgrep -u jim -l
pkill

Con il comando pkill, puoi inviare un segnale a un processo in esecuzione in base a determinati criteri. È possibile utilizzare il nome completo o l'abbreviazione del processo per trovare o per nome utente o altri attributi. Il comando pgrep segue il seguente schema.

[email protetta]:~$ Pkill [Opzioni] [Modelli]
[email protetta]:~$ Pkill -9 chrome
Opzioni per il comando pkill

–segnale viene utilizzato per inviare un segnale, ad es. SIGKILL, SIGTERM, ecc.

[email protetta]:~$ Pkill –signal SIGTERM vscode

-HUP viene utilizzato per ricaricare un processo

[email protetta]:~$ Pkill -HUP syslogd

-f viene utilizzato per terminare i processi in base alla riga di comando completa.

[email protetta]:~$ Pkill -f "ping 7.7.7.7"

-u viene utilizzato per uccidere tutti i processi di proprietà di un utente.

[email protetta]:~$ Pkill -u jim

-io viene utilizzato per l'uccisione del processo senza distinzione tra maiuscole e minuscole da pkill.

[email protetta]:~$ Pkill -i firefox

-9 viene utilizzato per inviare un segnale di uccisione.

[email protetta]:~$ Pkill -9 Chrome

-15 viene utilizzato per inviare un segnale di terminazione.

[email protetta]:~$ Pkill -15 vlc
lsof (Elenco dei file aperti)

Questa utilità della riga di comando viene utilizzata per elencare i file aperti da diversi processi. E come sappiamo, tutti i sistemi UNIX/Linux riconoscono tutto come un file, quindi è conveniente usare il comando lsof per elencare tutti i file aperti.

[email protetta]:~$ lsof

Nella tabella sopra del comando lsof, FD rappresenta la descrizione del file, cwd rappresenta la directory di lavoro corrente, txt significa file di testo, mem significa file mappati in memoria, mmap significa dispositivi mappati in memoria, REG rappresenta un file normale, DIR rappresenta Directory, rtd significa directory principale. Ci sono altre opzioni che puoi usare con il comando lsof.

Opzioni per il comando lsof.

-c viene utilizzato per l'elenco dei file aperti in base al nome del processo.

[email protetta]:~$ lsof -c chrome

-u viene utilizzato per l'elenco dei file aperti da un utente.

[email protetta]:~$ lsof -u jim

-io viene utilizzato per l'elenco dei processi in esecuzione su una porta.

[email protetta]:~$ lsof -i

+D viene utilizzato per l'elenco dei file aperti in una directory.

[email protetta]:~$ lsof +D /home/

-p viene utilizzato per l'elenco dei file aperti da un processo.

[email protetta]:~$ lsof -p 1342

Elenco e gestione del processo con il comando in alto

Con il comando in alto, puoi visualizzare una vista in tempo reale dei processi di sistema in esecuzione. Visualizza i processi in base all'utilizzo della CPU. Puoi ordinare la colonna in base a te. Il comando in alto fornisce anche alcune informazioni sul tuo sistema, come da quanto tempo il sistema è in esecuzione o quanti utenti sono collegati al sistema e quanti processi sono in esecuzione, quanta CPU e RAM vengono utilizzate e un elenco di ciascuno processo.

Digita il comando top per elencare i processi in esecuzione.

[email protetta]:~$ in alto

Compiti:291 in totale, 1 in esecuzione, 290 addormentati, 0 fermi, 0 zombi

%Cpu(s):2.3us, 0.3sy, 0.0ni, 97.0id, 0.3wa, 0.0hi, 0.0si, 0.0st

MiB Mem:7880,6 totali, 1259,9 gratuiti, 3176 utilizzati, 3444,4 buff/cache

MiB Swap:2048,0 totali, 2048,0 gratuiti, 0,0 utilizzati. 4091.8 disponibile Mem

PID UTENTE PR NI VIRT RES SHR S %CPU %TEMPO MEM+ COMANDO

3241 jim 20 0 20.7g 33512 10082 S 1.7 4.2 0:54.24 cromato

3327 jim 20 0 4698084 249156 86456 S 1.3 3.1 1:42.64 cromato

2920 jim 20 0 955400 410868 14372 S 1.0 5.1 7:51.04 cromato

3423 jim 20 0 4721584 198500 10106 S 1.0 2.5 0:49.00 cromato

3030 jim 20 0 458740 114044 66248 S 0.7 1.4 3:00.47 cromato

3937 jim 20 0 4610540 104908 72292 S 0.7 1.3 0:05.91 cromato

1603 jim 20 0 825608 67532 40416 S 0.3 0.8 3:13.52 Xorg

1756 jim 20 0 4154828 257056 10060 S 0.3 3.2 5:53.31 gnome-s+

1898 jim 20 0 289096 29284 5668 S 0.3 0.4 1:06.28 fusuma

3027 jim 20 0 587580 14304 75960 S 0.3 1.8 9:43.59 cromato

3388 jim 20 0 4674192 156208 85032 S 0,3 1,9 0:13,91 cromato

3409 jim 20 0 4642180 140020 87304 S 0,3 1,7 0:15,36 cromato

3441 jim 20 0 16,5 g 156396 89700 S 0,3 1,9 0:25,70 cromato

….taglia….

Puoi anche eseguire alcune azioni con il comando in alto per apportare modifiche ai processi in esecuzione; ecco l'elenco qui sotto.

  • tu premendo “u” è possibile visualizzare un processo in esecuzione da un determinato utente.
  • M premendo "M" puoi organizzare in base all'utilizzo della RAM anziché all'utilizzo della CPU.
  • P premendo "P" puoi ordinare per utilizzo della CPU.
  • 1 premendo "1" si passa da un utilizzo CPU all'altro se ce ne sono più di uno.
  • R premendo "R" puoi invertire l'ordinamento dell'output.
  • h premendo “h” puoi andare in aiuto e premere un tasto qualsiasi per tornare.

Nota quale processo sta consumando più memoria o CPU. I processi che stanno consumando più memoria possono essere eliminati e quei processi che stanno consumando più CPU possono essere eliminati per dare loro meno importanza per il processore.

Chiudi un processo in alto: Premi k e scrivi l'ID del processo che vuoi uccidere. Quindi digita 15 o 9 per uccidere normalmente o immediatamente; puoi anche terminare un processo con un comando kill o killall.

Rifinisci un processo in alto: Premi r e scrivi il PID del processo che vuoi rinnovare. Ti chiederà di digitare il PID del processo e quindi il valore di nicing che vuoi assegnare a questo processo tra -19 e 20 (-19 significa l'importanza massima e 20 significa importanza minima).

Elencare e gestire i processi con System Monitor

Linux ha uno gnome di monitoraggio del sistema per mostrare i processi in esecuzione in modo più dinamico. Per avviare il monitor di sistema, premi il tasto Windows e digita il monitor di sistema, fai clic sulla sua icona e puoi vedere i processi nelle colonne. Facendo clic con il pulsante destro del mouse, puoi terminare, interrompere o ripristinare il processo.

I processi in esecuzione vengono visualizzati con gli account utente in ordine alfabetico. Puoi ordinare i processi in base a qualsiasi intestazione di campo come CPU, Memoria, ecc., Basta fare clic su di essi e verranno ordinati; ad esempio, fare clic su CPU per vedere quale processo consuma la maggior parte della potenza della CPU. Per gestire i processi, fai clic con il pulsante destro del mouse su di essi e seleziona l'opzione che desideri eseguire con il processo. Per gestire il processo seleziona le seguenti opzioni.

  • Proprietà- mostra altre impostazioni relative a un processo.
  • Mappe di memoria- mostra le mappe della memoria di sistema per mostrare quale libreria e altri componenti vengono utilizzati nella memoria per il processo.
  • Apri file- mostra quali file vengono aperti dal processo.
  • Cambia priorità- visualizzare una barra laterale da cui puoi rifinire il processo con le opzioni da molto alto a molto basso e personalizzato.
  • Stop- sospende il processo finché non scegli di continuare.
  • Continua- riavvia un processo sospeso.
  • Uccidi- La forza interrompe un processo all'istante.

Uccidere un processo con kill and killall

kill e il comando killall viene utilizzato per uccidere/terminare un processo in esecuzione. Questi comandi possono essere utilizzati anche per inviare un segnale valido a un processo in esecuzione, ad esempio dire a un processo di continuare, terminare o rileggere i file di configurazione, ecc. I segnali possono essere scritti in entrambi i modi per numeri o per nome. Di seguito sono riportati alcuni segnali comunemente usati.

Descrizione del numero di segnale

SIGHUP 1 Rileva il segnale di riaggancio sul terminale di controllo.

SIGINT 2 Interpretato da tastiera.

SIGQUIT 3 Esci dalla tastiera.

SIGILL 4 Istruzioni illegali.

SIGTRAP 5 Viene utilizzato per tracciare una trappola.

SIGABRT 6 viene utilizzato per interrompere il segnale da abort(3).

SIGKILL 9 Viene utilizzato per inviare un segnale di uccisione.

SIGTERM 15 Serve per inviare un segnale di terminazione.

SIGCONT 19,18,25 Viene utilizzato per continuare un processo se interrotto.

SIGSTOP 17,19,23 Viene utilizzato per arrestare i processi.

Diversi valori di SIGCONT e SIGSTOP sono utilizzati in diversi sistemi operativi Unix/Linux. Per informazioni dettagliate sui segnali, digitare terminale di segnale man 7.

Utilizzo del comando kill per l'invio del segnale da elaborare tramite PID.

Nota il processo a cui vuoi inviare un segnale di uccisione. Puoi trovare l'ID del processo (PID) tramite ps o il comando top.

PID UTENTE PR NI VIRT RES SHR S %CPU %TEMPO MEM+ COMANDO

7780 jim 20 0 12596 4364 3460 R 33.3 3.2 13:54:12 in alto

Il processo principale consuma il 33,3% della CPU. Se vuoi terminare questo processo per risparmiare l'utilizzo della CPU, ecco alcuni modi per terminare questo processo con il comando kill.

[email protetta]:~$ kill 7780

[email protetta]:~$ kill -15 7780 o $ kill -SIGTERM 7780

[email protetta]:~$ kill -9 7780 o $ kill -SIGKILL 7780

Utilizzo del comando killall per inviare segnali a un processo per nome.

Con il comando killall, non devi cercare l'id del processo; puoi inviare un segnale di kill a un processo per nome anziché per ID processo. Può anche uccidere più processi di quelli che vuoi se non stai attento, ad esempio, "killall chrome" ucciderà tutti i processi Chrome, compresi quelli che non vuoi uccidere. A volte è utile uccidere i processi con lo stesso nome.

Come il comando kill, puoi digitare i segnali per nome o per numero nel comando killall. Uccidi qualsiasi processo in esecuzione con il comando killall; devi solo digitarne il nome e il segnale che vuoi inviare. ad esempio, invia un processo di kill signal firefox usando il comando killall, scrivi il comando seguente.

[email protetta]:~$ killall -9 firefox

o

[email protetta]:~$ killall SIGKILL chrome

Modifica della priorità del processo con nice and renice

Ogni processo sul tuo sistema Linux ha un valore eccellente ed è compreso tra -19 e 20. Ha deciso quale processo avrebbe ottenuto più accesso alla CPU nel sistema. Più basso è il valore di nice, maggiore è l'accesso di un processo al processo della CPU. Come -16 valori piacevoli hanno più accesso alla CPU di 18 valori piacevoli. Solo un utente con privilegi di root può assegnare un valore negativo di nice. Un utente normale può assegnare solo il valore di "nice" tra 0 e 19. Un utente normale può assegnare solo valori nice più alti e sui propri processi. Un utente root può impostare qualsiasi valore per qualsiasi processo.

Se vuoi dare un processo più accessibile all'utilizzo della CPU assegnando il valore nice, digita il seguente comando.

[email protetta]:~$ bello +3 Chrome

E perfeziona il processo

[email protetta]:~$ renice -n -6 3612

Conclusione

Ecco la guida per gestire il tuo sistema Linux con ps, top, lsof, pstree, pkilll, kill, killall, nice, renice, ecc. Alcuni processi consumano la maggior parte dell'utilizzo della CPU e della RAM; sapere come gestirli aumenta la velocità e le prestazioni del tuo sistema e ti offre un ambiente migliore per eseguire tutti i processi che desideri in modo più efficiente.


Ubuntu
  1. Gestire i processi su Linux con kill e killall

  2. Installa Dropbox su Ubuntu 14.10

  3. 30 Esercizi sui processi Linux per amministratori di sistema

  4. Linux – Init Process:antenato di tutti i processi?

  5. MX Linux contro Ubuntu

Monitoraggio dei processi su Linux

Processi in esecuzione

Installa AngularJS in Ubuntu 22.04 | 20.04 Linux

Comprensione dei processi su Linux

Comandi per la gestione dei processi in Linux

Come uccidere i processi zombi in Ubuntu