Posted by q3it on martes, mayo 30, 2023 in Linux
En el post anterior vimos como hay algunos procesos que tienen más prioridad para acceder a los recursos del procesador y otros que tienen menos. Esto se marca con un número por defecto que es el cero. Los que tengan más prioridad tendrán un número negativo hasta llegar al -19 que es el que más prioridad tiene. Los que menos prioridad, es un número positivo hasta llegar al 20.
Para cambiar estas prioridades usaremos los comandos nice, que lo que ahora es ejecutar un comando con una prioridad distinta a la de por defecto y su sintaxis es simple nice -n la prioridad y el comando que nosotros vamos a ejecutar.
Con el comando top nosotros tenemos una columna que marca la prioridad que se está ejecutando en el proceso, tenemos dos que tienen por defecto 0 y otro que yo he ejecutado con una prioridad 10, nosotros para ejecutar este comando simplemente ponemos nice -n y luego la prioridad que queremos, si queremos darle una mayor prioridad ponemos un número negativo y luego el comando que queremos "nice -n -5 sleep 3600&" . Si lo ejecutamos sin ser usuario administrador veremos que nosotros no podemos establecer esta prioridad como un usuario normal, sólo podremos bajar la prioridad del proceso nunca podemos aumentar esta prioridad.
Si nosotros hacemos un top con nuestro usuario veremos que el nuevo proceso que se está ejecutado tiene prioridad cero, porque no ha sido capaz de poner el menos cinco. Si nosotros ponemos una prioridad positiva es decir menos prioridad, veremos que no da ningún error, se ejecuta correctamente.
Si quisiéramos cambiar la prioridad a un proceso que está ejecutándose utilizaremos el comando renice con la opción -n la prioridad y el ID de proceso y, miremos lo que sucede.
Yo tengo un ID de proceso que tiene prioridad 10. Vamos a verlo con top y tengo dos procesos que tienen una prioridad distinta uno con 10 y otro con 5.
Yo si quiero volver a poner por defecto ste proceso hago renice -n, luego la prioridad cero por defecto y luego el ID del proceso y vemos que nos falla. Esto sucede porque nosotros cuando cambiamos una prioridad para incrementar nos dará fallo porque solo se puede decrementar, nunca podremos aumentarlo, incluso aunque sea el valor por defecto. Por ejemplo si le ponemos prioridad 10 o 15 vemos que ahora sí nos deja, porque lo que hemos hecho es quitarle prioridad y, lo que nos dice en este mensaje es que el ID de proceso tenía una prioridad de 5 y ahora tiene una prioridad 15.
Si nosotros queremos otra vez volver a 5, veremos que nos da error porque nosotros no podemos aumentar la prioridad en un proceso, pero si somos usuario root siempre podremos cambiar la prioridad, ya sea mayor o menor sin ningún problema.