Saltar la navegación

crontab

El comando crontab es el encargado de mantener las listas de tareas de cron. Su sintaxis es la siguiente:

crontab [ -u user ] file
crontab [ -u user ] [ -i ] { -e | -l | -r }

El root es el único que puede alterar la lista de tareas programadas de un usuario, por lo que es el único que puede utilizar la opción -u para referirse a un usuario en concreto.

Si el usuario juan ya hubiera creado un fichero crontab, por ejemplo, microntab, y lo quiere cargar en memoria, debería usar la primera de las sintaxis:

$ crontab microntab

De esta forma se cargan todas la tareas programadas de microntab y se guardan en /var/spool/cron/crontabs/juan, y una edición posterior de las tareas programadas sería desde este último fichero.

Si lo anterior lo hubiera hecho el root para el usuario juan:

# crontab -u juan microntab

La ejecución del comando anterior también tendría el efecto de guardar las tareas programadas sobre el fichero /var/spool/cron/crontabs/juan.

Siempre que se ejecuta el comando crontab, las tareas del usuario que existieran previamente se borrarán y se introducirán las que vayan en el fichero.

La opción -e edita las tareas actuales con el editor de texto por defecto; a partir de ese momento podremos modificar, añadir o quitar tareas y al salir del editor, lo que hubiéramos dejado sustituiría a las tareas existentes.

$ crontab -e

El comando anterior si lo ejecuta el usuario juan, se editaría el fichero /var/spool/cron/crontabs/juan. Si lo ejecutara el root, se editaría el fichero /var/spool/cron/crontabs/root y no /etc/crontab, el cual debe ser editado directamente.

Con la opción -l podemos ver, por la salida estándar, las tareas programadas de un usuario:

$ crontab -l
* * * * * echo $(date) >> fecha-hora.txt

Eliminar las tareas se hace con -r:

$ crontab -r

Si borramos las tareas además con la opción -i, se nos preguntará antes de borrar:

$ crontab -ir
crontab: really delete usuario's crontab? (y/n) y
$

Todas las opciones anteriores las puede usar el root con la opción -u para trabajar con las tareas programadas de un usuario.

NOTA: En sistemas con arranque systemd las tareas programadas en los ficheros crontab se traducen automáticamente en temporizadores y unidades systemd mediante systemd-crontab-generator.