Cada proceso en el sistema está corriendo con prioridades definidas (llamadas también “nice value”). Este valor puede variar desde -20 a +20. La máxima prioridad para los procesos es -20. Si no está definido, cada proceso correrá con prioridad 0 de manera predeterminada (la prioridad “base” para la administración de procesos) Los procesos con prioridad máxima (cualquier valor negativo hasta -20) usan más recursos del sistema que otros. Los procesos con prioridad mínima (+20) funcionarán cuando otras tareas no usen el sistema. Los usuarios que no sean el superusuario sólo pueden bajar la prioridad de los procesos que poseen en el rango de 0 a 20. El superusuario (root) puede ajustar la prioridad de los procesos a cualquier valor.
Si uno o más procesos usan muchos recursos del sistema, Usted puede cambiar las prioridades de los mismos en vez de terminarlos. Para tales tareas se puede usar el comando renice. La sintaxis del mismo es como sigue:
renice prioridad [[-p] pid ...] [[-g] pgrp ...] [[-u] usuario ...] |
donde prioridad es el valor de la prioridad, pid (use la opción -p para múltiples procesos) es el ID del proceso, pgrp (precedido por la opción -g) si son varios) es el ID de grupo del proceso, y usuario (-u para más de uno) es el nombre de usuario del dueño del proceso.
Supongamos que tiene que corriendo un procesos con PID 785, y el mismo realiza una operación científica compleja, y mientras el proceso está trabajando Usted desea jugar un juego. Entonces, teclea:
$ renice +15 785 |
En este caso, su proceso probablemente trabajará un poquito más. Sin embargo, no evitará que otros procesos utilicen más tiempo de CPU.
Si Usted es el administrador del sistema y nota que algún usuario está corriendo muchos procesos que utilizan muchos recursos del sistema, puede cambiar la prioridad de los procesos de dicho usuario con un único comando:
# renice +20 -u peter |
Luego de esto, todos los procesos de peter tendrán la prioridad menor y no obstruirán procesos de otros usuarios.
Ahora que sabe como puede cambiar la prioridad de los procesos, puede desear correr un comando con una prioridad definida. Para esto, utilice el comando nice.
En este caso debe especificar su comando como una opción para nice. De manera predeterminada nice ajusta una prioridad de 10. El rango va desde -20 (prioridad mayor) a 19 (menor) La opción -n se usa para ajustar el valor de la prioridad.
Por ejemplo, Usted desea crear una imagen ISO de un CD-ROM de instalación de Mandrakelinux:
$ dd if=/dev/cdrom of=~/mdk1.iso |
En algunos sistemas con un CD-ROM IDE común, el proceso de la copia de un volumen grande de información puede utilizar muchos recursos del sistema. Para evitar que la copia bloquee a todos los demás procesos, se puede comenzar el proceso de copia con una prioridad disminuida usando este comando:
$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso |
y continuar con lo que estaba haciendo.
Para cambiar la prioridad de un proceso también puede usar el utilitario top descripto antes. Use la tecla R dentro de la interfaz de top para cambiar la prioridad del proceso que pretenda.