70 lines
3.7 KiB
Plaintext
70 lines
3.7 KiB
Plaintext
|
|
Utilizando crontab
|
|
|
|
Ejecutamos la edición del crontab con crontab -e, en algunas distros (como ubuntu) nos da la opcion de elegir el editor de textos que deseemos, los demás nos quedamos con vi. El archivo crontab lucirá algo asi.
|
|
# m h dom mon dow user command
|
|
donde:
|
|
- m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59
|
|
- h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.
|
|
- dom hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15
|
|
- dow significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.
|
|
- user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.
|
|
- command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable
|
|
|
|
Para que quedara claro unos cuantos ejemplos de tareas de cron explicados:
|
|
Ejecutará el script actualizar.sh a las 10:15 a.m. todos los días
|
|
15 10 * * * usuario /home/usuario/scripts/actualizar.sh
|
|
Ejecutará el script actualizar.sh a las 10:15 p.m. todos los días
|
|
15 22 * * * usuario /home/usuario/scripts/actualizar.sh
|
|
Ejecutará una actualización todos los domingos a las 10:00 a.m
|
|
00 10 * * 0 root apt-get -y update Usuario root
|
|
Usuario root ejecutará una actualización todos los domingos (sun) a las 10:45 a.m
|
|
45 10 * * sun root apt-get -y update
|
|
El día 20 de noviembre a las 7:30 el usuario correra el script
|
|
30 7 20 11 * usuario /home/usuario/scripts/actualizar.sh
|
|
El día 11 de noviembre a las 7:30 a.m. y que sea domingo, el usuario festejará su sysadmin (o sea a mí)
|
|
30 7 11 11 sun usuario /home/usuario/scripts/pastel_con_velitas.sh
|
|
Un molesto recordatorio cada minuto de cada hora todos los días (NO recomendable).
|
|
01 * * * * usuario /home/usuario/scripts/molestorecordatorio.sh
|
|
|
|
Igual se pueden manejar rangos especiales:
|
|
A las 5:30 de la tarde todos los días de lunes a viernes.
|
|
30 17 * * 1,2,3,4,5
|
|
A las 12 del día todos los días primero, quince y 28 de cada mes (ideal para nóminas)
|
|
00 12 1,15,28 * *
|
|
|
|
Si esto resulta confuso, crontab maneja cadenas especiales para definir estos rangos.
|
|
@reboot Ejecuta una vez, al inicio
|
|
@yearly ejecuta sólo una vez al año: 0 0 1 1 *
|
|
@annually igual que @yearly
|
|
@monthly ejecuta una vez al mes, el día primero: 0 0 1 * *
|
|
@weekly Semanal el primer minuto de la primer hora de la semana. 0 0 * * 0″.
|
|
@daily diario, a las 12:00A.M. 0 0 * * *
|
|
@midnight igual que @daily
|
|
@hourly al primer minuto de cada hora: 0 * * * *
|
|
|
|
Su uso es muy sencillo.
|
|
@hourly usuario /home/usuario/scripts/molestorecordatorio.sh
|
|
@monthly usuario /home/usuario/scripts/respaldo.sh
|
|
@daily root apt-get update && apt-get -y upgrade
|
|
|
|
Por último y no menos importante: Administracion de trabajos en cron
|
|
Remplaza el existente archivo crontab con un archivo definido por el usuario
|
|
crontab archivo
|
|
Editar el archivo crontab del usuario, cada linea nueva sera una nueva tarea de crontab.
|
|
crontab -e
|
|
Lista todas las tareas de crontab del usuario
|
|
crontab -l
|
|
Borra el crontab del usuario
|
|
crontab -d
|
|
Define el directorio de crontab del usuario (este debe tener permisos de escritura y ejecucion del usuario)
|
|
crontab -c dir
|
|
Prefijo para manejar el crontab de otro usuario, ejemplos:
|
|
crontab -u usuario
|
|
$ sudo crontab -l -u root
|
|
$ sudo crontab -e usuario2
|
|
#crontab -d -u usuario
|
|
|
|
Listar usuarios con tareas cron: "ls -la /var/spool/cron"
|
|
Sacar las tareas que ejecutan los usuarios y salvarla a texto plano: "crontab -l -u usuario__que_ejecuta_tarea > usuario_tareas_cron"
|