El archivo crontab almacena los trabajos cron en Linux. Los trabajos cron (cron) se ejecutan periódicamente a una hora, fechas e intervalos fijos. Su equivalente en Windows es la tarea programada. Todas las tareas repetitivas se pueden programar usando cron.
El archivo Crontab es el archivo de configuración que contiene información sobre la hora y el comando / scripts para ejecutar.
En este tutorial aprendemos Crontab de Linux con ejemplos a programar trabajos.
Sintaxis de Crontab
Cada línea del archivo crontab representa un trabajo. Contiene cinco campos seguido de un comando de shell o script ejecutar.
Sintaxis:
* (Minute) *(Hour) * (Day of the Month) *(Month of the Year) *(Day of the Week) username <path to command/script to execute
>
* | Minuto | El valor de este campo está entre 0 y 59 |
* | Hora | El valor de este campo está entre 0 y 23 |
* | Día del mes | El valor de este campo está entre 1 y 31 |
* | Mes del año | El valor de este campo está entre 1 y 12. También se aceptan los 3 primeros alfabetos del mes, como jan, feb, mar. |
* | Día de la semana | El valor de este campo está entre 0 y 7. Donde 0 y 7 es el domingo. 1 es lunes, 2 es martes, igualmente |
Campos de crontab
Definir varios valores o rangos
Para definir varios valores y rangos, use coma (,) y guión (-). El asterisco examplecoincide con cualquier cosa. Para
, para mostrar valores múltiples use 1,2,3 o mon, tue, wed y para rangos puede usar 1-3 o mon-wed.
Cómo usar crotab crontab
El comando se usa para abrir y editar / agregar trabajos cron. El demonio cron que se ejecuta en Linux ejecuta trabajos programados a la hora definida en crontab (tabla cron). El archivo crontab principal de todo el sistema es / etc / crontab. Cron es por defecto
instalado en la mayoría de las distribuciones de Linux. Cada usuario del sistema Linux puede administrar sus propios trabajos cron. Cada cron de usuario se almacena en / var / spool / cron / crontabs /. El demonio cron ejecuta crontab del sistema y del usuario.
El demonio Cron tiene un $ PATH predeterminado definido, que puede encontrar en / etc / crontab. Si no está definido, use la ruta absoluta o agregue a la variable cron $ PATH. MAILTO
La notificación de correo cron de forma predeterminada se envía al propietario del crontab. Para cambiar esto, edite
Variable ambiental. Registros cron están almacenados en / var / log / syslog en sistemas Ubuntu / Debian y en / var / log / cron
en Redhat / Rocky Linux. Puede filtrar el archivo de registro usando el comando grep para verificar que el trabajo cron se ejecutó correctamente o no.
1. Editar / agregar Crontab
$ crontab -e
Para editar (trabajos existentes) o agregar un nuevo cron, use el comando crontab -e. Esto abrirá un editor para el usuario actual.
$ crotab -u username -e
Para editar el archivo crontab de otro usuario, escriba:
O simplemente ejecute el comando crontab -e iniciando sesión como ese usuario.
2. Lista de trabajos Cron
$ crontab -l
Para enumerar todos los trabajos del usuario actual, escriba:
$ crontab -u -l
Para enumerar todos los trabajos cron para un usuario específico, escriba:
3. Eliminar trabajos cron
# crontab -r
Para eliminar todos los trabajos cron del usuario actual, ejecute el siguiente comando:
Nota: Esto eliminará todos los trabajos cron sin pedir confirmación.
# crontab -ir
Si desea eliminar de forma interactiva, debe utilizar el siguiente comando:
Ejemplos de trabajos de Crontab
Veamos algunos ejemplos de crontab para programar trabajos cron.
1. Ejecute trabajos cron cada 12 horas
0 */12 * * * /scripts/test.sh
Esto ayuda a realizar comprobaciones periódicas del sistema o realizar copias de seguridad. Para programar una tarea para que se ejecute cada 12 horas, escriba:
2. Ejecute el trabajo cron cada 5 minutos
*/5 * * * * /scripts/test.sh
A veces necesita monitorear su sistema cada n minutos. Utilice la siguiente expresión para ejecutar la tarea cada 5 minutos.
3. Ejecute el trabajo cron todos los días a las 2 a. M.
0 2 * * * /script/test.sh
La copia de seguridad diaria se puede programar para una hora específica. La siguiente expresión ejecuta el trabajo cron a las 2 am todos los días.
0 14 * * * /script/test.sh
Para programar un trabajo cron todos los días a las 2 pm, cron use un reloj de 24 horas.
30 12 * * * /script/test.sh
4. Ejecute el trabajo cron todos los días a las 12:30 a. M.
5. Ejecute el trabajo cron cada minuto examplePara
* * * * * /scripts/test.sh
, tiene un script que debe ejecutarse cada minuto, use la siguiente expresión.
6. Ejecute el trabajo cron en determinados minutos
2,15,30 * * * * /scripts/test.sh
Utilice la siguiente expresión cron para ejecutar el script en los minutos 2, 15 y 30.
7. Ejecute el trabajo cron para que se ejecute todos los sábados a la 1 a. M.
0 1 * * sat /scripts/test.sh
Esto le ayuda a ejecutar la copia de seguridad el sábado a una hora específica. La siguiente expresión ayuda a cron el trabajo todos los sábados a la 1 a. M.
8. Ejecute el trabajo cron para que se ejecute en meses específicos
0 1 1 jan,apr,jun * /script/test.sh
Para ejecutar trabajos cron a la 01:00 del primer día del mes en enero, abril y junio.
9. Ejecute el trabajo cron en los días seleccionados
0 4 * * sat,sun /script/test.sh
Para ejecutar trabajos cron en días seleccionados, como sábados y domingos, use:
10. Ejecute trabajos cron a determinadas horas del día.
0 9-17 * * * /script/test.sh
En el minuto 0 después de cada hora del 9 al 17
11. Ejecute el trabajo cron dos veces los sábados y domingos.
0 2,23 * * sat,sun /scripts/test.sh
Los trabajos cron permiten ejecutar tareas en horas específicas en días específicos
12. Ejecute el trabajo cron durante un intervalo de lunes a viernes.
0 2 * * mon-fri /scripts/test.sh
A las 02:00 todos los días de la semana de lunes a viernes.
13. Ejecute el trabajo cron mensualmente
@monthly /scripts/test.sh
En lugar de usar 0 0 1 * *, puede usar un atajo usando @monthly. Funciona a las 00:00 del primer día del mes. Alternativamente, puede colocar su secuencia de comandos en /etc/cron.monthly/.
14. Ejecute el trabajo cron semanalmente
@weekly /scripts/test.sh
En lugar de usar 0 0 * * mon, puede usar un atajo usando @weekly. Funciona a las 00:00 del lunes. Alternativamente, puede colocar su secuencia de comandos en /etc/cron.weekly/.
15. Ejecute el trabajo cron a diario
@daily /scripts/test.sh
En lugar de usar 0 0 * * *, puede usar un atajo usando @daily. Funciona a las 00:00 todos los días. Alternativamente, puede colocar su secuencia de comandos en /etc/cron.daily/.
16. Ejecute el trabajo cron cada hora
@hourly /scripts/test.sh
En lugar de usar 0 * / 1 * * *, puede usar el atajo usando @hourly. Funciona a los 0 minutos después de cada hora. Alternativamente, puede colocar su secuencia de comandos en /etc/cron.hourly/.
17. Ejecute el trabajo cron al reiniciar
@reboot /scripts/test.sh
Para ejecutar una tarea en cada reinicio del sistema, use @reboot string. El script se ejecutará después de reiniciar.
18. Ejecute el trabajo cron cada 30 segundos
Cron solo permite funcionar durante un mínimo de 60 segundos. No existe un método sencillo para programar un trabajo para que se ejecute cada 30 segundos.
Pero podemos utilizar una solución alternativa aumentando el retraso en 30 segundos.
* * * * /scripts/run.sh * * * * dormir 30; /scripts/run.sh
19. Ejecute un trabajo cron y redirija la salida.
*/3 * * * * /usr/bin/php /script/run.php >> /var/log/run.log
Esto ejecutará el script php cada 3 minutos y redirigirá la salida a un archivo.
20. Ejecute el trabajo cron para ejecutar varios comandos
0 */12 * * Sun command1 && command2
Para ejecutar cron para ejecutar múltiples comandos, use el operador && entre los comandos.
Copia de seguridad de trabajos cron
# crontab -l > /backup/cron/root-bckup
Para hacer una copia de seguridad de cron, use el siguiente comando
.TXT
# crontab -u userName -l > /backup/cron/user-bckup.txt
Para hacer una copia de seguridad del cron de un usuario específico, escriba:
# crontab /backup/cron/root-backup.txt
Para restaurar cron desde el archivo de respaldo, simple uso:
Conclusión
En este tutorial, aprendimos sobre crontab en Linux y ejemplos para programar trabajos cron.
Si tiene algún comentario o sugerencia, comente a continuación.