Crontab: si actualmente tiene un sitio web con muchos servidores, es posible que desee ejecutar ciertos procesos, como enriquecer datos o generar miniaturas en segundo plano, sin interferir con la interfaz de usuario. Bueno, el crontab de Linux tiene un buen programa que hace exactamente eso: Cron.

Una introducción a Cron

Entonces, ¿qué es este programa? Cron se clasifica como un demonio que puede ejecutar comandos programados. Se inicia automáticamente al ingresar niveles de ejecución multiusuario, desde /etc/init.d. Busca en el área de spool en / var / spool / cron / crontabs los archivos crontab nombrados después de las cuentas en / etc / passwd. Para acceder a los crontabs en este directorio, debe usar el comando crontab en lugar de acceder directamente a ellos. Cron también puede leer el formato ligeramente diferente de / etc / crontab, así como los archivos en /etc/cron.d.

Una vez configurado, Cron se despierta cada minuto, examina los crontabs de Linux almacenados y comprueba el comando para ver si hay algo que ejecutar. Si se ejecuta un comando y se genera la salida, la salida se envía por correo al propietario del crontab o al usuario en la variable MAILTO en el crontab. Las copias secundarias del cron que ejecuta estos procesos se nombran en mayúsculas, que verá en la salida ps y syslog.

Cron también comprueba cada minuto los cambios en el modtime del directorio de spool. Si hay cambios, examina el modtime de todos los crontabs de Linux y recarga los que han cambiado. Como resultado, cron no tiene que reiniciarse cuando se cambia un archivo crontab.

Cuando se cambia el reloj por tres horas o menos, existen consideraciones especiales como al comienzo y al final del horario de verano. Si el tiempo avanza, los trabajos que se ejecutaron en el tiempo omitido se modificarán para ejecutarse poco después del cambio. Por otro lado, si el tiempo retrocede, los trabajos que caen en el tiempo repetido no se volverán a ejecutar.

Solo se ven afectados los trabajos que se ejecutan a una hora específica en lugar de los trabajos por hora o aquellos marcados con el '*' en el especificador de minuto / hora. Los trabajos especificados con coches salvajes se ejecutan inmediatamente en función de la nueva hora. En caso de cambios de reloj de más de tres horas, la nueva hora se usa inmediatamente.

En Red hat y Debian, cron trata los archivos cron.d como extensiones del archivo crontab de Linux, ya que siguen el formato especial del archivo, lo que significa que incluyen el campo de usuario. Esta característica tiene como objetivo permitir paquetes que requieren un control de programación más fino que los directorios diarios, mensuales o semanales. Tales archivos deberían ser nombrados después de sus paquetes de proveedores. Los archivos deben cumplir con la convención de nomenclatura utilizada para las partes de ejecución, ya que deben consistir únicamente en letras mayúsculas y minúsculas, dígitos, guiones y guiones bajos. Los archivos en el directorio cron.d son monitoreados por cambios, al igual que el directorio crontab de linux. Para comandos como / bin / ls, asegúrese de usar nombres de ruta absolutos para llamar al comando correcto.

Una introducción a Linux Crontab

Ahora que conoce los entresijos de cron, echemos un vistazo de cerca a linux crontab, que es un programa para instalar, desinstalar o enumerar las tablas para controlar el demonio. Cada usuario puede tener un crontab de Linux propio y los archivos están disponibles en el directorio crontabs, pero no están destinados a la edición directa.

Cualquier comando dado en un crontab de Linux de un usuario se ejecutará como el usuario que lo posee. Las pestañas, los espacios iniciales y las líneas en blanco generalmente se ignoran. Las líneas que tienen un signo hash como primer carácter sin espacio se ignoran, ya que se tratan como comentarios. Vale la pena señalar que no se permiten comentarios dentro de las mismas líneas de comandos cron, ya que se leerán como parte del comando. En una nota similar, tampoco se permiten comentarios en líneas con configuraciones variables de entorno.

En un crontab de Linux, una línea activa puede ser un comando cron o una configuración de variable de entorno, que tiene la forma "nombre = valor", donde se pueden agregar espacios si es necesario alrededor del signo igual. Cualquier espacio no inicial posterior forma parte del valor del nombre. La cadena de valor podría colocarse entre comillas simples o dobles para preservar los espacios en blanco iniciales o finales. No se analiza para las sustituciones ambientales, por lo que puede encontrar que líneas como "PATH = $ HOME / bin: $ PATH" no funcionarán como se esperaba.

