Cómo programar tareas en Linux con Cron y Crontab

  • Joseph Goodman
  • 0
  • 2956
  • 242
Anuncio

Sabía usted que Cazarecompensas se establece en 2019? ¡Eso es dentro de tres años! Por no mencionar Regreso al futuro 2, donde viajan en el tiempo hasta 2015. Sin embargo, no tenemos autos voladores y no hay replicantes entre nosotros (que yo sepa).

Es fácil sentirse decepcionado con la tecnología actual cuando la comparamos con representaciones ficticias del futuro. Aún así, en la actualidad, nuestros teléfonos, computadoras e incluso casas pueden hacer cosas increíbles 5 proyectos de automatización del hogar para comenzar con su casa inteligente 5 proyectos de automatización del hogar para comenzar con su casa inteligente Cuando se trata de crear casas inteligentes, la mayoría de las personas Simplemente no sé por dónde empezar. Aquí hay cinco proyectos básicos para el hogar inteligente para principiantes que puede construir en este momento. . La capacidad de automatizar tareas es una de ellas..

Cada usuario de Linux puede beneficiarse de las tareas de programación, ya sea que estén relacionadas con el sistema (como limpiar registros antiguos y actualizar paquetes). Cómo actualizar una o todas las aplicaciones en Linux en segundos Cómo actualizar una o todas las aplicaciones en Linux en segundos El terminal de Linux simplifica la actualización de una sola aplicación en su computadora, o aplica todas las actualizaciones disponibles a la vez. Aquí le mostramos cómo hacerlo) o atiende al usuario (revisando el correo electrónico, descargando podcasts ...). Los usuarios de Windows han tenido Tareas aburridas del Programador de tareas 4 que puede automatizar con el Programador de tareas Windows 4 Tareas aburridas que puede automatizar con el Programador de tareas de Windows Su tiempo es demasiado valioso para perderlo con tareas repetitivas. Permítanos mostrarle cómo automatizar y programar tareas. También tenemos algunos buenos ejemplos. desde Windows 95. La utilidad que hace el mismo trabajo en Linux se llama cron, y aquí explicaremos cómo usarla.

¿Qué es Cron??

Cron es un servicio del sistema que se ejecuta en segundo plano, verifica las tareas programadas y las ejecuta si encuentra alguna. Las tareas, también llamadas “cron jobs 5 Ideas de configuración de Linux para principiantes para trabajos de Cron y scripts de Shell 5 Ideas de configuración de Linux para principiantes para trabajos de Cron y scripts de Shell Con las secuencias de comandos bash, puede realizar una serie de tareas complejas de una sola vez, por lo que es ideal para necesidades complejas y repetitivas. También es una excelente manera de conocer la terminal. ” - se definen en archivos de configuración especiales (crontabs), que cron escanea cada minuto. Se pueden encontrar varias versiones de cron en diferentes distribuciones de Linux. Por ejemplo, la bifurcación de cron de Fedora se llama cronie, y también hay fcron, bcron y dcron. Algunos tienen características adicionales, mientras que otros se centran más en la seguridad, pero todos se basan en la misma idea.

Esta guía está escrita para vixie-cron, que es la versión más extendida de cron y la que encontrarás en Ubuntu y sus derivados. Si bien la mayoría de las instrucciones también se aplican a otras implementaciones de cron, puede haber pequeñas diferencias, así que consulte sus manuales si decide cambiar.

¿Qué es un Crontab??

Si realmente quiere administrar su tiempo, es probable que tenga un calendario de algún tipo Organice su tiempo con estas 4 aplicaciones de calendario de Linux Organice su tiempo con estas 4 aplicaciones de calendario de Linux ¿Tiene sentido seguir utilizando una aplicación de calendario de escritorio? Creemos que sí, especialmente para permitir el acceso a eventos en cualquier dispositivo sincronizado. Estas aplicaciones de calendario de Linux son particularmente útiles. - una aplicación o al menos un trozo de papel. Crontab es muy parecido al calendario de su computadora. Contiene la información sobre las tareas programadas, diciéndole a cron qué comandos ejecutar a qué hora.

