Tutorial del comando chrt de Linux para principiantes (5 ejemplos)
Los procesos forman el núcleo de un sistema Linux en funcionamiento. Cuando un programa se convierte en un proceso (que es cuando se ejecuta), se establecen muchos atributos. A veces, puedes querer cambiar estos atributos en tiempo de ejecución. Existe una herramienta de línea de comandos chrt que te permite hacer esto.
En este tutorial, hablaremos de esta utilidad con algunos ejemplos fáciles de entender. Pero antes de hacerlo, conviene mencionar que todos los ejemplos de este artículo se han probado en una máquina Ubuntu 18.04 LTS.
El comando chrt de Linux
Como ya hemos mencionado en la sección de introducción, el comando chrt te permite manipular los atributos en tiempo real de un proceso. A continuación se muestra su sintaxis:
chrt [options] -p [prio] pid
Y así es como lo explica la página man de la herramienta:
chrt sets or retrieves the real-time scheduling attributes of an exist?
ing pid, or runs command with the given attributes. Both policy (one
of SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH, or SCHED_IDLE) and
priority can be set and retrieved.
The SCHED_BATCH policy is supported since Linux 2.6.16. The SCHED_IDLE
policy is supported since Linux 2.6.23.
The SCHED_RESET_ON_FORK flag for policies SCHED_RR and SCHED_FIFO is
supported since Linux 2.6.31.
A continuación se presentan algunos ejemplos al estilo de las preguntas y respuestas que deberían darte una buena idea de cómo funciona el comando chrt.
Q1. ¿Cómo utilizar el comando chrt?
Supón que te interesa manipular la política de programación o la prioridad del proceso gedit. Entonces, lo primero que tienes que hacer es obtener el id de proceso de este proceso, algo que puedes hacer utilizando el comando pidof.
pidof gedit
En mi sistema, por ejemplo, el comando anterior dio como resultado el pid ‘6063’. Ahora, para obtener la política de programación actual y la prioridad del proceso gedit, utiliza chrt de la siguiente manera:
chrt -p 6063
Y aquí está la salida que produjo este comando en mi sistema:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Q2. ¿Cómo hacer que chrt muestre las prioridades mínimas/máximas válidas?
Esto se puede hacer utilizando la opción de línea de comandos -m.
chrt -m
Por ejemplo, en nuestro sistema el comando anterior produjo la siguiente salida:
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Tendrás que referirte a estos valores para el establecimiento de la prioridad cuando establezcas las políticas de programación.
Q3. ¿Cómo establecer una política de programación en SCHED_BATCH?
Esto se puede hacer utilizando la opción de línea de comandos -b.
Por ejemplo:
chrt -b -p 0 6063
Ahora, si vuelves a comprobar la política de programación para gedit utilizando el siguiente comando:
chrt -p 6063
Deberías obtener una salida similar a la siguiente, lo que significa que el cambio que hiciste se ha aplicado:
pid 6063's current scheduling policy: SCHED_BATCH
pid 6063's current scheduling priority: 0
Q4. ¿Cómo establecer una política de programación en SCHED_FIFO?
Esto puede hacerse utilizando la opción de línea de comandos -f.
chrt -f -p 20 6063
Al igual que en la pregunta anterior, puedes verificar los cambios de forma cruzada utilizando el comando chrt -p. Ten en cuenta que puedes necesitar privilegios de root para utilizar la opción de línea de comandos -f.
Q5. ¿Cómo establecer una política de programación en SCHED_OTHER?
Esto puede hacerse utilizando la opción de línea de comandos -o.
chrt -o -p 0 6063
Para comprobarlo, utiliza el comando chrt -p.
chrt -p 6063
A continuación se muestra la salida en mi caso:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Conclusión
De acuerdo, el comando chrt no es el tipo de herramienta que puedes utilizar todos los días. Es posible que ni siquiera la necesites hasta que te dediques a la gestión de sistemas o trabajes en algún trabajo relacionado con la programación del kernel. Sin embargo, merece la pena saber al menos que existe esta herramienta. Para más información sobre chrt, dirígete a su página man.