Un trabajo Cron o Cron es un programador basado en el tiempo común en los sistemas Linux / Unix. Programa tareas de usuario específicas para que se ejecuten periódicamente en una fecha, hora o intervalos fijos. La mayoría de estas tareas son scripts para realizar funciones como copias de seguridad y más. Para crear estos trabajos cron, usamos los comandos crontab. Un crontab es un comando / utilidad de UNIX que se utiliza para crear y administrar trabajos cron.
Como verá a continuación, crear y editar un trabajo cron es bastante simple. La parte más sorprendente es que no necesita reiniciar cron o incluso su PC después de crear o editar un trabajo cron. Simplemente guarde el archivo y estará listo para comenzar.
Usos comunes de Cron Jobs
- Configuración de la hora del hardware: muchas computadoras utilizan el protocolo de hora de red para configurar la hora del sistema, pero no establece la hora del hardware. Con cron, puede configurar la hora del hardware en función de la hora del sistema.
- Programación de tareas y ejecución de programas que ejecutan programas diarios: con el servicio cron, puede ejecutar muchos servicios del sistema que necesitan un aviso diario como Logwatch.
- Limpieza de directorio automáticamente, ejecución de programas de respaldo y mucho más.
Partes básicas de un comando cron
La sintaxis estándar del crontab es la siguiente:
a b c d e NOMBRE DE USUARIO / ruta / a / salida del script
1.Los cinco campos especifican la hora y la fecha, junto con la repetición del trabajo:
-
- a: Minutos: (que van desde 0 - 59)
- B: Horas: (que van desde 0 - 23 )
- C: Días: (que van desde 0 - 31 )
- D: Meses: (que van desde 0 - 12 )
- mi: Días de la semana: (que van desde 0 - 7. )
- a: Minutos: (que van desde 0 - 59)
Nota: Los días comienzan con el lunes. 0 y 7 representan el domingo
2. NOMBRE DE USUARIO
: Recuerde reemplazar esto con su nombre de usuario
3. La ubicación específica y el script que ejecutará cron se especifican en el tercer segmento:
/ ruta / a / script
4. La última sección define la notificación al usuario al finalizar el trabajo como una forma de realizar un seguimiento de las tareas:
producción
Sin embargo, su bandeja de entrada puede estar llena de tareas menores que se canalizan con frecuencia. Para evitar esto, puede deshabilitar la salida automática de correo electrónico agregando la siguiente cadena a su comando cron:
> / dev / null 2> & 1 e.g a b c d e NOMBRE DE USUARIO / ruta / a / script> / dev / null 2> & 1
Además, cron utiliza cuatro valores más que se utilizan para especificar varios valores en un campo. Ellos son:
- Asterisco (*): Se refiere a todos los valores de un campo.
- La coma (,): Úselo para separar una lista de valores en el comando cron.
- Pizca (-): Especificar un rango de valores.
- Barra inclinada (/): divide un valor en diferentes pasos.
Configurar los trabajos cron
Los comandos crontab son responsables de crear y editar trabajos cron porque los archivos cron no deben editarse directamente. El crontab define cómo puede crear, editar, enumerar, depurar, instalar y desinstalar las tareas cron.
Antes de comenzar con los trabajos cron, es esencial asegurarse de que su escritorio o servidor Linux esté actualizado ejecutando los siguientes comandos:
actualización de sudo apt actualización de sudo apt
Si no tiene el paquete cron instalado en su sistema, instálelo con el siguiente comando:
sudo apt-get install cron
Cómo editar el archivo crontab?
Para completar el proceso, deberá configurar el trabajo cron. El usuario que inició sesión cuando se crea un trabajo cron se convierte automáticamente en el propietario. Eso se puede cambiar creando un propietario del trabajo que se encargará de administrar el trabajo cron, como veremos en esta publicación.
Para abrir el archivo de configuración crontab para el usuario actualmente conectado, ejecute el siguiente comando:
crontab -e
El sistema le pedirá que elija un editor adecuado. En nuestro caso, elegiremos la primera opción (editor nano).
Puede agregar una tarea programada por línea según sus preferencias.
Al agregar las tareas, termine guardando el archivo y salga. Todas las instrucciones proporcionadas serán leídas y ejecutadas por el demonio cron. Los cambios se aplicarán incluso sin reiniciar su sistema, ya que el repositorio se actualiza automáticamente.
Editar crontab para un usuario diferente
Crontab se puede editar para diferentes usuarios usando un comando en la siguiente sintaxis:
crontab -u otro nombre_usuario -e
Cómo usar caracteres especiales en los comandos crontab
Los personajes y los operadores dictan una mayor personalización de su sistema a medida que amplían las capacidades de una tarea cron.
- La barra se usa para dividir una cadena de tiempo en pasos específicos. Por ejemplo, para ejecutar una copia de seguridad cada 30 minutos, podemos usar:
* / 30 * * * *
- El asterisco (*) se utiliza para ejecutar todos los valores a ejecutar. Por ejemplo:
*/15***
- El guión (-) se usa para determinar el rango de actividades, como el número de días. Para
ejemplo, ejecutando el código a las 6 am todos los días de la semana, usaremos;
0 6 * * 1-5 / root / backup.sh
Aquí, 06 representa las 6 a. M. 1-5 representa el número de días (de lunes a viernes).
- Una coma especifica las instancias individuales en las que se debe ejecutar el código:
0 4 * * 2,4 / raíz / copia de seguridad.sh
El comando anterior ejecutará su código de secuencia de comandos a las 4 am los martes y jueves.
- También puede combinar varios comodines para personalizar aún más sus comandos. Por ejemplo, para ejecutar nuestro script cada dos días a los 35 minutos después de la hora, podemos usar el siguiente comando:
35 1-23 / 2 * * * / ruta / a / script / script.sh
1-23 especifica el rango de horas, / 2 establece el intervalo a cada dos horas.
Opciones de cron
- Lista de todos los trabajos cron
Es posible que desee enumerar los trabajos cron en su sistema sin desbloquear el archivo de configuración crontab. Esto se puede hacer iniciando su terminal y escribiendo el siguiente comando:
crontab -l
Ese comando enumera todos los trabajos cron presentes en su sistema.
- Eliminar todos los trabajos crontab
Para eliminar todos los comandos crontab, puede utilizar el siguiente comando:
crontab -r
- Eliminar un trabajo cron para otro usuario.
crontab -r -u otro-nombre de usuario
Usar cadenas en Crontab
Las cadenas son herramientas inmensamente útiles para los desarrolladores, ya que evitan la escritura repetitiva de segmentos de código. Afortunadamente, los crontabs admiten varios valores de cadenas. Incluyen:
@cada hora:
-igual que - "0 * * * *" (Se ejecuta una vez cada hora)@doce de la noche:
-igual que - "0 0 * * *" (Se ejecuta una vez cada día)@diario:
igual que la medianoche@semanal:
-igual que - "0 0 * * 0" (Se ejecuta una vez cada semana)@mensual:
-igual que - "0 0 1 * *" (Se ejecuta una vez cada mes)@anualmente:
-igual que - "0 0 1 1 *" (Se ejecuta una vez cada año)@anual:
similar a @anualmente@reiniciar:
Ejecutado una vez después de cada reinicio / reinicio / inicio.
Un buen ejemplo; Si tiene un script de respaldo que desea ejecutar todos los días, use el siguiente comando:
@diaria / ruta / a / script_de_seguridad.sh
Ejemplos de trabajos cron
Aquí hay una lista de trabajos cron básicos que se pueden usar al comenzar:
-
- Para ejecutar un script cada minuto:
* * * * * / su / script / ruta.sh
- Para ejecutar un script cada 40 minutos:
40 * * * * / su / script / ruta.sh
- Para ejecutar un script cada hora:
0 * * * * / su / script / ruta.sh
- Para ejecutar un script cada medianoche:
0 0 * * * / su / script / ruta.sh
- Para ejecutar una secuencia de comandos cada 23 minutos después de la medianoche, las 2 a. M. Y las 4 a. M. Todos los días:
23 0-23 / 2 * * * / su / script / ruta.sh
- Para ejecutar un script en 4.05 todos los domingos.
5 4 * * sol / su / script / ruta.sh
- Para ejecutar un script a las 10 pm durante la semana.
0 22 * * 1-5 / su / script / ruta.sh
- Para ejecutar una secuencia de comandos del 1 de diciembre a medianoche.
0 0 0 12 * / su / script / ruta.sh
- Para ejecutar un script el sábado a la medianoche.
0 0 * * 6 / su / script / ruta.sh
- Para ejecutar un script cada hora.
0 * * * * / su / script / ruta.sh
- Para ejecutar un script cada minuto:
Con estos ejemplos básicos, obtendrá una comprensión más profunda de la secuencia y cómo se puede modificar.
Limitar el acceso de Cron
Vemos que los trabajos cron pueden ser muy útiles, especialmente cuando desea automatizar sus tareas. Sin embargo, también puede ser arriesgado si el sistema permite que cualquier usuario cree un trabajo cron. Incluso si no afecta a los datos personales, algunos trabajos cron pueden requerir una cantidad considerable de recursos del sistema, lo que retrasa la PC. Para evitar tales escenarios, el administrador del sistema (usuario root) puede crear un / etc / cron.permitir
o / etc / cron.negar
el archivo que contiene solo usuarios que pueden 'crear / no crear' un trabajo cron.
La / etc / cron.permitir
el archivo contiene usuarios que pueden crear, editar, mostrar o eliminar archivos crontab. Si este archivo no existe, todos los usuarios pueden crear y administrar trabajos cron distintos a los de la / etc / cron.negar
expediente. Si ninguno de estos archivos está presente, se requieren privilegios de superusuario para ejecutar el comando crontab.
Ahora que ha impedido que los usuarios no root creen trabajos cron si ya tenían alguno, podría considerar agregar sus trabajos cron en el archivo crontab raíz. Pero aquí hay un acertijo: al agregar sus trabajos cron al crontab raíz, ¿no ejecuta eso sus trabajos cron como root?? Bueno, aquí viene la importancia del campo NOMBRE DE USUARIO que discutimos anteriormente en la sintaxis del comando cron. Por ejemplo, el siguiente comando:
0 * * * * fosslinux / ruta / a / script.sh
Se ejecutará como trabajo cron de usuario "fosslinux" y no como usuario root.
Conclusión
Ahora tiene una guía clara sobre el uso de trabajos Cron para automatizar varias tareas en su sistema. Eso no debería confundirte con las aplicaciones de inicio. Utilice los ejemplos anteriores para intentar automatizar scripts simples. Con el tiempo, puede combinar caracteres especiales y comodines para realizar tareas mucho más mundanas. Si recién está comenzando, sería genial leer nuestra publicación sobre el tutorial de scripting de bash con ejemplos que lo ayudarán a crear su primer script.