GNU/Linux >> Linux Esercitazione >  >> Linux

Come modificare la priorità di un processo in Linux

Nell'ecosistema Unix, un processo è un programma in esecuzione. Quindi, qualsiasi programma in esecuzione sulla tua macchina Linux è un processo. Uno o più processi possono essere in esecuzione sulla tua macchina Linux alla volta. Possiamo visualizzare le informazioni sui processi attivi utilizzando ps comando. Per impostazione predefinita, il comando ps mostra solo i processi dell'utente corrente. Puoi usare il comando "ps -ef" (senza virgolette, ovviamente) per visualizzare tutti i processi. Per visualizzare l'utente di un processo, utilizziamo "ps -u". Spero che tu abbia un'idea di base sui processi Linux. Veniamo ora all'argomento di oggi:come modificare la priorità di un processo in Linux usando nice e renice comandi.

Come forse saprai, per impostazione predefinita, il kernel Linux considera tutti i processi ugualmente importanti e alloca la stessa quantità di tempo CPU per ogni processo. A volte, potresti voler aumentare o diminuire la priorità di determinati processi per utilizzare più tempo della CPU. È qui che i comandi nice e renice vengono in aiuto. Il comando Nice viene utilizzato per eseguire un processo con una priorità definita dall'utente mentre il comando renice viene utilizzato per modificare la priorità di un processo in esecuzione. In genere, i comandi nice e renice vengono utilizzati per modificare la priorità rispetto alla priorità predefinita di un processo.

Cambia la priorità di un processo con il comando Nice

Visualizza la priorità predefinita di un processo

Ogni volta che un processo si avvia normalmente, ottiene il valore di priorità predefinito di zero .

Usiamo il programma cmus , un lettore multimediale a riga di comando ai fini di questa guida.

Eseguiamolo usando il comando:

$ cmus &

Nota: Se un comando viene terminato dall'operatore di controllo & , la shell esegue il comando in background in una subshell.

Ora vediamo i processi in esecuzione usando il comando:

$ ps -al

Risultato di esempio:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 13829 13704 0 80 0 - 39431 signal pts/0 00:00:00 cmus
0 R 1000 13848 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Visualizza i processi in esecuzione usando il comando ps

Come puoi vedere nell'output sopra, il valore della gentilezza è elencato sotto l'intestazione della colonna "NI" . Quindi, è chiaro che tutti i processi ottengono il valore di priorità predefinito pari a zero.

Avvia un processo con una buona utilità

Se avvii un processo con un bel comando senza argomenti, ottiene il valore predefinito di 10 . Qui 10 è il valore o la priorità della gentilezza. I valori di gentilezza vanno da -20 (più favorevole al processo) a 19 (meno favorevole al processo). In parole povere, i valori negativi (Es. -20) danno priorità maggiore a un processo e valori positivi (Es. 19) danno priorità inferiore.

Ora, fermiamo il programma in esecuzione cmus con il comando:

$ kill -9 13829

Qui, 13829 è il PID del programma cmus. Vedrai questo valore sotto l'intestazione "PID" nell'output sopra.

Ora, esegui il programma cmus con l'utilità 'nice'.

$ nice cmus &

Controlla i processi in esecuzione con il comando:

$ ps -al

Risultato di esempio:

 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
 0 T 1000 13957 13704 0 90 10 - 55815 signal pts/0 00:00:00 cmus
 0 R 1000 13985 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Avvia un processo con una bella utilità

Vedi, ora cmus process ha ottenuto il valore di precisione predefinito di 10 , il che significa che la sua priorità è stata modificata.

Avvia un processo con una buona utilità con priorità inferiore

Inoltre, puoi avviare lo stesso processo con un valore di gentilezza specifico, ad esempio 15 , come di seguito.

Termina il processo con con il comando kill:

$ kill -9 13957

Ancora una volta, avvia il processo con un valore di gentilezza di 15:

$ nice -15 cmus &

Nota: Qui, non confondere - (trattino) con meno. Usiamo - (trattino) per passare un valore. Quindi, per assegnare un valore positivo, utilizziamo -15. Allo stesso modo, per assegnare un valore negativo, utilizziamo --15 (cioè doppio trattino).

