One place for hosting & domains

      tareas

      Cómo usar Cron para automatizar tareas en Ubuntu 18.04


      Shaun Lewis escribió una versión anterior de este tutorial.

      Introducción

      Cron es un demonio de programación de tareas basado en el tiempo que se encuentra en sistemas operativos similares a Unix, incluso en distribuciones de Linux. Se ejecuta en segundo plano y las tareas programadas con él, llamadas “tareas de Cron”, se ejecutan de forma automática, lo cual hace que este demonio sea útil para automatizar tareas relacionadas con el mantenimiento.

      En esta guía se ofrece una descripción general de cómo programar tareas usando la sintaxis especial de Cron. También se repasan algunos accesos directos que se pueden usar para facilitar la escritura y la comprensión de la programación de tareas.

      Requisitos previos

      Para completar esta guía, necesitará acceso a una computadora con Ubuntu 18.04. Puede usar su máquina local, una máquina virtual o un servidor virtual privado.

      Independientemente del tipo de computadora que utilice para seguir esta guía, debe disponer de un usuario no root con privilegios administrativos configurado. Para configurarlo, siga nuestra Guía de configuración inicial de servidores para Ubuntu 18.04.

      Instalar Cron

      Casi todas las distribuciones de Linux tienen alguna forma de Cron instalada por defecto. Sin embargo, si utiliza una máquina de Ubuntu que no tiene instalado Cron, puede instalarlo usando APT.

      Antes de instalar Cron en una máquina con Ubuntu, actualice el índice de paquetes locales de esta:

      Luego, instale Cron con el siguiente comando:

      Deberá asegurarse de que esté configurado para ejecutarse en segundo plano:

      • sudo systemctl enable cron

      Output

      Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable cron

      Una vez hecho eso, Cron quedará instalado en su sistema y listo para comenzar a programar tareas.

      Información sobre el funcionamiento de Cron

      Las tareas de Cron se registran y administran en un archivo especial llamado crontab. Cada perfil de usuario del sistema puede tener su propio crontab para programar tareas, que se almacenan en /var/spool/cron/crontabs.

      Para programar una tarea, simplemente debe abrir su crontab a fin de editar y añadir una tarea escrita en forma de expresión de Cron. La sintaxis para escribir expresiones de Cron puede dividirse en dos elementos: la programación y el comando de ejecución.

      El comando puede ser prácticamente cualquiera que ejecute habitualmente en la línea de comandos. El componente de programación de la sintaxis se divide en 5 campos distintos, que se escriben en el siguiente orden:

      Campo Valores permitidos
      minute 0-59​​​
      hour 0-23
      Day of the month 1-31
      month 1-12 o JAN-DEC
      Day of the week 0-6 o SUN-SAT

      Juntas, las tareas programadas en una crontab se estructuran de la siguiente manera:

      minute hour day_of_month month day_of_week command_to_run
      

      A continuación, se ofrece un ejemplo funcional de una expresión de Cron. Esta expresión ejecuta el comando curl http://www.google.com cada martes a las 5:30 p. m.:

      30 17 * * 2 curl http://www.google.com
      

      También puede incluir ciertos caracteres especiales en el componente de programación de una expresión de Cron para facilitar la programación:

      • *: en las expresiones de Cron, el asterisco es la variable comodín que representa “todo”. Por lo tanto, una tarea programada con * * * * * ... se ejecutará cada minuto de cada hora de cada día de cada mes.
      • ,: las comas separan los valores de programación para crear una lista. Si desea que una tarea se ejecute al comienzo y a la mitad de cada hora, en lugar de escribir dos tareas separadas (por ejemplo, 0 * * * * ... y 30 * * * * ...​), podría lograr la misma funcionalidad con una sola (0,30 * * * * ...).
      • -: el guión representa una variedad de valores en el campo de programación. En lugar de tener 30 tareas programadas por separado para un comando que desee ejecutar durante los primeros 30 minutos de cada hora (como en el caso de 0 * * * * ..., 1 * * * * ... y 2 * * * * ..., entre otros), podría programarlo con el valor 0-29 * * * * ....
      • /: puede usar una barra diagonal con un asterisco para expresar un valor de paso. Por ejemplo, en lugar de escribir ocho tareas de Cron separadas para ejecutar un comando cada tres horas (como en el caso de 0 0 * * * ..., 0 3 * * * ... y 0 6 * * * ..., entre otros), podría programarlo con el siguiente valor: 0 */3 * * * ....

      Nota: No puede expresar valores de paso de forma arbitraria; solo puede usar enteros que se dividan de manera uniforme en el intervalo que permita el campo en cuestión. Por ejemplo, en el campo “hours”, solo pueden seguir a la barra diagonal los números 1, 2, 3, 4, 6, 8 o 12.

      A continuación, se muestran algunos ejemplos más relacionados con el uso del componente de programación de Cron:

      • * * * * *: ejecuta el comando a cada minuto.
      • 12 * * * *: ejecuta el comando 12 minutos después de cada hora.
      • 0,15,30,45 * * * *: ejecuta el comando cada 15 minutos.
      • */15 * * * *: ejecuta el comando cada 15 minutos.
      • 0 4 * * *: ejecuta el comando todos los días a las 4:00 a. m.
      • 0 4 * * 2-4: ejecuta el comando todos los martes, miércoles y jueves a las 4 a. m.
      • 20,40 */8 * 7-12 *: ejecuta el comando en los minutos 20 y 40 de cada octava hora todos los días de los últimos 6 meses del año.

      Si algo de esto le parece confuso o necesita ayuda para escribir la programación de sus propias tareas de Cron, Cronitor ofrece un editor de expresiones de programación de Cron práctico denominado “Crontab Guru” que puede utilizar para verificar si sus programaciones de Cron son válidas.

      Administrar crontabs

      Una vez que haya definido una programación y sepa la tarea que desea ejecutar, deberá disponerla en un sitio en el que su demonio pueda leerla.

      Como se mencionó anteriormente, crontab es un archivo especial que contiene la programación de tareas que ejecutará Cron. Sin embargo, estas no están diseñadas para editarse de forma directa. Como alternativa, se recomienda usar el comando crontab. Esto le permite editar el crontab de su perfil de usuario sin modificar sus privilegios con sudo. El comando crontab también le permite saber si el crontab contiene errores de sintaxis, beneficio del que no dispone con la edición directa.

      Puede editar su crontab con el siguiente comando:

      La primera vez que ejecute el comando crontab en un perfil de usuario, le solicitará seleccionar un editor de texto predeterminado al editar su crontab:

      Output

      no crontab for sammy - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny 4. /bin/ed Choose 1-4 [1]:

      Ingrese el número correspondiente al editor que prefiera. También puede presionar ENTER para aceptar la opción predeterminada: nano.

      Una vez que realice su selección, accederá a un nuevo crontab que contiene algunas instrucciones con comentarios sobre cómo usarlo:

      # Edit this file to introduce tasks to be run by cron.
      #
      # Each task to run has to be defined through a single line
      # indicating with different fields when the task will be run
      # and what command to run for the task
      #
      # To define the time you can provide concrete values for
      # minute (m), hour (h), day of month (dom), month (mon),
      # and day of week (dow) or use '*' in these fields (for 'any').#
      # Notice that tasks will be started based on the cron's system
      # daemon's notion of time and timezones.
      #
      # Output of the crontab jobs (including errors) is sent through
      # email to the user the crontab file belongs to (unless redirected).
      #
      # For example, you can run a backup of all your user accounts
      # at 5 a.m every week with:
      # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
      #
      # For more information see the manual pages of crontab(5) and cron(8)
      #
      # m h  dom mon dow   command
      

      Cuando ejecute crontab -e en el futuro, mostrará su crontab en este editor de texto de forma automática. Cuando se encuentre en el editor, podrá ingresar su programación con cada tarea en una nueva línea. También puede guardar y cerrar el crontab por ahora (CTRL + X, Y, y luego ENTER si seleccionó nano).

      Nota: En sistemas basados en Linux, hay otro crontab almacenado en el directorio /etc/. Es un crontab que se aplica a todo el sistema que cuenta con un campo adicional para el perfil de usuario en el que se debe ejecutar cada tarea de Cron. Este tutorial se centra en crontabs específicos de usuarios, pero si desea editar el crontab que se aplica a todo el sistema, puede hacerlo con el siguiente comando:

      Si desea ver el contenido de su crontab, pero no editarlo, puede usar este comando:

      Puede eliminar su crontab con el siguiente comando:

      Advertencia: Este comando no le solicitará confirmar la eliminación de su crontab. Ejecútelo únicamente si está seguro de que desea eliminarlo.

      Con este comando se eliminará el crontab del usuario de forma inmediata. Sin embargo, puede incluir el indicador -i para que el comando le solicite confirmar si realmente desea eliminar el crontab del usuario:

      Output

      crontab: really delete sammy's crontab? (y/n)

      Cuando se solicite, deberá ingresar y para eliminar el crontab o n para cancelar la eliminación.

      Administrar el resultado de las tareas de Cron

      Debido a que las tareas de Cron se ejecutan en segundo plano, no siempre es evidente que la ejecución se realice de forma correcta. Ahora que sabe usar el comando crontab y programar tareas de Cron, puede comenzar a experimentar con algunas maneras distintas de redireccionar el resultado de las tareas como ayuda para controlar que se ejecuten de forma correcta.

      Si tiene un agente de transferencia de correo, como Sendmail, instalado y configurado correctamente en su servidor, puede enviar el resultado de las tareas de Cron a la dirección de correo electrónico asociada a su perfil de usuario de Linux. También puede especificar manualmente una dirección de correo electrónico proporcionando un ajuste MAILTO en la parte superior del crontab.

      Por ejemplo, podría añadir las líneas siguientes a un crontab. Estas incluyen una instrucción MAILTO seguida de una dirección de correo electrónico de ejemplo, una directiva SHELL que indica la shell que se debe ejecutar (bash en este ejemplo), una directiva HOME que indica la ruta en la que se debe buscar el binario de Cron y una única tarea de cron:

      . . .
      
      MAILTO="example@digitalocean.com"
      SHELL=/bin/bash
      HOME=/
      
      * * * * * echo ‘Run this command every minute’
      

      Esta tarea en particular mostrará “Run this command every minute” (Ejecutar este comando a cada minuto) y el resultado se enviará por correo electrónico a cada minuto a la dirección especificada después de la directiva MAILTO.

      También puede redireccionar el resultado de una tarea de Cron a un archivo de registro o a una ubicación vacía para evitar recibir un correo electrónico con el resultado.

      Para anexar el resultado de un comando programado a un archivo de registro, añada >> al final del comando, seguido por el nombre y la ubicación de un archivo de registro que elija, de la siguiente manera:

      * * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
      

      Supongamos que desea usar Cron para ejecutar una secuencia de comandos, pero quiere que se siga ejecutando segundo plano. Para hacerlo, podría redireccionar el resultado de la secuencia de comandos a una ubicación vacía, como /dev/null, que elimina de inmediato cualquier dato que se escriba en ella. Por ejemplo, la siguiente tarea de Cron ejecuta una secuencia de comandos PHP y lo hace en segundo plano:

      * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
      

      Esta tarea de Cron también redirecciona un error estándar, representado por 2, al resultado estándar (>&1). Dado que el resultado estándar ya se redirecciona a /dev/null, esencialmente esto permite que la secuencia de comandos se ejecute de forma silenciosa. Incluso si el crontab contiene una instrucción MAILTO, el resultado del comando no se enviará a la dirección de correo electrónico especificada.

      Restringir el acceso

      Puede administrar el permiso de los usuarios para usar el comando crontab con los archivos cron.allow y cron.deny, que se almacenan en el directorio /etc/. Si hay un archivo cron.deny, ningún usuario incluido en él podrá editar su crontab. Si hay un archivo cron.allow, solo los usuarios incluidos en él podrán editar sus crontabs. Si los dos archivos están presentes y un mismo usuario está incluido en ambos, el archivo cron.allow anulará cron.deny y el usuario podrá editar su crontab.

      Por ejemplo, para denegar el acceso a todos los usuarios y luego dar acceso al usuario ishmael, podría usar la siguiente secuencia de comandos:

      • sudo echo ALL >>/etc/cron.deny
      • sudo echo ishmael >>/etc/cron.allow

      Primero, bloqueamos a todos los usuarios anexando ALL al archivo cron.deny. Luego, al anexar el nombre de usuario al archivo cron.allow, le damos acceso al perfil de usuario ishmael para ejecutar tareas de Cron.

      Tenga en cuenta que si un usuario tiene privilegios sudo, puede editar el crontab de otro usuario con el siguiente comando:

      Sin embargo, si cron.deny está presente y user está incluido en él, pero no en cron.allow, verá el siguiente error después de ejecutar el comando anterior:

      Output

      The user user cannot use this program (crontab)

      Por defecto, la mayoría de los demonios de Cron preverán que todos los usuarios tienen acceso a Cron, a menos que cron.allow o cron.deny estén presentes.

      Sintaxis especial

      También hay varios comandos abreviados que puede usar en su archivo crontab para agilizar la programación de tareas. Básicamente, son atajos para la programación numérica equivalente especificada:

      Comando Abrevia
      @hourly 0 * * * *
      @daily 0 0 * * *
      @weekly 0 0 * * 0
      @monthly 0 0 1 * *
      @yearly 0 0 1 1 *

      Nota: No todos los demonios de Cron pueden analizar esta sintaxis (en particular, las versiones antiguas), por lo que debe comprobar que funcione para poder confiar en ella.

      Además, el comando abreviado @reboot ejecuta cualquier comando que le siga cada vez que se inicie el servidor:

      @reboot echo "System start up"
      

      El uso de estos atajos, siempre que sea posible, puede facilitar la interpretación de la programación de tareas en su crontab.

      Conclusión

      Cron es una herramienta muy útil y flexible que puede reducir la carga de muchas tareas relacionadas con la administración del sistema. Cuando se combina con secuencias de comandos shell, puede automatizar tareas que habitualmente son tediosas o complicadas. Por ejemplo, podría escribir una secuencia de comandos shell para enviar copias de seguridad de datos a una solución de almacenamiento de objetos y, luego, automatizarlas con Cron.



      Source link

      Cómo usar Cron para automatizar tareas en CentOS 8


      Shaun Lewis escribió una versión anterior de este tutorial.

      Introducción

      Cron es un demonio de programación de tareas basado en el tiempo que se encuentra en sistemas operativos similares a Unix, incluso en distribuciones de Linux. Se ejecuta en segundo plano y las tareas programadas con él, llamadas “tareas de Cron”, se ejecutan de forma automática, lo cual hace que este demonio sea útil para automatizar tareas relacionadas con el mantenimiento.

      En esta guía se ofrece una descripción general de cómo programar tareas usando la sintaxis especial de Cron. También se repasan algunos accesos directos que se pueden usar para facilitar la escritura y la comprensión de la programación de tareas.

      Requisitos previos

      Para completar esta guía, necesitará acceso a una computadora con CentOS 8. Puede ser su máquina local, una máquina virtual o un servidor virtual privado.

      Independientemente del tipo de computadora que utilice para seguir esta guía, debe disponer de un usuario no root con privilegios administrativos configurado. Para configurarlo, siga nuestra Guía de configuración inicial de servidores para CentOS 8.

      Instalar Cron

      Casi todas las distribuciones de Linux tienen alguna forma de Cron instalada por defecto. Sin embargo, si utiliza una máquina de CentOS que no tenga instalado cron, puede instalarlo usando dnf.

      Antes de instalar cron en una máquina con CentOS, actualice el índice local de paquetes de esta:

      Luego, instale el demonio cron con el siguiente comando:

      • sudo dnf install crontabs

      Este comando le solicitará confirmar que quiere instalar el paquete crontabs y sus dependencias. Hágalo presionando y y luego ENTER.

      Con esto se instalará cron en su sistema, pero necesitará iniciar el demonio de forma manual. También deberá asegurarse de que esté configurado para ejecutarse cuando el servidor se inicie. Puede realizar ambas acciones con el comando systemctl.

      Para iniciar el demonio cron, ejecute el siguiente comando:

      • sudo systemctl start crond.service

      Para establecer que se ejecute cron cuando se inicie el servidor, escriba lo siguiente:

      • sudo systemctl enable crond.service

      Una vez hecho eso, Cron quedará instalado en su sistema y listo para comenzar a programar tareas.

      Información sobre el funcionamiento de Cron

      Las tareas de Cron se registran y administran en un archivo especial llamado crontab. Cada perfil de usuario del sistema puede tener su propio crontab, que permite la programación de tareas y se almacena en /var/spool/cron/.

      Para programar una tarea, simplemente debe abrir su crontab a fin de editar y añadir una tarea escrita en forma de expresión de Cron. La sintaxis para escribir expresiones de Cron puede dividirse en dos elementos: la programación y el comando de ejecución.

      El comando puede ser prácticamente cualquiera que ejecute habitualmente en la línea de comandos. El componente de programación de la sintaxis se divide en 5 campos distintos, que se escriben en el siguiente orden:

      Campo Valores permitidos
      minute 0-59​​​
      hour 0-23
      Day of the month 1-31
      month 1-12 o JAN-DEC
      Day of the week 0-6 o SUN-SAT

      Juntas, las tareas programadas en una crontab se estructuran de la siguiente manera:

      minute hour day_of_month month day_of_week command_to_run
      

      A continuación, se ofrece un ejemplo funcional de una expresión de Cron. Esta expresión ejecuta el comando curl http://www.google.com cada martes a las 5:30 p. m.:

      30 17 * * 2 curl http://www.google.com
      

      También puede incluir ciertos caracteres especiales en el componente de programación de una expresión de Cron para facilitar la programación:

      • *: en las expresiones de Cron, el asterisco es la variable comodín que representa “todo”. Por lo tanto, una tarea programada con * * * * * ... se ejecutará cada minuto de cada hora de cada día de cada mes.
      • ,: las comas separan los valores de programación para crear una lista. Si desea que una tarea se ejecute al comienzo y a la mitad de cada hora, en lugar de escribir dos tareas separadas (por ejemplo, 0 * * * * ... y 30 * * * * ...​), podría lograr la misma funcionalidad con una sola (0,30 * * * * ...).
      • -: el guión representa una variedad de valores en el campo de programación. En lugar de tener 30 tareas programadas por separado para un comando que desee ejecutar durante los primeros 30 minutos de cada hora (como en el caso de 0 * * * * ..., 1 * * * * ... y 2 * * * * ..., entre otros), podría programarlo con el valor 0-29 * * * * ....
      • /: puede usar una barra diagonal con un asterisco para expresar un valor de paso. Por ejemplo, en lugar de escribir ocho tareas de Cron separadas para ejecutar un comando cada tres horas (como en el caso de 0 0 * * * ..., 0 3 * * * ... y 0 6 * * * ..., entre otros), podría programarlo con el siguiente valor: 0 */3 * * * ....

      Nota: No puede expresar valores de paso de forma arbitraria; solo puede usar enteros que se dividan de manera uniforme en el intervalo que permita el campo en cuestión. Por ejemplo, en el campo “hours”, solo pueden seguir a la barra diagonal los números 1, 2, 3, 4, 6, 8 o 12.

      A continuación, se muestran algunos ejemplos más relacionados con el uso del componente de programación de Cron:

      • * * * * *: ejecuta el comando a cada minuto.
      • 12 * * * *: ejecuta el comando 12 minutos después de cada hora.
      • 0,15,30,45 * * * *: ejecuta el comando cada 15 minutos.
      • */15 * * * *: ejecuta el comando cada 15 minutos.
      • 0 4 * * *: ejecuta el comando todos los días a las 4:00 a. m.
      • 0 4 * * 2-4: ejecuta el comando todos los martes, miércoles y jueves a las 4 a. m.
      • 20,40 */8 * 7-12 *: ejecuta el comando en los minutos 20 y 40 de cada octava hora todos los días de los últimos 6 meses del año.

      Si algo de esto le parece confuso o necesita ayuda para escribir la programación de sus propias tareas de Cron, Cronitor ofrece un editor de expresiones de programación de Cron práctico denominado “Crontab Guru” que puede utilizar para verificar si sus programaciones de Cron son válidas.

      Administrar crontabs

      Una vez que haya definido una programación y sepa la tarea que desea ejecutar, deberá disponerla en un sitio en el que su demonio pueda leerla.

      Como se mencionó anteriormente, crontab es un archivo especial que contiene la programación de tareas que ejecutará Cron. Sin embargo, estas no están diseñadas para editarse de forma directa. Como alternativa, se recomienda usar el comando crontab. Esto le permite editar el crontab de su perfil de usuario sin modificar sus privilegios con sudo. El comando crontab también le permite saber si el crontab contiene errores de sintaxis, beneficio del que no dispone con la edición directa.

      Puede editar su crontab con el siguiente comando:

      Con esto, se abrirá su crontab en el editor de texto predeterminado de su perfil de usuario.

      Nota: En los nuevos servidores de CentOS 8, con el comando crontab -e se abrirá el contrab de su usuario con vi por defecto. vi es un editor de texto extremadamente poderoso y flexible, pero puede parecer algo lento para los usuarios que carecen de experiencia en él.

      Si desea usar un editor de texto más accesible como su editor de crontab predeterminado, podría instalar y configurar nano como tal.

      Para hacer esto, instale nano con dnf:

      Cuando se le solicite, presione y y luego ENTER para confirmar que quiere instalar nano.

      Para establecer nano como el editor visual predeterminado de su perfil de usuario, abra el archivo .bash_profile para editarlo. Ahora que lo instaló, puede hacerlo con nano:

      Al final del archivo, añada la siguiente línea:

      ~/.bash_profile

      . . .
      export VISUAL="nano"
      

      Con esto se fija la variable de entorno VISUAL en nano. VISUAL es una variable de entorno de Unix que en muchos programas, incluido crontab, se invoca para editar un archivo. Después de añadir esta línea, guarde y cierre el archivo presionando CTRL + X, Y y luego ENTER.

      Luego vuelva a cargar .bash_profile para que en el shell se aplique el nuevo cambio:

      Cuando se encuentre en el editor, podrá ingresar su programación con cada tarea en una nueva línea. De lo contrario, puede guardar y cerrar el crontab por ahora. Si abrió su crontab con vi, el editor de texto de CentOS 8 predeterminado, puede hacerlo presionando ESC para asegurarse de que esté en el modo de comandos de vi, luego escriba :x y presione INTRO.

      Tenga en cuenta que, en los sistemas Linux, existe otro crontab almacenado en el directorio /etc/. Es un crontab que se aplica a todo el sistema que cuenta con un campo adicional para el perfil de usuario en el que se debe ejecutar cada tarea de Cron. Este tutorial se centra en crontabs específicos de usuarios, pero si desea editar el crontab que se aplica a todo el sistema, puede hacerlo con el siguiente comando:

      Si desea ver el contenido de su crontab, pero no editarlo, puede usar este comando:

      Puede eliminar su crontab con el siguiente comando:

      Advertencia: Este comando no le solicitará confirmar la eliminación de su crontab. Ejecútelo únicamente si está seguro de que desea eliminarlo.

      Con este comando se eliminará el crontab del usuario de forma inmediata. Sin embargo, puede incluir el indicador -i para que el comando le solicite confirmar si realmente desea eliminar el crontab del usuario:

      Output

      crontab: really delete sammy's crontab?

      Cuando se solicite, deberá ingresar y para eliminar el crontab o n para cancelar la eliminación.

      Administrar el resultado de las tareas de Cron

      Debido a que las tareas de Cron se ejecutan en segundo plano, no siempre es evidente que la ejecución se realice de forma correcta. Ahora que sabe usar el comando crontab y programar tareas de Cron, puede comenzar a experimentar con algunas maneras distintas de redireccionar el resultado de las tareas como ayuda para controlar que se ejecuten de forma correcta.

      Si tiene un agente de transferencia de correo, como Sendmail, instalado y configurado correctamente en su servidor, puede enviar el resultado de las tareas de Cron a la dirección de correo electrónico asociada a su perfil de usuario de Linux. También puede especificar manualmente una dirección de correo electrónico proporcionando un ajuste MAILTO en la parte superior del crontab.

      Por ejemplo, podría añadir las líneas siguientes a un crontab. Estas incluyen una instrucción MAILTO seguida de una dirección de correo electrónico de ejemplo, una directiva SHELL que indica la shell que se debe ejecutar (bash en este ejemplo), una directiva HOME que indica la ruta en la que se debe buscar el binario de Cron y una única tarea de cron:

      . . .
      
      MAILTO="example@digitalocean.com"
      SHELL=/bin/bash
      HOME=/
      
      * * * * * echo ‘Run this command every minute’
      

      Esta tarea en particular mostrará “Run this command every minute” (Ejecutar este comando a cada minuto) y el resultado se enviará por correo electrónico a cada minuto a la dirección especificada después de la directiva MAILTO.

      También puede redireccionar el resultado de una tarea de Cron a un archivo de registro o a una ubicación vacía para evitar recibir un correo electrónico con el resultado.

      Para anexar el resultado de un comando programado a un archivo de registro, añada >> al final del comando, seguido por el nombre y la ubicación de un archivo de registro que elija, de la siguiente manera:

      * * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
      

      Supongamos que desea usar Cron para ejecutar una secuencia de comandos, pero quiere que se siga ejecutando segundo plano. Para hacerlo, podría redireccionar el resultado de la secuencia de comandos a una ubicación vacía, como /dev/null, que elimina de inmediato cualquier dato que se escriba en ella. Por ejemplo, la siguiente tarea de Cron ejecuta una secuencia de comandos PHP y lo hace en segundo plano:

      * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
      

      Esta tarea de Cron también redirecciona un error estándar, representado por 2, al resultado estándar (>&1). Dado que el resultado estándar ya se redirecciona a /dev/null, esencialmente esto permite que la secuencia de comandos se ejecute de forma silenciosa. Incluso si el crontab contiene una instrucción MAILTO, el resultado del comando no se enviará a la dirección de correo electrónico especificada.

      Restringir el acceso

      Puede administrar el permiso de los usuarios para usar el comando crontab con los archivos cron.allow y cron.deny, que se almacenan en el directorio /etc/. Si hay un archivo cron.deny, ningún usuario incluido en él podrá editar su crontab. Si hay un archivo cron.allow, solo los usuarios incluidos en él podrán editar sus crontabs. Si los dos archivos están presentes y un mismo usuario está incluido en ambos, el archivo cron.allow anulará cron.deny y el usuario podrá editar su crontab.

      Por ejemplo, para denegar el acceso a todos los usuarios y luego dar acceso al usuario ishmael, podría usar la siguiente secuencia de comandos:

      • sudo echo ALL >>/etc/cron.deny
      • sudo echo ishmael >>/etc/cron.allow

      Primero, bloqueamos a todos los usuarios anexando ALL al archivo cron.deny. Luego, al anexar el nombre de usuario al archivo cron.allow, le damos acceso al perfil de usuario ishmael para ejecutar tareas de Cron.

      Tenga en cuenta que si un usuario tiene privilegios sudo, puede editar el crontab de otro usuario con el siguiente comando:

      Sin embargo, si cron.deny está presente y user está incluido en él, pero no en cron.allow, verá el siguiente error después de ejecutar el comando anterior:

      Output

      The user user cannot use this program (crontab)

      Por defecto, la mayoría de los demonios de Cron preverán que todos los usuarios tienen acceso a Cron, a menos que cron.allow o cron.deny estén presentes.

      Sintaxis especial

      También hay varios comandos abreviados que puede usar en su archivo crontab para agilizar la programación de tareas. Básicamente, son atajos para la programación numérica equivalente especificada:

      Comando Abrevia
      @hourly 0 * * * *
      @daily 0 0 * * *
      @weekly 0 0 * * 0
      @monthly 0 0 1 * *
      @yearly 0 0 1 1 *

      Nota: No todos los demonios de Cron pueden analizar esta sintaxis (en particular, las versiones antiguas), por lo que debe comprobar que funcione para poder confiar en ella.

      Además, el comando abreviado @reboot ejecuta cualquier comando que le siga cada vez que se inicie el servidor:

      @reboot echo "System start up"
      

      El uso de estos atajos, siempre que sea posible, puede facilitar la interpretación de la programación de tareas en su crontab.

      Conclusión

      Cron es una herramienta muy útil y flexible que puede reducir la carga de muchas tareas relacionadas con la administración del sistema. Cuando se combina con secuencias de comandos shell, puede automatizar tareas que habitualmente son tediosas o complicadas.



      Source link