Cómo programar tareas en Linux con Cron y Crontab

Cómo programar tareas en Linux con Cron y Crontab / Linux

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 hacia el 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. Sin embargo, en estos días nuestros teléfonos, computadoras e incluso casas pueden hacer cosas increíbles. 5 Proyectos de automatización del hogar con bricolaje para comenzar con su hogar inteligente. Proyectos de automatización del hogar con bricolaje para comenzar con su hogar inteligente. Simplemente no sé por dónde empezar. Aquí hay cinco proyectos básicos para principiantes que puedes construir en este momento. Lee mas . La capacidad de automatizar tareas es una de ellas..

Todos los usuarios de Linux pueden beneficiarse de la programación de tareas, 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 hace que sea sencillo actualizar una sola aplicación en su computadora, o aplicar todas las actualizaciones disponibles a la vez. A continuación le indicamos cómo. Leer más) o servir al usuario (consultar el correo electrónico, descargar podcasts ...). Los usuarios de Windows han tenido tareas aburridas del Programador de tareas 4 que puede automatizar con el Programador de tareas de Windows 4 tareas aburridas del Programador de tareas 4 que puede automatizar con el Programador de tareas de Windows Su tiempo es demasiado valioso como para desperdiciarlo con tareas repetitivas. Permítanos mostrarle cómo automatizar y programar tareas. También tenemos algunos buenos ejemplos. Lea más desde Windows 95. La utilidad que hace el mismo trabajo en Linux se llama cron, y aquí explicaremos cómo usarla..

Que es cron?

Cron es un servicio del sistema que se ejecuta en segundo plano, comprueba las tareas programadas y las ejecuta si encuentra alguna. Las tareas - también llamadas “cron jobs 5 Ideas de configuración para principiantes de Linux para Cron Jobs y Shell Scripts 5 Ideas de configuración para principiantes de Linux para Cron Jobs y Shell Scripts Con bash scripting, 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 gran manera de conocer la terminal. Lee mas ” - se definen en archivos de configuración especiales (crontabs), que cron escanea cada minuto. Varias versiones de cron se pueden encontrar 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 están más centrados 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 se aplican también a otras implementaciones cron, puede haber pequeñas diferencias, por lo tanto, consulte sus manuales si decide cambiar.

¿Qué es un crontab??

Si realmente desea administrar su tiempo, probablemente 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 usando una aplicación de calendario de escritorio? Pensamos que sí, especialmente para permitir el acceso a eventos en cualquier dispositivo sincronizado. Estas aplicaciones de calendario de Linux son particularmente útiles. Leer más: una aplicación o al menos una hoja de papel. Crontab es muy parecido al calendario de su computadora. Contiene la información sobre las tareas programadas, y le dice a cron qué comandos ejecutar a qué hora.

De hecho, varios crontabs están en su sistema. Cada usuario tiene su propio crontab, incluyendo root (el administrador). Los crontabs del usuario se almacenan en / var / spool / cron / crontabs /. los crontab -l comando listará el archivo crontab para el usuario actual. Puede comprobar la raíz crontab con sudo crontab -l.

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

Cómo programar tareas con Cron

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