Controlliamo il valore della gentilezza usando il comando ps -al:

$ ps -al

Risultato di esempio:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 14060 13704 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 14069 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Avvia un processo con una buona utilità con priorità inferiore

Vedi, ora il processo cmus ha ottenuto il valore di gentilezza di 15.

Negli esempi precedenti, abbiamo avviato i processi con priorità inferiore. Ricorda che il valore positivo della gentilezza rappresenta una priorità più bassa .

Avvia un processo con l'utilità Nice con priorità più alta

Sai già che il valore negativo della gentilezza rappresenta una priorità più alta. Tieni presente che gli utenti regolari non sono autorizzati ad avviare un processo con priorità più alta. Devi essere utente root per avviare qualsiasi processo con priorità più alta .

Quindi, per avviare un processo utilizzando una buona utilità con priorità inferiore, ad esempio -15 , esegui il comando seguente:

# nice --15 cmus &

Risultato di esempio:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 14331 14306 0 80 0 - 20531 poll_s pts/0 00:00:00 sudo
4 S 0 14332 14331 0 80 0 - 13796 wait pts/0 00:00:00 su
4 S 0 14333 14332 0 80 0 - 5736 wait pts/0 00:00:00 bash
4 T 0 14358 14333 0 65 -15 - 55643 signal pts/0 00:00:00 cmus
0 R 0 14366 14333 0 80 0 - 8148 - pts/0 00:00:00 ps

Avvia un processo con l'utilità Nice con priorità più alta

Avvia i processi con l'opzione -n

Puoi anche usare -n opzione per aumentare o diminuire la priorità.

Per aumentare la priorità, esegui il comando seguente come root utente:

# nice -n -15 cmus &

Per diminuire la priorità, esegui il comando seguente come normale utente:

$ nice -n 15 cmus &
Scarica - Ebook gratuito:"Tutorial Amazon S3"

Cambia la priorità di un processo in esecuzione con il comando Renice

Quello che abbiamo visto finora è che abbiamo avviato un processo con una priorità definita dall'utente. Ora cambieremo la priorità di un processo in esecuzione usando il comando renice.

Vediamo i processi in esecuzione usando il comando:

$ ps -al

Risultato di esempio:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15066 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

Come puoi vedere nell'output sopra, cmus è in esecuzione con un valore di priorità inferiore di 15.

Per modificare l'attuale valore di accuratezza di un processo in esecuzione, ad esempio 18 , esegui il comando seguente:

$ renice -n 18 -p 15059

Qui, 15059 è l'ID di processo di cmus process.

L'output di esempio sarebbe:

15059 (process ID) old priority 15, new priority 18

Verifica il valore della gentilezza usando il comando:

$ ps -al

Esempio di output:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 98 18 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15074 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

Per cambiarlo in un valore di niceness negativo (per assegnare una priorità più alta), esegui il comando seguente come root utente:

# renice -n -20 -p 14749

Puoi persino modificare le priorità di tutti i gruppi in esecuzione che appartengono a un gruppo particolare come di seguito.

# renice -n -20 -g ostechnix

Il comando precedente cambia la priorità di tutti i processi in esecuzione che appartengono a un gruppo chiamato otechnix .

Inoltre, puoi modificare la priorità del processo in esecuzione di proprietà di un particolare utente, ad esempio sk , utilizzando il comando:

# renice -n -20 -u sk

Per ulteriori opzioni, ti suggerisco di fare riferimento alle pagine man di nice e renice utility.

$ man nice
$ man renice

Lettura consigliata:

  • Come scoprire da quanto tempo è in esecuzione un processo in Linux
  • Come visualizzare le informazioni di processo utilizzando Procs su Linux

Spero che tu abbia un'idea di base su cos'è un processo Linux e su come cambiarne la priorità usando utility carine e raffinate. Spero che ti aiuti.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come modificare la password in Linux (comando passwd)

  4. Come cambiare l'identità di un sistema Linux

  5. UNIX/Linux:Come cambiare la gentilezza (priorità) di un processo

Come modificare il colore di output di "Echo" in Linux

Come KILL un processo su Linux

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come modificare la password di root in Linux

Come usare il comando xargs in Linux?