De hecho, hay varias crontabs en su sistema. Cada usuario tiene su propio crontab, incluido root (el administrador). Los crontabs de usuario se almacenan en / var / spool / cron / crontabs /. los crontab -l El comando enumerará el archivo crontab para el usuario actual. Puede consultar el crontab raíz con sudo crontab -l.

Además, está el archivo crontab del sistema / etc / crontab que se usa para tareas de todo el sistema. Por lo general, toman la forma de scripts ejecutables, propiedad de la raíz colocados en /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, y /etc/cron.monthly/ carpetas, y en algunas distribuciones, el /etc/cron.d/ carpeta también. En términos generales, no debería tener que lidiar con estas tareas, ya que la mayoría de ellas son creadas automáticamente por las aplicaciones instaladas.

Cómo programar tareas con Cron

Suena simple: para programar tareas, solo agréguelas a su crontab. Como crontab es un archivo de configuración especial, no se recomienda editarlo manualmente. En su lugar, use el crontab -e mando. Para editar los crontabs de la raíz u otros usuarios, ejecute el comando con privilegios administrativos y agregue su nombre de usuario después de la opción -u:

sudo crontab -u root -e
sudo crontab -u nombre de usuario -e

El archivo crontab tiene dos secciones. El primero contiene variables de entorno que se configuran automáticamente. Puede cambiar de forma segura las variables PATH, HOME y SHELL, y modificar la variable MAIL.

La segunda parte del archivo es el actual “calendario” con tus tareas programadas. Cada tarea ocupa una línea (fila) en la tabla, con columnas que representan los siguientes valores:

Para programar tareas con éxito, necesita saber un poco sobre la sintaxis de crontab:

  • Los números deben ser enteros (números enteros), y puede usar el asterisco (*) en cualquiera de las columnas como comodín, lo que significa “cada minuto / día / mes ... ”.
  • En el “Dia del mes” columna, tenga cuidado de no establecer una fecha que no ocurra en el mes especificado en el “Mes” columna (por ejemplo, 30 de febrero).
  • Ambos “Mes” y “Día de la semana” las columnas aceptan nombres cortos para meses y días, respectivamente, y no distinguen entre mayúsculas y minúsculas.
  • En el “Día de la semana” columna, tanto 0 como 7 representan el domingo. los “Hora” la columna requiere el “tiempo militar” (24 horas), pero no puede usar el número 24; en su lugar, 0 significa 12 a.m. Esto se debe a que los valores de minuto, hora y día de la semana comienzan en 0 en lugar de 1.
  • Los segundos no son compatibles, por lo que no puede programar una tarea en un segundo en particular.

Lo que puede hacer es programar intervalos de tiempo inclusivos usando un guión (14-22 bajo “Horas” ejecutará la tarea continuamente desde las 2 p.m. hasta las 10 p.m.), o ejecute una sola tarea varias veces definiendo una lista separada por comas (1,3,5 en “Día de la semana” ejecutará la tarea los lunes, miércoles y viernes).

Mientras tanto, los valores de paso están representados por una barra diagonal (/), y estos indican la cantidad de saltos dentro de un rango; por ejemplo, 3-20 / 3 bajo “Horas” ejecutará la tarea cada tres horas de 3 a.m. a 8 p.m. Esto es útil cuando desea repetir tareas cada X horas, porque puede combinar un asterisco y un paso (* / X). Puede combinar rangos con listas y pasos con rangos siempre que use números. En otras palabras, combinaciones como “jan-mar” o “Martes a viernes” no estan permitidos.

Alternativamente, en lugar de establecer un valor para cada columna, puede escribir @weekly, @yearly, @monthly, @daily o @hourly al comienzo de una fila, seguido de un comando. Programada de esta manera, las tareas se ejecutarán en la primera instancia posible, por lo que @weekly se ejecutará a la medianoche del primer día de la semana. Si desea ejecutar una tarea inmediatamente cuando se inicia el sistema (re), use el comando @reboot.

