Cada proceso en ejecución en Unix tiene una prioridad asignada.
Puede cambiar la prioridad del proceso usando la utilidad nice y renice. El comando Nice iniciará un proceso con una prioridad de programación definida por el usuario. El comando Renice modificará la prioridad de programación de un proceso en ejecución.
Linux Kernel programa el proceso y asigna tiempo de CPU en consecuencia para cada uno de ellos. Pero, cuando uno de sus procesos requiere mayor prioridad para obtener más tiempo de CPU, puede usar el comando agradable y renice como se explica en este tutorial.
El rango de prioridad de programación del proceso es de -20 a 19. llame a esto como un buen valor.
Un buen valor de -20 representa la máxima prioridad y un buen valor de 19 representa la menor prioridad para un proceso.
De forma predeterminada, cuando se inicia un proceso, obtiene la prioridad predeterminada de 0.
1. Mostrar buen valor de un proceso
La prioridad actual de un proceso se puede mostrar usando el comando ps.
La columna "NI" en la salida del comando ps indica el valor agradable actual (es decir, la prioridad) de un proceso.
Lanzaremos un programa de prueba llamado test.pl que se usará para demostrar el comando agradable y renice. Este programa de prueba realizará ciertas tareas y se ejecutará durante un tiempo.
$ perl test.pl
Si ejecuta el comando ps como se muestra a continuación, puede notar que este programa test.pl tiene el valor agradable predeterminado de 0 (observe la columna NI en el siguiente resultado).
$ 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. Lanzar un programa con menos prioridad
En lugar de iniciar el programa con la prioridad predeterminada, puede usar el comando agradable para iniciar el proceso con una prioridad específica.
En este ejemplo, test.pl se inicia con un buen valor de 10.
$ nice -10 perl test.pl
Entonces, para pasar el buen valor de 5, dirás -5. Para pasar el buen valor de 6, dirás -6.
Como puede ver a continuación, este programa ahora se inicia con un buen valor de 10, lo que significa que se ejecutará con una prioridad más baja en comparación con otros programas que se inician de forma predeterminada.
$ 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. Lanzar un programa con alta prioridad
También puede iniciar un programa con una prioridad más alta. Un valor agradable negativo aumentará la prioridad del proceso. Por lo tanto, el valor debe especificarse con un — (dos guiones) delante del comando agradable, como se muestra a continuación.
# nice --10 perl test.pl
Entonces, para pasar el valor agradable de -5, agregará dos guiones delante de 5. Para pasar el valor agradable de -6, agregará dos guiones delante de 6.
Como puede ver a continuación, este programa ahora se inicia con un buen valor de -10, lo que significa que se ejecutará con mayor prioridad en comparación con otros programas que se inician de forma predeterminada.
# 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:los usuarios regulares no pueden iniciar un programa con una prioridad más alta. Solo el usuario raíz puede iniciar un programa con alta prioridad.
Como usuario habitual, si aumenta la prioridad, obtendrá el siguiente mensaje de error del comando agradable.
$ nice --10 perl test.pl nice: cannot set niceness: Permission denied
Tenga en cuenta que después de imprimir el mensaje de error anterior, el programa seguirá ejecutándose con la prioridad predeterminada (es decir, 0).
4. Cambia la Prioridad con la opción -n
La prioridad del proceso se puede ajustar con la ayuda de la opción -n.
Aumentar la prioridad:
# nice -n -5 perl test.pl
Disminuir la prioridad:
# nice -n 5 perl test.pl
5. Cambiar la prioridad de un proceso en ejecución
La prioridad de un proceso que ya se está ejecutando se puede cambiar usando el comando renice.
En este ejemplo, el programa test.pl ya se está ejecutando con un buen valor de -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
Podemos cambiar el valor agradable del programa anterior a -19 como se muestra a continuación. Pase la identificación del proceso del programa anterior a la opción -p.
# renice -n -19 -p 3534
Verifique que el valor agradable se haya cambiado a -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. Cambiar la Prioridad de Todos los Procesos que Pertenecen a un Grupo
Usando la opción -g puede modificar la prioridad de todos los procesos que pertenecen a un grupo. El siguiente comando cambiará el valor agradable de todo el proceso que pertenece a geekstuff a 5.
# renice -n 5 -g geekstuff
7. Cambiar la prioridad de todos los procesos propiedad del usuario
Renice permite alterar la prioridad de todos los procesos propiedad de usuarios específicos como se muestra a continuación.
# renice -n 5 -u bala
El comando anterior cambiará la prioridad de todos los procesos propiedad del usuario bala. Asignará un buen valor de 5 a todos los procesos que pertenezcan al usuario 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