Cron Jobs Complete Tutorial para principiantes

Cron Jobs Complete Tutorial para principiantes
CRON es la utilidad más útil en un sistema operativo Linux o unix que permite ejecutar comandos o scripts en un horario determinado sin ninguna intervención del usuario. Los comandos y scripts programados también se nombran como trabajos cron. Se utiliza principalmente para automatizar trabajos recurrentes como ejecutar copias de seguridad programadas, limpiar archivos temporales, mantenimiento del sistema y otros trabajos recurrentes. Es similar al planificador de tareas en Windows OS.

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:

  • El primero * corresponde a minutos (0-59)
  • El segundo * corresponde a horas (0-23)
  • El tercero * corresponde al día del mes (1-31)
  • El cuarto * corresponde al mes del año (1-12)
  • El quinto * corresponde al día de la semana (0-6, de domingo a sábado)

Para especificar múltiples valores en un campo, use los siguientes símbolos del operador:

  1. Asterisco (*): Para especificar todos los valores posibles para un campo
  2. Estrellarse (-): A sPecify un rango de valores
  3. La coma (,): Para especificar una lista de valores
  4. Separador (/): Para especificar un valor de paso

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:

  • crontab -e Para editar el archivo CRONTAB del usuario actual
  • crontab -l Para mostrar el contenido del archivo CRONTAB
  • crontab -u [nombre de usuario] Para editar el archivo CRONTAB de cualquier otro usuario
  • crontab -r Para eliminar el archivo CRONTAB del usuario actual
  • crontab -i Para mostrar un mensaje antes de eliminar el archivo CRONTAB del usuario actual

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:

  1. @cada hora: Para ejecutar un trabajo una vez cada hora,.mi., "0 * * * *"
  2. @medianoche: Para ejecutar un trabajo una vez al día, yo.mi., "0 0 * * *"
  3. @a diario: Igual que la medianoche
  4. @semanalmente: Para ejecutar un trabajo una vez cada semana,.mi., "0 0 * * 0"
  5. @mensual: Para ejecutar un trabajo una vez al mes, yo.mi., "0 0 1 * *"
  6. @anualmente: Para ejecutar un trabajo una vez al año,.mi., "0 0 1 1 *"
  7. @anual: Igual que @annually
  8. @reiniciar: Para ejecutar un trabajo una vez en cada startup

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.

  • /etc/cron.a diario
  • /etc/cron.cada hora
  • /etc/cron.mensual
  • /etc/cron.semanalmente

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.

  • /etc/cron.permitir - Agregar usuarios (uno por línea) a quien desea permitir el acceso a los comandos CRONTAB. Estos usuarios pueden ejecutar trabajos de programación.
  • /etc/cron.denegar - Agregar usuarios (uno por línea) a quien desea negar el acceso a los comandos CRONTAB. Estos usuarios no pueden ejecutar trabajos programados.

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.