En Linux se pueden programar tareas con el servicio Cron, éste puede usarse tanto para la ejecución de aplicaciones como scripts en el momento que especifiquemos, por ejemplo en un intervalo de tiempo en concreto, como puede ser una vez al día. Te explicamos como usar crontab en Linux.
El archivo donde se almacenan las configuraciones de las tareas programadas es el crontab, que su nombre se proviene de “cron table”. En este archivo se guarda la configuración de cada tarea en una línea, y en cada línea se especifica el momento de ejecución y la tarea a realizar. A continuación detallamos la sintaxis:
* * * * * comando_a_ejecutar
- - - - -
| | | | |
| | | | +--- Día de la semana (0 - 7) (0 y 7 son domingo)
| | | +----- Mes (1 - 12)
| | +------- Día del mes (1 - 31)
| +--------- Hora (0 - 23)
+----------- Minuto (0 - 59)
El primer campo en la línea se refiere al minuto, para ello mostramos estos ejemplos:
* Cada minuto.
*/5 Cada 5 minutos.
2-10 Cada minuto entre 2 y 10 después de la hora (incluyendo ambos).
2,6,9 2, 6 y 9 minutos después de la hora.
El segundo campo en la línea se refiere a la hora, para ello mostramos estos ejemplos:
* Cada hora.
*/2 Cada 2 horas.
2-10 Cada hora desde las 2am hasta las 10am (incluyendo ambas).
2,6,9 A las 2am, 6am y 9am.
El tercer campo en la línea se refiere al día del mes, para ello mostramos estos ejemplos:
* Cada día.
*/2 Un día sí y uno no.
1 El primer día de cada mes.
1,15 El día 1 y el día 15 de cada mes
El cuarto campo en la línea se refiere al mes, para ello mostramos estos ejemplos:
* Cada mes.
*/2 Un mes si y uno no.
1 En enero.
1,6 En enero y junio.
El quinto campo en la línea se refiere al día de la semana, para ello mostramos estos ejemplos, teniendo en cuenta que la semana comienza en domingo con el número 0 y termina en sábado con el 6:
* Cada día de la semana.
0 Cada domingo.
6 Cada sábado.
1,5 Cada lunes y cada viernes.
Ejemplos de uso de crontab
Ejecutar un comando una vez al día a las 10:00 horas:
00 10 * * * /ruta/comando
Ejecutar un script cada hora en punto:
00 * * * * /ruta/script.sh
Ejecutar un script cada viernes a las 18:30 horas:
30 18 * * 5 /ruta/script.sh
Algunas distribuciones de Linux permiten usar formatos establecidos con palabras clave, estas son:
@reboot: Ejecuta el comando al iniciar el sistema.
@daily: Ejecuta una vez al día.
@weekly: Ejecuta una vez por semana.
@monthly: Ejecuta una vez al mes.
Por ejemplo, ejecutar un comando al haber reiniciado el equipo:
@reboot /ruta/comando
Si necesitas más ayuda para aprender o establecer el momento de ejecución de una tarea puedes hacer uso de Crontab.guru
¿Cómo editar el crontab de Linux?
Para editar en Linux el crontab de un usuario ejecutaremos en la terminal el siguiente comando:
crontab -e
Si queremos ejecutarlo como root podemos usar sudo:
sudo crontab -e
También podemos editarlo como root si nos hemos logueado con la cuenta de root:
crontab -e
También podemos editar el cron de un usuario de la siguiente forma, sustituyendo USER por el usuario en concreto, pero esto solamente podremos hacerlo si tenemos permisos para ello:
sudo crontab -e -u USER
Para ver las tareas del cron de nuestro usuario deberemos ejecutar el siguiente comando, también podemos realizarlo con sudo para ver el del root:
crontab -l
Para borrar todas las tareas del cron de un usuario deberemos ejecutar el siguiente comando:
crontab -r
Si quieres cambiar el editor de la terminal puedes ver el artículo Cambiar de editor de la terminal de Linux donde te explicamos como hacerlo.