A ogni processo in esecuzione in Unix è assegnata una priorità.
Puoi cambiare la priorità del processo usando l'utilità nice and renice. Il comando Nice avvierà un processo con una priorità di pianificazione definita dall'utente. Il comando Renice modificherà la priorità di pianificazione di un processo in esecuzione.
Il kernel Linux pianifica il processo e alloca il tempo della CPU di conseguenza per ciascuno di essi. Tuttavia, quando uno dei tuoi processi richiede una priorità più alta per ottenere più tempo di CPU, puoi utilizzare il comando nice and renice come spiegato in questo tutorial.
L'intervallo di priorità della pianificazione del processo va da -20 a 19. Noi chiamalo come un bel valore.
Un bel valore di -20 rappresenta la priorità più alta e un bel valore di 19 rappresenta la priorità minima per un processo.
Per impostazione predefinita, quando un processo viene avviato, ottiene la priorità predefinita di 0.
1. Mostra il buon valore di un processo
La priorità corrente di un processo può essere visualizzata utilizzando il comando ps.
La colonna "NI" nell'output del comando ps indica il valore attuale (cioè la priorità) di un processo.
Lanceremo un programma di test chiamato test.pl che verrà utilizzato per dimostrare un comando piacevole e piacevole. Questo programma di test eseguirà determinate attività e sarà in esecuzione per un po'.
$ perl test.pl
Se esegui il comando ps come mostrato di seguito, puoi notare che questo programma test.pl ha il valore predefinito di 0 (guarda la colonna NI nell'output seguente).
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 6884 6424 99 80 0 - 1556 - 13:45 pts/3 00:05:54 perl test.pl
2. Avvia un programma con meno priorità
Invece di avviare il programma con la priorità predefinita, puoi utilizzare il comando nice per avviare il processo con una priorità specifica.
In questo esempio, test.pl viene lanciato con un buon valore di 10.
$ nice -10 perl test.pl
Nota: Ricorda che -10 nel comando precedente imposta la priorità di un processo su 10. Il comando – in nice sta per il trattino, che usiamo per passare le opzioni al comando.
Quindi, per passare un bel valore di 5, dirai -5. Per passare un bel valore di 6, dirai -6.
Come puoi vedere di seguito, questo programma viene ora avviato con un buon valore di 10, il che significa che verrà eseguito con una priorità inferiore rispetto ad altri programmi avviati per impostazione predefinita.
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 7044 6424 99 90 10 - 1556 - 13:58 pts/3 00:00:03 perl test.pl
3. Avvia un programma con priorità alta
Puoi anche avviare un programma con una priorità più alta. Un valore negativo negativo aumenterà la priorità del processo. Quindi, il valore deve essere specificato con un — (due trattini) davanti al bel comando come mostrato di seguito.
# nice --10 perl test.pl
Quindi, per passare un bel valore di -5, dovrai aggiungere due trattini davanti a 5. Per passare un bel valore di -6, dovrai aggiungere due trattini davanti a 6.
Come puoi vedere di seguito, questo programma viene ora avviato con un buon valore di -10, il che significa che verrà eseguito con una priorità maggiore rispetto ad altri programmi avviati per impostazione predefinita.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Nota:gli utenti regolari non sono autorizzati ad avviare un programma con una priorità più alta. Solo l'utente root può avviare un programma con priorità alta.
Come utente normale, se aumenti la priorità, riceverai il seguente messaggio di errore dal bel comando.
$ nice --10 perl test.pl nice: cannot set niceness: Permission denied
Si noti che dopo aver stampato il messaggio di errore precedente, il programma continuerà comunque a essere eseguito con la priorità predefinita (ad esempio:0).
4. Modifica la priorità con l'opzione -n
La priorità del processo può essere regolata con l'aiuto dell'opzione -n.
Aumenta la priorità:
# nice -n -5 perl test.pl
Diminuisci la priorità:
# nice -n 5 perl test.pl
5. Modifica la priorità di un processo in esecuzione
La priorità di un processo già in esecuzione può essere modificata utilizzando il comando renice.
In questo esempio, il programma test.pl è già in esecuzione con un buon valore di -10.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Possiamo cambiare il bel valore del programma sopra a -19 come mostrato di seguito. Passa l'id di processo del programma sopra all'opzione -p.
# renice -n -19 -p 3534
Verifica che il valore corretto sia stato modificato in -19.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -19 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
6. Modifica la priorità di tutti i processi che appartengono a un gruppo
Usando l'opzione -g puoi modificare la priorità di tutti i processi che appartengono a un gruppo. Il comando seguente cambierà il bel valore di tutto il processo che appartiene a geekstuff a 5.
# renice -n 5 -g geekstuff
7. Modifica la priorità di tutti i processi di proprietà dell'utente
Renice permette di modificare la priorità di tutti i processi di proprietà di un determinato utente come mostrato di seguito.
# renice -n 5 -u bala
Il comando precedente cambierà la priorità di tutti i processi di proprietà dell'utente bala. Assegnerà un bel valore di 5 a tutti i processi che appartengono all'utente bala.
# ps -fl -C "perl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 2720 2607 99 85 5 - 1556 - 14:34 pts/2 00:05:07 perl test.pl 0 R bala 2795 2661 99 85 5 - 1556 - 14:39 pts/3 00:00:09 perl 2.pl