Hacer que las cosas sucedan en un horario regular y predecible es importante en las computadoras. Es importante porque, como humanos, a veces podemos ser malos para recordar hacer las cosas de manera confiable porque nos distraemos, tenemos demasiado en mente o estamos de vacaciones. Las computadoras son realmente buenas para hacer las cosas según un cronograma, pero un ser humano tiene que programar la computadora antes de que la computadora actúe.
En cierto modo, el cron
system es una introducción fácil y rudimentaria a la programación. Puedes hacer que tu computadora haga lo que quieras que haga simplemente editando un archivo. Ni siquiera tiene que saber dónde se guarda el archivo. Solo tiene que escribir un comando simple, ingresar la "receta" que desea que siga su computadora y guardar su trabajo. A partir de ese momento, su computadora ejecuta sus instrucciones en el momento especificado hasta que se le indica que se detenga.
Por diseño, cron
no es un sistema complejo. Esto es lo que necesita saber al respecto.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
¿Qué es cron?
El cron
El comando es tan omnipresente en Linux y Unix, y se ha imitado y reinventado con tanta frecuencia que es casi un término genérico para algo que sucede en un horario . Es una forma de automatización, y aunque existen diferentes implementaciones (cron de Dillon, cron de Vixie, chrony y otros), y variaciones como anacron
y los temporizadores systemd, la sintaxis y el flujo de trabajo se han mantenido esencialmente iguales durante décadas.
Cron funciona en un sistema de "spool", al igual que las impresoras y el correo electrónico. Si no sabía que las impresoras y el correo electrónico usan un spool, está bien porque el objetivo de un archivo de spool es que no debe pensar mucho en él. En un sistema Linux, el directorio /var/spool
está diseñado como un eje central para archivos importantes pero de bajo nivel con los que el usuario no debe interactuar directamente. Uno de los spools administrados en /var/spool
es cron
tablas o "crontab" para abreviar. Cada usuario, incluido usted mismo, en un sistema Linux tiene un crontab. Los usuarios pueden editar, ver y eliminar su propio crontab. Además, los usuarios pueden usar su crontab para programar tareas. El cron
el propio sistema supervisa los crontabs y se asegura de que cualquier trabajo enumerado en un crontab se ejecute en el momento especificado.
Editar configuración de cron
Puedes editar tu crontab usando el crontab
comando junto con -e
(para editar ) opción. Por defecto, la mayoría de los sistemas invocan el vim
editor de texto. Si usted, como yo, no usa Vim, entonces puede configurar un editor diferente para usted en su ~/.bashrc
expediente. Configuré el mío en Emacs, pero también puedes probar con Nano, Kate o cualquiera que sea tu editor favorito. El EDITOR La variable de entorno define qué editor de texto usas en tu terminal, mientras que VISUAL variable define qué editor usas en un modo gráfico:
export EDITOR=nano
export VISUAL=kate
Actualice su sesión de shell con su nueva configuración:
$ source ~/.bashrc
Ahora puedes editar tu crontab con tu editor preferido:
$ crontab -e
Programar una tarea
El cron
es esencialmente un sistema de calendario. Puedes decirle a cron
con qué frecuencia desea que se ejecute un trabajo utilizando cinco atributos diferentes:minuto, hora, fecha, mes, día de la semana. El orden de estos atributos es estricto y no necesariamente intuitivo, pero puede pensar en ellos como filtros o máscaras. De forma predeterminada, puede pensar que todo está configurado para siempre o cada . Esta entrada ejecutaría touch /tmp/hello
en la parte superior de cada minuto durante cada hora de cada día durante todo el año:
* * * * * touch /tmp/hello
Puede restringir este programa integral estableciendo definiciones específicas para cada atributo. Para que el trabajo se ejecute en la marca de media hora de cada hora, establezca los minutos en 30 :
30 * * * * touch /tmp/hello
Puede restringir aún más esta instrucción con una hora específica. Este trabajo se ejecuta a las 3:30 a. m. todas las mañanas:
30 3 * * * touch /tmp/hello
También puede hacer que el trabajo se ejecute solo el primer día de cada mes:
30 3 1 * * touch /tmp/hello
Puede configurar un mes usando 1 para enero hasta 12 para diciembre, y puede configurar un día usando 0 para domingo hasta 6 para sábado. Este trabajo se ejecuta a las 3:15 durante el mes de abril, solo los lunes:
15 3 * 4 1 touch /tmp/hello
Establecer incrementos
Todas estas configuraciones coinciden con un valor exactamente . También puedes usar cron
notación para ejecutar trabajos después de un paso de tiempo determinado. Por ejemplo, puede ejecutar un trabajo cada 15 minutos:
*/15 * * * * touch /tmp/hello
Podría ejecutar un trabajo a las 10 a. m. cada tres días:
* 10 */3 * * touch /tmp/hello
Podría ejecutar un trabajo cada seis horas:
* */6 * * * touch /tmp/hello
Taquigrafía de Cron
cron
moderno Las implementaciones han agregado una abreviatura conveniente para los horarios comunes. Estos son:
@hourly
@daily
@weekly
@monthly
@yearly or @annually
Lista de trabajos cron
Usando el crontab
comando, puede ver una lista de su cron
programado trabajos:
$ crontab -l
15 3 * 4 1 touch /tmp/hello
Eliminar un crontab
Cuando haya terminado con un crontab, puede eliminarlo con -r
opción:
$ crontab -r -i
El -i
opción significa interactivo . Le solicita confirmación antes de eliminar el archivo.
Qué puede hacer cron
Una cosa es saber cómo usar cron
, pero otra cosa es saber para qué usarlo. El caso de uso clásico es un buen plan de respaldo. Si su computadora está encendida la mayor parte del día o todo el día y toda la noche, puede programar una copia de seguridad de rutina de una partición importante. Ejecuto una aplicación de respaldo llamada rdiff-backup
en mi partición de datos principal todos los días a las 3 a. m.:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
Otro uso común es el mantenimiento del sistema. En mi escritorio de Slackware, actualizo mi catálogo de repositorio local todos los viernes por la tarde:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
También podría ejecutar un script de Ansible a las 15:00 cada tres días para ordenar mi carpeta de Descargas:
$ crontab -l | grep ansible
* 15 */3 * * ansible-playbook /home/seth/Ansible/cleanup.yaml
Una pequeña inversión en la salud de su entorno informático es muy útil. Hay scripts de eliminación de duplicados, tamaño de archivo y /tmp
monitores de directorios, redimensionadores de fotos, transferencias de archivos y muchas más tareas menores que puede programar para que se ejecuten en segundo plano para ayudar a mantener su sistema despejado. Con cron
, su computadora puede cuidar de sí misma en formas que solo desearía que mi apartamento físico lo hiciera.
Recordar la configuración de cron
Además de pensar en por qué necesitas cron
, lo más difícil de cron
en mi experiencia ha sido recordar su sintaxis. Repítete esto una y otra vez hasta que lo hayas aprendido de memoria:
Minutos, horas, fecha, mes, día de la semana.
Minutos, horas, fecha, mes, día de la semana.
Minutos, horas, fecha, mes, día de la semana.
Mejor aún, descargue nuestra hoja de referencia gratuita para tener la llave a mano cuando más la necesite.