En este ejemplo, hemos programado una copia de seguridad todos los días a las 08:20 y 20:20. El fondo de pantalla cambia automáticamente cada tres días a las 19:00, y un script buscará nuevos podcasts Las 10 mejores aplicaciones para administrar podcasts en Linux Las 10 mejores aplicaciones para administrar podcasts en Linux Linux no tiene una gran variedad de clientes de podcasts, pero no se preocupe, casi todos los reproductores de música modernos para Linux pueden servir como un podcatcher Echemos un vistazo a las opciones. todos los lunes a las 10:20 y 20:20. Un recordatorio de cumpleaños está programado para el 25 de marzo y se ejecuta cada 30 minutos dentro del plazo especificado. Finalmente, un script revisa el correo electrónico cada 15 minutos de 8 a 20, pero solo en días laborables. Puede organizar su crontab con espacios y pestañas entre columnas, pero no dentro de ellas (no ponga espacios entre comas, guiones y barras).

Si todo esto suena demasiado complicado, no se preocupe, siempre puede confiar en Internet. Herramientas como Crontab Generator, Crontab.guru y Corntab lo ayudan a crear trabajos cron sin conocer la sintaxis de crontab. Le muestran cuándo se ejecutará el trabajo a continuación y proporcionan plantillas para expresiones de uso común. Crontab.guru es el mejor del grupo porque te permite probar la sintaxis de crontab en vivo, para que puedas ver de inmediato cómo tus cambios afectarán el cronograma.

Cómo verificar si se ejecutan trabajos Cron

Se supone que Cron se ejecuta silenciosamente en segundo plano y le permite trabajar sin molestias mientras se ocupa de sus tareas. Pero, ¿cómo puedes asegurarte de que realmente esté funcionando??

Cron tiene una función de notificación de correo electrónico incorporada, pero esto requiere configurar al menos un servidor de correo local simple ¿Cómo funciona un servidor de correo electrónico? [Explicación de la tecnología] ¿Cómo funciona un servidor de correo electrónico? [Explicación de la tecnología] Detrás de cada correo electrónico hay un poderoso motor llamado servidor de correo electrónico que empuja los correos electrónicos a través de Internet. . No muchos usuarios domésticos están dispuestos a configurar esto, y no muchas distribuciones lo proporcionan por defecto (por ejemplo, Ubuntu no lo hace). La forma más rápida de verificar el cron es escanear el registro del sistema con este comando:

cat / var / log / syslog | grep -i cron

La opción -i hace que nuestra consulta no distinga entre mayúsculas y minúsculas. Es posible que cron tenga su propio archivo de registro en algún lugar de / var / log /, así que mire allí si este comando no produce resultados útiles.

Si necesita guardar la salida de un trabajo cron particular, puede redirigirlo a un archivo. Proporcione la ruta y el nombre del archivo en la última columna de su crontab, después del comando que desea ejecutar:

30 * * * * / usr / bin / yourcommand> /home/username/logfile.txt

El uso de un solo símbolo> sobrescribirá el archivo cada vez que se ejecute el comando. Para evitar esto, use >> en su lugar, agrega la salida al archivo existente.

¿Qué pasa si Cron no funciona??

Puede suceder que hayas agregado algunas tareas, revisado los registros del sistema y descubras que no se están ejecutando como deberían. Aquí hay algunas cosas que debe considerar, y tenga cuidado, al intentar solucionar el problema..

¿Se está ejecutando el servicio cron??

Como sabes, el demonio cron debería ejecutarse en segundo plano. Asegúrese de que este sea realmente el caso. El servicio se llama crond o simplemente cron.

Para distribuciones que usan systemd:

systemctl status cron

Para distribuciones con Upstart:

servicio cron status

Si su distribución está utilizando el “antiguo” Enfoque de inicio del sistema V, enumere todos los servicios con:

lista initctl

y ver si cron está en la lista.

¿Se te permite tener un archivo crontab??

Revisar su / etc carpeta para archivos nombrados cron.allow y cron.deny. En Ubuntu, ninguno debería existir, lo que significa que todos los usuarios pueden administrar trabajos cron. Sin embargo, si hay un cron.allow archivo, debe contener su nombre de usuario. Por el contrario, si el cron.deny existe el archivo, su nombre de usuario no debe estar en él. Dejándo el cron.deny archivo en blanco significa que solo la raíz y los usuarios enumerados en cron.allow puede tener archivos crontab.

¿Están sus variables configuradas correctamente??

