Tareas Programadas - Crontab

Automatizar tareas o Programar Tareas en Debian.

 Como editar el archivo de tareas programadas - cron

Comandos para editar crontab

  • Para listar las tareas creadas: $ crontab -l
  • Para editar las tareas programadas: $ crontab -e
  • Para definir el directorio de crontab del usuario (este debe tener permisos de escritura y ejecucion del usuario) con -c carpeta: $ crontab -c "directorio" 
  • Para borrar las tareas que ya estan programadas: $ crontab -d
  • Para editar las tareas programadas de otro usuario: $ crontab -u "usuario"
    • Para listar tareas de otro usuario: $ crontab -l -u "usuario"
    • Para editar tareas de otro usuario: $ crontab -e -u "usuario"
    • Para borrar las tareas de otro usuario: $ crontab -d -u "usuario"

Manejo del fichero crontab

Se ha de introducir con este tipo de estructura:
  * * * * * /home/script.sh
  | | | | |   |
  | | | | |   L-> nombre del script o comando a ejecutar.
  | | | | L ----> dia de la semana del 0 al 7; el 0=domingo
  | | | L ------> dia del mes del 1 al 31
  | | L --------> mes del 1 al 12
  | L ----------> horas de 0 a 23
  L ------------> minutos de 0 a 59

Operadores

Con los operadores es posible especificar varios valores en un campo;

existen tres posibles valores:

  • El asterisco (*): Este operador abarca todos los valores posibles; un asterisco en un campo minutos es igual a ejecutar el script cada minuto.
  • La coma (,): Este operador permite especificar una lista de valores; por ejemplo si queremos ejecutar un comando los lunes y miércoles: «1,3» en el campo de los días.
  • El guión (-): Este operador especifica una serie de valores de manera agrupada o rango, con una cota inferior y una superior; por ejemplo si quisiéramos ejecutar un comando de lunes a viernes podríamos colocar el siguiente valor en el campo día: «1-5», que es equivalente a 1,2,3,4,5.

Palabras reservadas (sustituyen a todos los asteriscos)

El mayor inconveniente, si son tareas pesadas y cosume muchos recursos de la máquina, es que no tendriamos un horario demasiado exacto, lo que con hardware antiguo o recursos limitados, ralentizaria el manejo del pc o servidor.

  • @reboot - Se ejecuta una sola vez al iniciar la máquina.
  • @yearly/@annually - Se ejecuta una vez al año.
  • @monthly - Se ejecuta una vez al mes.
  • @weekly - Se ejecuta una vez a la semana.
  • @dayly/@midnight - Se ejecuta una vez al día.
  • @hourly - Se ejecuta cada hora.

El servicio

La mayoría de las veces, suele ser necesario reiniciar el servicio crontab, para que los cambios surgan efecto.

Comando para saber si el servicio crontab esta corriendo:
#/etc/init.d/cron status
#service cron status

Comando para arrancar el servicio crontab:
#/etc/init.d/cron start
#service cron start

Comando para saber si el servicio crontab esta corriendo:
#/etc/init.d/cron restart
#service cron restart

Comando para detener el servicio crontab si esta corriendo:
#/etc/init.d/cron stop
#service cron stop

Comando para recargar el archivo crontab:
(con init.d funciona con usuario sin privilegios)
$ /etc/init.d/cron reload
#service cron reload

Comando para asegurar que el servicio crontab quede habilitado tras un reinicio.
$ sudo rcconf
# rcconf
O mediante la herramienta update-rc.d
$ sudo update-rc.d cron defaults
# update-rc.d cron defaults

Fuentes:

[1] - https://nksistemas.com/crear-un-script-simple-y-ejecutarlo-con-cron-crontab-en-tu-linux

[2] (EN) - https://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/

Entradas populares de este blog

Comprobar estado del software RAID en linux y mdadm

Cambiar idioma por defecto en Devuan (NOT RUN)

Teoria de Bash - Scripting