Cómo programar tareas en linux con cron y crontab

Sabía usted que Cazarecompensas se establece en el año 2019? Es decir, tres años a partir de ahora! Por no mencionar Regreso al futuro 2, en el que viaje en el tiempo hacia adelante en el año 2015. Sin embargo, no tenemos coches voladores y no hay replicantes entre nosotros (por lo que yo sé).

linux-cron comilla

Es fácil sentirse decepcionado con la tecnología actual cuando lo comparamos con las representaciones ficticias del futuro. Sin embargo, en estos días nuestros teléfonos, computadoras, e incluso casas pueden hacer cosas increíbles. La capacidad de automatizar tareas es uno de ellos.5 de bricolaje Home Automation Proyectos a empezar con su Smart Home5 de bricolaje Home Automation Proyectos a empezar con su Smart HomeCuando se trata de crear hogares inteligentes, la mayoría de las personas simplemente no saben por dónde empezar. Aquí hay cinco principiantes básicas proyectos de domótica se puede construir en este momento.Lee mas

Vídeo: Programar tareas con cron en Linux Mint 17

Cada usuario de Linux puede beneficiarse de la programación de tareas, ya sean (como la limpieza de los registros antiguos relacionados con el sistema y la actualización de paquetes) O servir el correo electrónico del usuario (cuenta corriente, la descarga de podcasts ...). Los usuarios de Windows han tenido Programador de tareas ya que Windows 95. La utilidad que hace el mismo trabajo en Linux se llama cron, y aquí vamos a explicar cómo usarlo.

¿Qué es Cron?

Cron es un servicio del sistema que se ejecuta en segundo plano, comprueba si hay tareas programadas, y ejecuta si encuentra alguna. Las tareas - también llamado “trabajos de cron”- se define en los archivos de configuración especiales (crontabs), que escanea cron cada minuto. Varias versiones de cron se pueden encontrar a través de diferentes distribuciones de Linux. Por ejemplo, tenedor 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 enfocados en la seguridad, pero están todos basados ​​en la misma idea.5 ideas de configuración de Linux para principiantes Cron Jobs & Shell Scripts5 ideas de configuración de Linux para principiantes Cron Jobs & Shell ScriptsCon secuencias de comandos bash, se puede hacer una serie compleja de tareas de una sola vez rápida lo que es ideal para las necesidades complejas y repetitivas. Es también una gran manera de conocer terminal.Lee mas

Esta guía está escrita para vixie-cron, que es la versión más extendida de cron y el que usted encontrará en Ubuntu y sus derivados. Aunque la mayoría de las instrucciones se aplican a otras implementaciones cron también, puede haber diferencias menores, a fin de comprobar sus manuales si decide cambiar.

¿Qué es un Crontab?

Si usted es serio sobre la gestión de su tiempo, es probable que tenga un calendario de algún tipo - una aplicación o al menos una hoja de papel. Crontab es muy parecido a la agenda del ordenador. Que contiene la información acerca de las tareas programadas, diciendo que ordena cron para funcionar en qué momento.Organice su tiempo con estas 4 aplicaciones de calendario LinuxOrganice su tiempo con estas 4 aplicaciones de calendario Linux¿Tiene sentido seguir utilizando una aplicación de calendario de escritorio? Creemos que sí, sobre todo para permitir el acceso a los eventos en cualquier dispositivo sincronizado. Estas aplicaciones de calendario Linux son particularmente útiles.Lee mas

De hecho, varios crontabs son en su sistema. Cada usuario tiene su propio crontab, incluyendo la raíz (el administrador). crontabs usuario se almacenan en / Var / spool / cron / crontabs /. los crontab -l comando enumerará el archivo crontab para el usuario actual. Puede comprobar el crontab raíz 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 secuencias de comandos ejecutables, 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 términos generales, que no debería tener que lidiar con estas tareas, ya que la mayoría de ellos son creados automáticamente por las aplicaciones instaladas.

Cómo programar tareas con Cron

Suena simple: para programar tareas, sólo tiene que añadir a su crontab. Desde crontab es un archivo de configuración especial, que no es recomendable para editar manualmente. En su lugar, utilice el crontab -e mando. Para editar la raíz u otros crontabs de los usuarios, ejecute el comando con privilegios administrativos y añadir su nombre de usuario después de la opción -u:

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

linux-cron-crontab-editor

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

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

linux-cron-crontab

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

  • Los números deben ser enteros (números enteros), y se puede utilizar el asterisco (*) en cualquiera de las columnas como un comodín, que significa “cada minuto / día / mes ...”.
  • En la columna “día del mes”, tenga cuidado de no fijar una fecha que no se produce en el mes especificado en la columna “Mes” (por ejemplo, 30 de febrero).
  • Tanto el “Mes” y “Día de la semana” columnas aceptan nombres cortos para los meses y días, respectivamente, y son sensibles a mayúsculas.
  • En la columna de “Día de la semana”, ambos 0 y 7 soporte para el domingo. La columna “Hora” requiere el “tiempo militar” (24 horas) de formato, pero no se puede utilizar el número 24 - en su lugar, 0 representa por 12 am Este es debido a que los valores de minutos, horas y días de la semana de inicio en 0 en vez de 1.
  • Los segundos no son compatibles, por lo que no puede programar una tarea en un segundo particular.