Cron configura automáticamente muchas configuraciones ambientales, como HOME y LOGNAME que se configuran desde la línea passwd del usuario y SHELL se configura como / bin / sh y PATH se configura como / usr / bin: / bin. Puede anular PATH, SHELL y HOME mediante la configuración de crontab. Sin embargo, LOGNAME no se puede cambiar, ya que es el usuario desde el que se ejecuta el trabajo. En los sistemas BSD, esta variable se puede llamar USUARIO, en cuyo caso USUARIO también se establecerá.

Si el envío de correos es parte de los comandos que se ejecutan en el crontab de Linux, cron también verá MAILTO. Si la variable está definida y no está vacía, se envía un correo al usuario nombrado. Pero si está vacío, no se envía ningún correo y en su lugar se envía un correo al propietario del crontab de Linux. Si el archivo cron.allow está disponible, debe aparecer en él para usar este comando. Si este archivo no existe pero existe un archivo cron.deny, entonces debe ser eliminado de ese archivo para usar el comando. Si ninguno de los archivos existe, solo el superusuario podrá usar el comando dependiendo de los parámetros dependientes del sitio. Alternativamente, todos los usuarios podrán usar el comando, como es el caso de los sistemas Debian estándar.

Si la opción –u está disponible, proporciona el nombre de usuario cuyo crontab de Linux requiere ajustes. Si no se proporciona, crontab examina el crontab del usuario que ejecuta el comando. Es importante usar esta opción siempre por razones de seguridad cuando se ejecuta dentro de su, ya que su Linux puede confundir crontab. La opción -l está disponible para que el crontab actual se muestre en la salida estándar, mientras que la opción -r elimina el crontab actual. El comando -e se usa para editar el crontab actual de Linux usando editores especificados por el EDITOR o las variables de entorno VISUAL. No puede usar ningún editor que desvincula y vuelva a crear el archivo; necesita un editor que edite el archivo en su lugar. Después de salir del editor, el crontab ajustado de Linux se instalará automáticamente.

El módulo pam_env también es compatible con cron en el sistema Debian GNU / Linux, cargando el entorno como se especifica en el archivo del módulo. Sin embargo, debe tenerse en cuenta que la configuración PAM no anula la configuración mencionada anteriormente o la configuración del archivo crontab. Si desea una RUTA diferente de la ubicación del contenedor, debe configurarla en el archivo crontab. Cron, de forma predeterminada, enviará correos electrónicos utilizando el tipo de contenido 'text / plain' con el parámetro del conjunto de caracteres establecido en el conjunto de códigos / mapa de caracteres de la configuración regional donde se inició el cron, que es la configuración regional predeterminada del sistema sin ningún conjunto de variables de entorno o la configuración regional que configuraron las variables. Puede agregar sus propias codificaciones de caracteres para la salida de correo configurando las variables 'Content_Transfer_Encoding' y 'Content_Type' en las crontabs para que coincidan con los encabezados de correo de los nombres.

Cursos recomendados

  • Curso en línea de técnicas de R Studio Anova
  • Entrenamiento de Certificación en AngularJS
  • Curso de certificación ISTQB Nivel 1
  • Capacitación de certificación en fundamentos de pruebas de software

Trabajando en Crontab

Se puede acceder al comando crontab, que se encuentra en los sistemas operativos tipo Unix y Unix, a través de un terminal. Para ver qué crontab se está ejecutando actualmente, abra una terminal en su sistema y ejecute el siguiente comando:

$ sudo crontab -l

Para editar las listas de trabajos de crontab, puede usar el siguiente comando:

$ sudo crontab -e

Este comando abre el editor predeterminado en su sistema, que podría ser pico o vio, para cambiar el crontab. Para guardar el trabajo crontab en su archivo crontab, guarde y salga del editor. Los trabajos Crontab o cronjobs se pueden escribir así:

* * * * * /bin/execute/this/script.sh

Hay cinco asteriscos en el comando anterior, y cada uno representa partes de fechas diferentes para programar el trabajo. Aquí están:

  1. Minuto, que va de cero a 59
  2. Hora, que va de cero a 23
  3. Día del mes, del 1 al 31.
  4. Mes, de uno a 12
  5. Día de la semana, que va de cero a seis, con cero significa domingo

La lista anterior se ha dado en orden, por lo que primero debe definir el minuto, seguido de la hora, el día del mes, el mes y el día de la semana. Puede mantener el asterisco si no desea definir ninguno de los campos, pero es importante tener en cuenta que el símbolo significa "todos". Si deja los cinco campos sin definir con los asteriscos intactos, significa cada minuto de cada hora, cada día de cada semana y cada mes.

Ahora, supongamos que desea ejecutar un script cada mediodía de un domingo, esto es lo que debe hacer:

0 12 * * 0 /bin/execute/this/script.sh