Crontab establece automáticamente su variable SHELL en / bin / sh. Sin embargo, si su shell de elección es fish 7 Razones por las que debe instalar Fish Shell 7 Razones por las que debe instalar Fish Shell ¿No le gusta cómo funciona su terminal Linux? ¿Por qué no instalar un nuevo shell? Uno de esos caparazones es el pescado, que presenta características que deberían haberse convertido en algo común, pero no lo hicieron. Vamos a ver. o bash, debes cambiar la variable SHELL. Del mismo modo, la variable PATH contiene solo unos pocos directorios por defecto. Aquí es donde crontab busca los comandos de Linux. Si su trabajo cron no se está ejecutando, podría deberse a que crontab no “ver” El comando que has usado. Para evitar esto, agregue directorios que contengan los comandos a la variable PATH, separados por dos puntos:

RUTA = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Si no desea editar esto en su crontab, puede definir estas variables en el script que desea ejecutar como un trabajo cron.

¿Está su formato crontab en el punto??

La sintaxis de Crontab no es exactamente una navegación suave. Incluso si lo verifica con las herramientas en línea mencionadas anteriormente, un error menor podría evitar que cron ejecute sus trabajos. Tenga cuidado de:

  • agregue una línea vacía al final del archivo crontab
  • escapar del signo% con una barra diagonal inversa si su comando lo incluye
  • escribir comentarios como líneas separadas que comienzan con #. No escriba comentarios en la misma línea que las variables de entorno, o al lado de los comandos de trabajo cron.

¿Realmente tienes que usar la terminal??

Absolutamente no. Los usuarios de KDE pueden programar trabajos cron con KCron, al que se puede acceder desde Configuración del sistema> Programador de tareas módulo. Con una interfaz sencilla que le permite elegir y ajustar todo con solo unos pocos clics, es un placer usar KCron.

Si prefiere GNOME, entonces GNOME Schedule es para usted. El enfoque es similar, aunque se espera que la interfaz sea ligeramente diferente. Ofrece un modo avanzado para modificaciones detalladas, y viene con un applet de panel desde el cual puede administrar tareas directamente.

Debe conocer otras soluciones, como Crontab-UI y Minicron. Son más adecuados para usuarios que administran múltiples máquinas y trabajos cron, y una de sus mejores características es la interfaz basada en web.

¿Hay alguna alternativa de Cron??

Si bien cron es prácticamente el programador de tareas estándar para Linux Programar y automatizar tareas en Linux con Gnome Schedule Schedule y Automatizar tareas en Linux con Gnome Schedule, ciertamente no es el único. El comando at es perfecto para trabajos rápidos y únicos que se pueden programar directamente desde la línea de comandos, sin archivos de configuración especiales. Si necesita más, hay GNUbatch, que introduce la noción de dependencia. Con GNUbatch, puede establecer condiciones específicas para cada trabajo o hacer que una tarea programada dependa de una anterior. Algo similar se puede lograr con los temporizadores systemd. Aunque es menos práctico de configurar que cron, los temporizadores systemd pueden recordar si una tarea perdió su horario mientras la computadora estaba apagada y ejecutarla la próxima vez que esté encendida.

Esto es algo que cron no puede hacer solo. Como tal, es adecuado para servidores y computadoras que se ejecutan constantemente, pero no ejecutará un trabajo programado mientras la computadora estaba apagada. Aquí es donde entra en juego anacron. Técnicamente no es un “alternativa” o un reemplazo para cron. En cambio, anacron complementa cron y debe usarse junto con él, como es el caso en muchas distribuciones de Linux, incluidos Ubuntu y productos basados ​​en Ubuntu. Anacron registra cuándo se ejecutó una tarea por última vez y comprueba si hubo alguna instancia perdida mientras el sistema estaba apagado. Los ejecutará cuando vuelva a encender la computadora, pero cada tarea se puede ejecutar solo una vez al día.

Algunas versiones de cron, como fcron, ofrecen las funciones de anacron por defecto. Los usuarios avanzados pueden querer mirar Hcron o SuperCron, que aportan muchas mejoras a las funciones cron básicas, pero también son algo difíciles de administrar.

¿Que pasa contigo? ¿Cómo organizas tus tareas digitales? ¿Qué tareas programa en Linux? Comparte tus historias y consejos para usar cron en los comentarios.

Crédito de la imagen: tabla de horarios de Gonzalo Aragón a través de Shutterstock




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.