Ce face nice și renice
Fiecare proces are o valoare niceness între -20 (prioritate maximă) și 19 (prioritate minimă); valoarea obișnuită este 0. Un proces „mai drăguț” (valoare mai mare) cedează procesorul mai ușor celorlalte procese.
nice pornește o comandă nouă cu valoarea ajustată (implicit +10). renice schimbă valoarea unui proces existent, după PID (-p), utilizator (-u) sau grup de procese (-g).
Orice utilizator își poate micșora prioritatea (valori pozitive). Creșterea priorității (valori negative, sau scăderea valorii unui proces) cere drepturi de root. Prioritatea contează doar când procesorul este ocupat; pe un server liber, efectul nu se vede.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
nice -n N comandă |
Pornește comanda cu niceness-ul curent plus N. |
nice comandă |
Fără -n, ajustarea implicită este 10. |
renice -n N -p PID |
Setează niceness-ul N pentru procesul PID. |
renice -n N -u UTILIZATOR |
Aplică valoarea tuturor proceselor unui utilizator. |
ps -o ni |
Coloana NI arată niceness-ul unui proces (și în top/htop). |
Exemple
Exemplul 1: Valoarea niceness înainte și după
Afișăm niceness-ul shell-ului, apoi pe al unei comenzi pornite cu nice -n 10 și pe al unui proces căruia îi schimbăm valoarea cu renice. tr -d elimină spațiile de aliniere din ieșirea lui ps.
echo "Normal: $(ps -o ni= -p $$ | tr -d ' ')"
nice -n 10 bash -c 'echo "Cu nice -n 10: $(ps -o ni= -p $$ | tr -d " ")"'
bash -c 'renice -n 5 -p $$ > /dev/null; echo "După renice: $(ps -o ni= -p $$ | tr -d " ")"'
Rezultat
Normal: 0
Cu nice -n 10: 10
După renice: 5
Exemplul 2: Backup cu prioritate mică pe un server ocupat
Arhivarea rulează în fundal cu niceness 19, ca site-ul să rămână rapid pentru vizitatori. $! este PID-ul ultimei comenzi pornite în fundal, iar coloana NI confirmă valoarea.
nice -n 19 tar -czf /backup/site_$(date +%F).tar.gz /var/www/dexblog &
ps -o pid,ni,comm -p $!
Ieșire în terminal
[1] 51842
PID NI COMMAND
51842 19 tar
Exemplul 3: Creșterea priorității unui proces (necesită root)
renice afișează valoarea veche și pe cea nouă.
sudo renice -n -5 -p 2310
Ieșire în terminal
2310 (process ID) old priority 0, new priority -5
Greșeli frecvente
- Confuzia de sens: o valoare
nicemai mare înseamnă prioritate mai mică, nu mai mare. - Așteptarea ca
nicesă limiteze consumul de procesor: pe un sistem liber, procesul folosește tot procesorul disponibil. Pentru limite reale se folosesc cgroups (de exempluCPUQuota=în systemd). - Încercarea de a reduce valoarea fără
sudo: utilizatorii obișnuiți pot doar să crească niceness-ul.
Comenzi înrudite
ps: Afișează o captură instantanee (snapshot) a proceselor active din sistem.top: Monitorizează interactiv și în timp real procesele, încărcarea procesorului și memoria RAM.htop: Monitor de sistem interactiv, colorat și intuitiv pentru resurse, memorie și procese.systemctl: Controlează sistemul de inițializare systemd și administrează serviciile (demoni de fundal).