Lo que puede hacer es programar intervalos de tiempo incluido utilizando un guión (14-22 en “Horas” se ejecutará la tarea continua 14:00-22:00), o ejecutar una sola tarea varias veces mediante la definición de una lista separada por comas (1, 3,5 en “Día de la semana” se ejecutará la tarea el lunes, miércoles y viernes).

Mientras tanto, valores de paso, están representados por una barra inclinada (/), y éstos indican la cantidad de saltos dentro de un gama- por ejemplo, 3-20 / 3 en “Horas” se ejecutará la tarea cada tres horas a partir de 3 am a 8 pm Esto es útil cuando se desea repetir tareas cada X horas, porque se puede combinar un asterisco y un paso (* / X). Se pueden combinar con rangos de las listas y los pasos con rangos de todo el tiempo que estés usando números. En otras palabras, no se permiten combinaciones como “Ene-Mar” o “mar, de viernes a domingo”.

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

linux-cron-crontab-ejemplo

En este ejemplo, hemos programado una copia de seguridad de 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 guión comprobar si hay nuevos podcasts todos los lunes a las 10:20 y 20:20. Un recordatorio de cumpleaños está fijada para el 25 de marzo y se ejecuta cada 30 minutos dentro del marco de tiempo especificado. Por último, un script comprueba correo electrónico cada 15 minutos desde las 8 a las 20, pero sólo en días laborables. Usted es libre de organizar su crontab con espacios entre las columnas y las pestañas, pero no dentro de ellas (no poner espacios entre comas, guiones y barras).Administrar sus Podcasts en Linux con estos 10 AplicacionesAdministrar sus Podcasts en Linux con estos 10 AplicacionesLinux no tiene una gran variedad de clientes de podcast, pero no se preocupe - casi todos los jugadores de la música moderna para Linux puede servir como un agregador de podcasts. Vamos a echar un vistazo a las opciones.Lee mas

Si todo esto suena demasiado complicado, no se preocupe - siempre se puede confiar en la internet. Herramientas como Crontab Generador, Crontab.guru, y ayuda Corntab que crean puestos de trabajo cron sin saber nada de sintaxis crontab. Te muestran cuando se ejecutará el trabajo siguiente, y proporcionar plantillas de expresiones de uso común. Crontab.guru es el mejor del grupo, ya que le permite a la sintaxis crontab en vivo de la prueba, por lo que se puede ver de inmediato cómo los cambios afectarán a la programación.

linux-cron-crontab-guru

Cómo comprobar si los trabajos de cron se ejecutan

Cron se supone que debe funcionar silenciosamente en segundo plano y te permiten trabajar sin ser molestados mientras que se encarga de sus tareas. Pero, ¿cómo puede asegurarse de que realmente funciona?

Cron tiene una función de notificación por correo electrónico incorporado, pero esto requiere la creación de, al menos, un simple servidor de correo local. No son muchos los usuarios domésticos están dispuestos a configurar esto, y no proporcionan muchas distribuciones por defecto (por ejemplo, Ubuntu no lo hace). La forma más rápida de comprobar para arriba en cron es escanear el registro del sistema con este comando:¿Cómo funciona un servidor de correo electrónico? [Tecnología Explicación]¿Cómo funciona un servidor de correo electrónico? [Tecnología Explicación]Detrás de cada correo electrónico es un motor de gran alcance llamada al servidor de correo electrónico que empuja a los mensajes de correo electrónico a través de Internet.Lee mas

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

linux-cron-log

La opción -i hace nuestro caso-insensibles consulta. Es posible que cron tendrá su propio archivo de registro en algún lugar de / Var / log /, a fin de buscar allí si este comando no puede producir resultados útiles.

Si necesita guardar el resultado de una tarea programada en particular, que se puede redirigir a un archivo. Proporcionar 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 gt; /home/username/logfile.txt

El uso de un único gt; símbolo sobrescribirá el archivo cada vez que se ejecuta el comando. Para evitar esto, utilice gt; gt; en su lugar - que añade la salida al archivo existente.

Si lo Cron no está funcionando?

Podría ocurrir que ha agregado algunas tareas, comprueba los registros del sistema, y ​​se encontró que no están ejecutando como deberían. Aquí hay algunas cosas que debe considerar - y tener cuidado con - al tratar de solucionar el problema.

Está ejecutando el servicio cron?

Como ya saben, el demonio cron debe estar en ejecución en segundo plano. Asegúrese de que este es realmente el caso. El servicio se llama ya sea crond o simplemente cron.

Para distribuciones utilizando systemd:

cron estado systemctl

Para distribuciones utilizando Upstart:

estado del servicio cron

Vídeo: Cómo configurar un archivo crontab en Linux

linux-cron-servicio-estado

Si su distribución está utilizando el enfoque del sistema V init “viejo”, una lista de todos los servicios con:

