El comando crontab administra la tabla cron que utiliza el demonio cron para ejecutar los trabajos cron. Este artículo explica las diversas opciones de la línea de comandos del comando crontab.
1. Ajustando Crontab de otros usuarios usando la opción -u
-u significa usuario. Esto debe ir seguido de un nombre de usuario válido en el sistema. La opción -u sola no hace nada. Debe combinarse con otras opciones. En realidad, se puede combinar con cualquier otra opción de línea de comandos de crontab.
Si no especifica -u nombre de usuario, los comandos crontab se ejecutarán en el usuario actual. Por ejemplo, todos los siguientes comandos crontab se ejecutarán en el usuario conectado actual.
crontab -l crontab -e crontab -r ..
Si especifica -u nombre de usuario, el comando crontab se ejecutará en el nombre de usuario dado. Por ejemplo, todos los siguientes comandos crontab se ejecutarán en el usuario de Oracle.
crontab -u oracle -l crontab -u oracle -e crontab -u oracle -r ..
2. Muestre la tabla Cron usando la opción -l
-l significa lista. Esto muestra el crontab del usuario actual. Dado que inicié sesión como root, esto mostrará los trabajos cron del usuario root.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup
Para mostrar los trabajos cron de otros usuarios, combine la opción -l con -u.
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup
Los 15 ejemplos de crontab explican formas prácticas de usar las entradas de trabajos cron.
3. Edite la tabla Cron usando la opción -e
-e significa editar. Esto le permite editar el crontab del usuario actual. Dado que inicié sesión como root, esto abrirá automáticamente los trabajos cron de root en un editor de Vim y me permitirá editarlo.
# crontab -e 53 00 * * 7 /bin/sh /home/root/bin/server-backup ~ ~ /tmp/crontab.7dgqju
Como notará en lo anterior, /tmp/crontab.7dgqju es un archivo temporal creado automáticamente por crontab donde puede editar sus trabajos cron.
Cuando guarde sus ediciones y salga del editor de Vim, se mostrará uno de los siguientes mensajes, dependiendo de si realizó algún cambio o no.
# crontab -e crontab: no changes made to crontab # crontab -e crontab: installing new crontab
Nota:El editor que utiliza crontab para abrir los trabajos cron para su edición depende de la variable de entorno VISUAL o EDITOR. De forma predeterminada, utilizará el editor Vim en el entorno Linux. Pero puede cambiarlo usando la variable de entorno VISUAL/EDITOR.
Para editar los trabajos cron de otros usuarios, combine -e con la opción -u.
# crontab -u oracle -e crontab: installing new crontab
Para comprender el significado de las entradas crontab en sí, consulte Cómo ejecutar un trabajo cron cada 5 minutos (o horas, días o meses).
4. Cargar crontab desde un archivo
En lugar de editar manualmente el crontab para agregar nuevos trabajos, también puede cargar todos los trabajos cron desde un archivo. Esto es útil cuando tiene que mantener muchos servidores que tienen las mismas entradas de trabajos cron.
En el siguiente ejemplo, todos los trabajos cron están en el archivo /home/root/mycronjobs.txt.
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Para cargar los trabajos de mycronjobs.txt al crontab del usuario actual, haga lo siguiente:
# crontab /home/root/mycronjobs.txt
Valide para asegurarse de que los trabajos cron se carguen correctamente.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Nota:tenga cuidado al usar este método de carga, ya que borrará todas las entradas de trabajos cron actuales antes de cargar las nuevas.
Para cargar el trabajo cron desde un archivo a otro usuario, combínelo con la opción -u.
# crontab -u oracle /home/oracle/mycronjobs.txt
5. Agregue la seguridad de SELinux usando la opción -s
-s significa SELinux. Esto agregará la variable MLS_LEVEL al crontab que contiene el contexto de seguridad actual de SELinux.
Para usar la opción -s, debe cargar los trabajos cron desde un archivo.
# cat /home/root/mycronjobs.txt 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -s /home/root/mycronjobs/my.txt SELINUX_ROLE_TYPE=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota
Dependiendo de su sistema, lo anterior agregará la variable SELUNUX_ROLE_TYPE o la variable MLS_LEVEL que contiene la cadena de contexto de seguridad de SELinux. Si no está utilizando SELinux en su entorno, no se preocupe por lo que hace esta opción. SELinux es un tema de discusión aparte, que podríamos cubrir en detalle en futuros artículos.
6. Eliminar todos los trabajos cron usando la opción -r
-r significa eliminar. Esto eliminará todas las entradas de trabajo cron del usuario actual como se muestra a continuación.
# crontab -l 53 00 * * 7 /bin/sh /home/root/bin/server-backup 01 00 * * * /bin/sh /home/root/bin/check-user-quota # crontab -r # crontab -l no crontab for root
-i significa modo interactivo. Combinar -i con -r le pedirá una confirmación antes de eliminar todas las entradas de crontab.
# crontab -ir crontab: really delete root's crontab? n
Para eliminar los trabajos cron de otros usuarios, combine la opción -r con -u.
# crontab -u oracle -l 01 00 * * * /bin/sh /home/oracle/bin/rman-backup # crontab -u oracle -r # crontab -u oracle -l no crontab for oracle