En este tutorial, le proporcionaremos la introducción básica de todo lo que necesita comprender para programar un trabajo con Cron. Esto incluye la sintaxis básica de cron, editar archivo crontab, programar un trabajo con cron con pocos ejemplos, ver el trabajo cron, etc.
Conceptos básicos del trabajo cron
Entendamos algunos conceptos básicos de un trabajo cron.
Que es crond?
Crond es el demonio en el sistema Linux que se ejecuta en segundo plano y verifica cada minuto para ver si hay algún trabajo programado en ese momento. Si lo hay, realiza ese trabajo, de lo contrario permanece inactivo.
Sintaxis del trabajo cron
La sintaxis para el trabajo cron es la siguiente:
* * * * * * comando/script
Desde la izquierda:
Para especificar múltiples valores en un campo, use los siguientes símbolos del operador:
Edición del archivo CRONTAB
Crontab es un archivo que contiene los trabajos programados en una sintaxis específica. Hay dos tipos de archivos crontab; Uno para trabajos cron específicos del sistema y el otro para trabajos cron específicos del usuario.
Trabajos cron del sistema
Los trabajos cron de todo el sistema se encuentran en el /etc/crontab archivo y /etc/cron.d directorio, y se realizan /etc/cron.cada hora, /etc/cron.a diario, /etc/cron.semanalmente y /etc/cron.mensual. Solo un administrador del sistema puede acceder a estos archivos.
Un administrador del sistema puede definir un trabajo cron utilizando el siguiente comando:
$ nano /etc /crontab
Aquí está la sintaxis del trabajo en el /etc/crontab archivo:
# min hr Dayof Month Month Dayofweek Comando de nombre de usuario
* * * * * * user1 ifconfig
Trabajos cron específicos del usuario
Los trabajos CRON específicos del usuario se encuentran en el /var/spool/cron/crontabs directorio. Aunque puede editar estos trabajos manualmente, se recomienda editar estos trabajos utilizando el comando crontab -e.
Un usuario estándar puede definir un trabajo cron utilizando el siguiente comando:
$ crontab -e
Por ejemplo, si ha iniciado sesión como un usuario de "prueba", ejecutar el comando CRONTAB -E editará el archivo CRONTAB para el usuario de "prueba". Del mismo modo, si ha iniciado sesión como usuario root, el comando CRONTAB -E editará el archivo CRONTAB para el usuario root.
Emita el siguiente comando en el terminal para editar el archivo CRONTAB para cualquier otro usuario:
$ sudo crontab -u-mi
Por ejemplo, si ha iniciado sesión como un usuario "Test1" y desea editar el archivo CRONTAB para el usuario "Test2", el comando sería:
$ sudo crontab -u test2 -e
Aquí está la sintaxis del trabajo cron que se puede agregar en el archivo CRONTAB:
# m h Dayof Month Month Dayofweek Comando
* * * * * ifconfig
Puede ver en trabajos específicos del usuario que no hay "nombre de usuario" archivado.
Comandos de Crontab
El comando CRONTAB se usa para editar, enumerar y eliminar los trabajos cron:
Programando un trabajo con Cron
Con Cron, puede ejecutar un trabajo en una hora, fecha e intervalos específicos con una unidad mínima en minutos, I.mi., puedes ejecutar un trabajo cada minuto.
Para programar un trabajo con Cron, abra el archivo CRONTAB utilizando el método discutido en la sección anterior. Una vez que haya abierto el archivo crontab, se le pedirá que seleccione un editor de texto. Escriba un número para elegir su editor de texto preferido. Desplácese hacia abajo hasta la parte inferior del archivo y agregue trabajos en la sintaxis descrita anteriormente. Cada línea en un archivo especifica un comando. Las primeras cinco entradas en la línea especifican la hora programada, y la última entrada especifica qué comando o script debe ejecutarse.
Ejemplo:
La siguiente línea en el archivo CRONTAB programará el trabajo de Cron para ejecutar el comando/script en cada 30 minuto después de las 5 horas cada día de la semana de lunes a sábado.
*/30 5 * * 1-6 comando/script
Minutos
En este campo, especificamos los minutos cuando queremos que se ejecute el comando. Se especifica de 0 a 59. El * en este campo significa ejecutar el trabajo cada minuto. En la línea de Crontab anterior, el */30 le dice al trabajo cron que ejecute el comando especificado/script cada 30 minutos.
Horas
En este campo, especificamos las horas en que queremos que se ejecute el comando. Se especifica de 0 a 23. El * en este campo significa ejecutar el trabajo cada hora. En la línea de Crontab anterior, el valor 5 le dice al trabajo cron que ejecute el comando/script especificado cada cinco horas.
Dia del mes
En este campo, especificamos los días particulares de meses cuando queremos que se ejecute el comando. Se especifica de 1 a 31. El * en este campo significa todos los días. En la línea de Crontab anterior, * le dice al trabajo cron que ejecute el comando/script especificado todos los días.
Mes del año
En este campo, especificamos los meses particulares en los que queremos que se ejecute el comando. Se especifica de 1 a 12. El * en este campo significa cada mes. En la línea de Crontab anterior, * le dice al trabajo cron que ejecute el comando/script especificado todos los meses.
Día de la semana
En este campo, especificamos los días particulares de la semana en que queremos que se ejecute el comando. Se especifica de 0 a 6 de domingo a sábado (0 para el domingo y 6 para el sábado). El * en este campo significa todos los días en una semana. En la línea de Crontab anterior, * le dice al trabajo cron que ejecute el comando/script especificado todos los días en una semana.
Ejemplos de trabajos cron
Aquí hay algunos ejemplos de trabajos cron:
Ejecutar un trabajo cron cada 15 minutos
Para programar un trabajo cron para ejecutar cada 15 minutos, agregue la línea a continuación en el archivo CRONTAB:
*/15 * * * * comando/script
Ejecutar un trabajo cron a las 5 am todos los días
Para programar un trabajo de Cron para ejecutar a las 5 am todos los días, agregue la línea a continuación en el archivo CRONTAB:
0 5 * * * comando/script
Ejecutar un trabajo cron a las 5 pm todos los días
Para programar un trabajo de Cron para ejecutar a las 5 pm todos los días, agregue la línea a continuación en el archivo CRONTAB:
0 17 * * * comando/script
Ejecutar un trabajo cron a las 9 am el primer día de cada mes
Para programar un trabajo de Cron para funcionar a las 9 am el primer día de cada mes, agregue la línea a continuación en el archivo CRONTAB:
0 9 1 * * comando/script
Ejecutar un trabajo cron cada hora cada 15 de marzo
Para programar un trabajo cron cada hora cada 15 de marzo, agregue la línea a continuación en el archivo CRONTAB:
0 * 15 3 * Comando/script
Ejecutar un trabajo cron cada 5 horas
Para programar un trabajo cron cada 5 horas, agregue la línea a continuación en el archivo CRONTAB:
0 */5 * * * comando/script
Ejecutar un trabajo cron cada 15 minutos
Para programar un trabajo cron para ejecutar cada 15 minutos, agregue la línea a continuación en el archivo CRONTAB:
*/15 * * * *
Usando cuerdas
Las siguientes cadenas también se pueden usar para definir un trabajo:
Por ejemplo, para ejecutar un script o comando cada semana, la entrada en el archivo CRONTAB sería:
@Comando/script de Weekly
Directorios cron predefinidos
Hay algunos directorios CRON predefinidos en Linux donde los scripts almacenados se ejecutan automáticamente. Si colocamos algún script en estos directorios, se ejecutará automáticamente en el momento configurado.
Por ejemplo, para ejecutar un script una vez al mes, deberá colocarlo en el /etc /cron.mensual.
Ver trabajos cron
Ver trabajos para el usuario actual
Use el siguiente comando para ver todos los trabajos cron programados para el usuario actual:
$ crontab -l
Ver trabajos para los usuarios de raíz
Para ver todos los trabajos programados del usuario raíz, emita el siguiente comando en la terminal:
$ cat /etc /crontab
Deberá iniciar sesión como usuario root o ejecutar el comando como sudo.
Ver trabajos para los otros usuarios
Para ver todos los trabajos programados de un usuario específico, emita el siguiente comando en el terminal que reemplaza el nombre de usuario real:
$ sudo crontab -u-l
Para ejecutar este comando, necesitará privilegios de sudo.
Ver trabajos de cron por hora
Para ver todos los trabajos cron que están configurados para ejecutarse por hora, emita el siguiente comando en la terminal:
$ ls -la /etc /cron.cada hora
Ver trabajos diarios cron
Para ver todos los trabajos cron que se configuran para ejecutarse diariamente, emita el siguiente comando en la terminal:
$ ls -la /etc /cron.a diario/
Ver trabajos semanales de cron
Para ver todos los trabajos cron que están configurados para ejecutarse semanalmente, emita el siguiente comando en la terminal:
$ ls -la /etc /cron.semanalmente/
Ver trabajos mensuales de cron
Para ver todos los trabajos cron que están configurados para ejecutarse mensualmente, emita el siguiente comando en la terminal:
$ ls -la /etc /cron.mensual/
Copia de seguridad de todos los trabajos cron
Se recomienda mantener una copia de seguridad de todos los trabajos cron en un archivo para que pueda recuperarse en caso de eliminación. Para hacer una copia de seguridad de todos los trabajos actuales, use el operador de redirección para redirigir la salida de CRONTAB -L a un archivo.
$ crontab -l> backup_cron.TXT
Eliminar todos los trabajos cron programados
Para eliminar todos los trabajos cron programados, use la bandera -r de la siguiente manera:
$ crontab -r
Permiso cron
Podemos limitar el comando de acceso a CRONTAB a través de dos archivos: / etc/cron.Permitir y / etc / cron.denegar.
Generadores de sintaxis de Crontab
Hay algunos sitios web que permiten generar sintaxis para crontabs. Estos sitios web hacen que sea más fácil generar expresión de crontab sin tener que recordar la sintaxis. Aunque hay varios sitios web disponibles para generadores de sintaxis como CrontabGenerator.com, crontab-generador.org y cronmaker.comunicarse. El que prefiero y encontré útiles es el crontab.gurú. Basado en la entrada del usuario, genera una expresión de CRONTAB que puede copiar paste en el archivo CRONTAB.
Conclusión
En este tutorial, hemos explicado los conceptos básicos de los trabajos cron, su sintaxis y cómo configurarlo. También hemos discutido cómo ver los trabajos cron, crear una copia de seguridad y eliminarlos si ya no es necesario.