sudo crontab -u raíz -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 la actual “calendario” con sus 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, 0 y 7 representan el domingo. los “Hora” columna requiere la “tiempo militar” Formato (de 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 rangos de tiempo inclusivos usando un guión (14-22 bajo “Horas” ejecutará la tarea continuamente desde las 2 p.m. a 10 p.m.), o ejecute una sola tarea varias veces definiendo una lista separada por comas (1,3,5 bajo “Día de la semana” se ejecutará la tarea el 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 y cuando use números. En otras palabras, combinaciones como “enero-mar” o “Mar, viernes a domingo” no están permitidos.

Alternativamente, en lugar de establecer un valor para cada columna, puede escribir @weekly, @yearly, @monthly, @daily o @hourly al principio de una fila, seguido de un comando. Programadas de esta manera, las tareas se ejecutarán en la primera instancia posible, por lo que @weekly se ejecutaría a la medianoche del primer día de la semana. Si desea ejecutar una tarea inmediatamente cuando se inicie (re) el sistema, 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 una secuencia de comandos 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 podcast. pero no te preocupes, casi todos los reproductores de música modernos para Linux pueden servir como podcatcher. Echemos un vistazo a las opciones. Lea más todos los lunes a las 10:20 y 20:20. Se establece un recordatorio de cumpleaños para el 25 de marzo y se ejecuta cada 30 minutos dentro del marco de tiempo especificado. Finalmente, un script revisa el correo electrónico cada 15 minutos de 8 a 20, pero solo en días laborables. Usted es libre de organizar su crontab con espacios y tabulaciones entre columnas, pero no dentro de ellas (no coloque espacios entre comas, guiones y barras).

Si todo esto parece 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 ninguna sintaxis de crontab. Le muestran cuándo se ejecutará el trabajo a continuación, y proporcionan plantillas para las expresiones de uso común. Crontab.guru es el mejor del grupo porque le permite realizar pruebas en vivo de la sintaxis de crontab, para que pueda ver de inmediato cómo sus cambios afectarán la programación..

Cómo comprobar si los trabajos de Cron se ejecutan

Se supone que Cron se ejecuta silenciosamente en segundo plano y te permite trabajar sin interrupciones mientras se ocupa de tus tareas. Pero, ¿cómo puedes asegurarte de que realmente funciona??

Cron tiene una función de notificación por 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 potente motor llamado servidor de correo electrónico que envía los correos electrónicos a través de Internet. Lee mas . No muchos usuarios domésticos están dispuestos a configurar esto, y no muchas distribuciones lo proporcionan de forma predeterminada (por ejemplo, Ubuntu no). 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 mayúsculas de 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 en 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 único 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 está funcionando??

Puede suceder que haya agregado algunas tareas, comprobado los registros del sistema y que no se estén ejecutando como deberían. Aquí hay algunas cosas que debe considerar y tener cuidado al tratar de solucionar el problema..

¿Se está ejecutando el servicio cron??

Como saben, el daemon cron debería estar ejecutándose en segundo plano. Asegúrese de que este es realmente el caso. El servicio se llama crond o simplemente cron..

Para distribuciones usando systemd:

Estado de systemctl cron

Para distribuciones utilizando Upstart:

estado cron del servicio

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

lista de iniciación

y ver si cron está en la lista.

¿Incluso se le permite tener un archivo crontab?

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

¿Están sus variables establecidas 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 debería instalar Fish Shell 7 razones por las que debería instalar Fish Shell ¿No le gusta cómo funciona su terminal Linux? ¿Por qué no instalar un nuevo shell? Una de estas conchas es el pez, que introduce características que deberían haberse convertido en algo común, pero no lo hizo. Vamos a ver. Leer más 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 ejecuta, puede ser que crontab no lo haga. “ver” El comando que has usado. Para evitar esto, agregue directorios que contengan los comandos a la variable PATH, separados por dos puntos:

PATH = / 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.

Es su formato crontab en 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 impedir que cron ejecute sus trabajos. Tenga cuidado de:

  • agregue una línea vacía al final del archivo crontab
  • escape el signo% con una barra invertida si su comando lo incluye
  • escriba comentarios como líneas separadas comenzando con #. No escriba comentarios en la misma línea que las variables de entorno, o junto a los comandos del 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 la Configuración del sistema> Programador de tareas módulo. Con una interfaz sencilla que le permite elegir y modificar todo con solo unos pocos clics, KCron es un placer usar.

Si prefieres GNOME, entonces el horario de GNOME es para ti. El enfoque es similar, aunque la interfaz es, probablemente, 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 los usuarios que administran varias máquinas y trabajos cron, y una de sus características más interesantes es la interfaz basada en web.

¿Hay alternativas de Cron?

Si bien cron es prácticamente el programador de tareas estándar para Programar y automatizar tareas de Linux en Linux con Programación de Gnome Programar y automatizar tareas en Linux con Programación de Gnome Leer más, ciertamente no es el único. El comando at es perfecto para trabajos rápidos y únicos que pueden programarse 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 puede lograrse con los temporizadores de systemd. Aunque es menos práctico de configurar que los cron, los temporizadores de sistema pueden recordar si una tarea no cumplió con su programación 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 el anacrón. Técnicamente no es un “alternativa” o un reemplazo para cron. En su lugar, anacron complementa cron y debe usarse junto con él, como es el caso en muchas distribuciones de Linux, incluyendo Ubuntu y productos basados ​​en Ubuntu. Anacron registra la última vez que se ejecutó una tarea y verifica si hubo instancias perdidas mientras el sistema estaba apagado. Los ejecutará cuando vuelva a encender la computadora, pero cada tarea se puede ejecutar solo una vez por día.

Algunas versiones de cron, como fcron, ofrecen las características de anacron por defecto. Es posible que los usuarios avanzados quieran ver Hcron o SuperCron, que traen muchas mejoras a las funciones básicas de cron, pero también son algo difíciles de administrar.

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

Crédito de la imagen: tabla de horarios por Gonzalo Aragon a través de Shutterstock

Explorar más sobre: ​​Linux.