Ahora, el script se ejecuta cuando el reloj del sistema marca las 1200 horas todos los domingos, todas las semanas de cada mes. Ahora, si desea ejecutar el script todos los días hábiles a las 12 del mediodía, esto es lo que escribe:

0 12 * * 1-5 /bin/execute/this/script.sh

El cron ejecuta comandos cuando los campos año, mes, hora y minuto coinciden con la hora actual, o cuando al menos el día del mes y año coinciden con la hora actual. Un campo puede marcarse con un asterisco para indicar "primero-último". Los rangos de números están permitidos, siendo los rangos dos números separados por un guión. El rango específico es inclusivo, por lo que un rango de 8-11 para 'horas' especifica la ejecución en las horas octava, novena, décima y undécima. Las listas también son compatibles, con cada número separado por comas, como '1, 2, 8, 9'. También puedes mezclar y combinar, por lo que podría ser '1, 2, 8-11'.

Puede usar valores de paso junto con los rangos, con el '/' después de un rango que especifica un salto del valor del número a través del rango. Por ejemplo, '0-11 / 2' en el campo de horas especifica la ejecución del comando cada dos horas, que se escribiría como una lista como esta: '0, 2, 4, 6, 8, 10'. Se pueden permitir pasos después de un asterisco, como '* / 2' para indicar un comando que se ejecutará cada dos horas. Para los campos de día y mes, puede usar las primeras tres letras de ese día o mes en particular, y el caso no importa. Sin embargo, las listas y rangos de nombres no son compatibles. El día de ejecución se puede especificar en dos campos: día de la semana y día del mes. Si ambos campos están restringidos, el comando se ejecutará cuando cualquiera de los campos coincida.

El resto de la línea es el campo 'sexto', que especifica el comando que se ejecutará. La parte de comando de la línea ocupa una nueva línea o hasta un% de carácter. Lo ejecuta sh o el shell especificado en la variable SHELL del archivo crontab. El% en el comando cambiará a caracteres de nueva línea a menos que se escapen con la barra invertida '\'. Todos los datos después del primer signo% se envían como entrada estándar al comando. No puede dividir una línea de comando en varias líneas.

Programando trucos en Crontab

Puede llevar un tiempo acostumbrarse al formato, pero aquí hay algunos trucos para ayudarlo. Si desea ejecutar un cronjob cada diez minutos, puede escribirlo de esta manera:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

O puede escribirlo de esta manera, que es más fácil:

* / 10 * * * * /bin/execute/this/script.sh

También tiene palabras especiales que puede agregar para el campo del primer minuto en lugar de un número, de esta manera:

  • @reboot: esto ejecutaría el script una vez al inicio del sistema
  • @año: para ejecutar el comando una vez al año (el formato alternativo sería "0 0 1 1 *")
  • @anualmente: una alternativa a la palabra clave anual
  • @mestralmente: para ejecutar el comando una vez al mes ("0 0 1 * *")
  • @semanal: para ejecutar una vez a la semana ("0 0 * * 0")
  • @daily: para ejecutar una vez a la semana ("0 0 * * *")
  • @midnight: una alternativa a la palabra clave diaria
  • @hora: para ejecutar cada hora ("0 * * * *")

Almacenamiento de salida

Por defecto, el cron guarda la salida del trabajo en el buzón de usuario o root. Pero puede hacer que la salida sea más simple y más presentable guardándola en un archivo de registro separado. Así es como lo haces:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux es capaz de informar en varios niveles. Tiene errores estándar STDERR y salida estándar STDOUT, marcados como 2 y 1, respectivamente. La siguiente instrucción le indica que almacene STDERR y STDOUT para crear una única secuencia de datos de mensajes y errores:

2> y 1

Así que hemos definido el flujo de salida, ahora tenemos que darle un destino. El '>' sobrescribe el archivo y '>>' se agrega a él. Para anexar, que siempre es más seguro, puede usar el siguiente comando:

>> /var/log/script_output.log

Conclusión

Como puede ver, cron le permite configurar tareas para que se ejecuten automáticamente a intervalos regulares en segundo plano. Esto permite la creación automatizada de copias de seguridad, la programación de actualizaciones, la sincronización de archivos y mucho más. Puedes hacer todo eso y más con crontab.

Artículos recomendados:-

Aquí hay algunos artículos que lo ayudarán a obtener más detalles sobre Linux Crontab, así que simplemente vaya al enlace.

  1. Preguntas y respuestas de la entrevista de Linux | Útil y más solicitado
  2. Carreras en Linux
  3. Las 10 mejores aplicaciones de Linux útiles para administradores de sistemas
  4. Linux vs Windows 10