lista initctl

y ver si está en la lista de cron.

Estás incluso permitió tener un archivo crontab?

Revisar su / etc carpeta de archivos con el nombre cron.allow y cron.deny. En Ubuntu, ni debería existir, lo que significa que todos los usuarios se les permite administrar los trabajos de cron. Sin embargo, si hay una cron.allow archivo, tiene que contener su nombre de usuario. Por el contrario, si el cron.deny existe el archivo, el nombre de usuario no debe estar en ella. Dejándo el cron.deny presentar en blanco significa que sólo las raíces y los usuarios listados en cron.allow puede tener archivos crontab.

Se han establecido correctamente las variables?

Crontab ajusta automáticamente la variable SHELL a / Bin / sh. Sin embargo, si su shell de elección es el pescado o fiesta, debe cambiar la variable SHELL. Del mismo modo, la variable PATH contiene sólo unos pocos directorios por defecto. Aquí es donde se ve crontab para los comandos de Linux. Si su trabajo cron está fallando para funcionar, podría ser debido a crontab no “ve” el comando que ha utilizado. Para evitar esto, agregar directorios que contienen los comandos a la variable PATH, separados por dos puntos:

PATH = / opt / miaplicacion / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
7 razones por las que debe instalar el Shell Fish7 razones por las que debe instalar el Shell Fish¿No te gusta cómo funciona el terminal de Linux? ¿Por qué no instalar un nuevo shell? Uno de estos es la cáscara de pescado, que presenta características que debería haber llegado a ser comunes, pero no lo hizo. Vamos a ver.Lee mas

Si no desea editar esto en su crontab, puede definir estas variables en la secuencia de comandos que desea ejecutar como una tarea programada.

¿Es el crontab de formato en punto?

crontab sintaxis no es exactamente viento en popa. Incluso si verifica con herramientas en línea mencionados anteriormente, un pequeño error aún podría prevenir cron de la ejecución de los trabajos. Tenga cuidado de:

  • añadir una línea en blanco al final del archivo crontab
  • escapar el signo% con una barra invertida si su comando lo incluye
  • escribir los comentarios como líneas separadas empezando por el nº. No escriba comentarios en la misma línea que las variables de entorno, o próxima a cron comandos de trabajo.

¿Usted realmente tiene que usar el terminal?

Absolutamente no. Los usuarios de KDE pueden programar trabajos de cron con KCron, que es accesible desde el Ajustes del sistema gt; Programador de tareas módulo. Con una interfaz sencilla que permite elegir y ajustar todo en sólo unos pocos clics de ratón, KCron es un placer de usar.

linux-cron-kcron

Si prefiere GNOME, entonces GNOME horario es para usted. El enfoque es similar, aunque la interfaz es, como era de esperar, ligeramente diferente. Ofrece un modo avanzado para las modificaciones de grano fino, y viene con un applet de panel desde el que puede gestionar directamente tareas.

linux-cron-gnome-horario

Usted debe ser consciente de otras soluciones, como Crontab-IU y Minicron. Son más adecuado para los usuarios que administran varias máquinas y trabajos de cron, y una de sus características más interesantes es la interfaz basada en web.

linux-cron-crontabui

¿Hay alguna Cron Alternativas?

Mientras que cron es más o menos la norma programador de tareas para Linux, ciertamente no es el único. El comando at es perfecto para trabajos rápidos, de una sola vez que se pueden programar 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 puesto de trabajo, o hacer una tarea programada depende de una anterior. Algo similar se puede lograr con temporizadores systemd. Aunque es menos práctico para configurar que cron, temporizadores systemd pueden recordar si una tarea no alcanzó su horario mientras el sistema estaba apagado, y ejecutarlo la próxima vez que está.Programar & Automatizar Tareas En Linux con GNOME HorarioProgramar & Automatizar Tareas En Linux con GNOME HorarioLee mas

Esto es algo que cron no puede hacer por sí solo. Como tal, es adecuado para servidores y ordenadores que están funcionando constantemente, pero no va a ejecutar un trabajo que estaba programado mientras el sistema estaba apagado. Aquí es donde entra en juego anacron. No es técnicamente una “alternativa” o un sustituto de cron. En su lugar, anacron complementa cron y se debe utilizar junto a él, que es el caso en muchas distribuciones de Linux, incluyendo Ubuntu y productos basados ​​en Ubuntu. Anacron registra cuando una tarea se ha ejecutado la última, y ​​comprueba si había alguna casos perdidas mientras el sistema se apagó. Se ejecutará cuando se enciende de nuevo el equipo, pero cada tarea puede ser ejecutada solo una vez por día.

Algunas versiones de cron, como fcron, ofrecen características de Anacron por defecto. Los usuarios avanzados pueden querer mirar Hcron o SuperCron, que trae muchas mejoras en las funciones básicas de cron, pero también son un poco difícil de manejar.

¿Que pasa contigo? ¿Cómo organizar sus tareas digitales? ¿Qué tareas se programa en Linux? Compartir sus historias y consejos para el uso de cron en los comentarios.

Artículos Relacionados