¿Cómo pasar argumentos al script de shell en crontab?

En este artículo, discutiremos cómo programar scripts de shell en contrab y también cómo pasar los parámetros necesarios.

Primero, creemos un script simple que programaremos para que se ejecute cada 2 minutos. El siguiente es un script simple que calcula la suma de todos los parámetros pasados ​​y los imprime en STDOUT junto con la hora en que se ejecutó el script.

#! /usr/bin/sh
SUM=0
for i in $@ 
do 
    SUM=`expr $SUM + $i`
done
echo "$SUM was calculated at `date`"

Nota: #! /usr/bin/sh (que especifica la ruta del intérprete de secuencias de comandos) es necesario si desea que la secuencia de comandos sea ejecutable.

Suponiendo que hayamos guardado este script como my_script.sh en nuestro directorio de inicio, podemos hacerlo ejecutable ingresando el siguiente comando en nuestra terminal:

chmod +x my_script.sh

Podemos probar nuestro script si funciona correctamente:

./my_script.sh 1 2 3 4 5
15 was calculated at Thursday 01 July 2021 01:24:04 IST 2021

La expresión de programación crontab tiene las siguientes partes:

Para programar la ejecución de nuestro script, debemos ingresar la expresión de programación crontab en el archivo crontab. Para hacer eso, simplemente ingrese lo siguiente en la terminal:

crontab -e

Es posible que se le pida que seleccione un editor, elija nano y agregue la siguiente línea al final del archivo crontab abierto:

*/2 * * * * /home/$(USUARIO)/my_script.sh 1 2 3 4 5 >> /home/$(USUARIO)/output.txt

donde $(USUARIO) se puede reemplazar con su nombre de usuario. Guardar los cambios y salir. Esto programará nuestro script de shell para ejecutarse cada 2 minutos con 1 2 3 4 5 como argumentos de línea de comandos y escribirá el resultado en /home/$(USER)/ouput.txt .

Nota: hay algunas cosas a tener en cuenta antes de programar trabajos cron:

  • Todos los trabajos cron se programan en la zona horaria local en la que opera el sistema donde se programan los trabajos. Esto podría ser problemático si los trabajos se programan en servidores con personal multinacional que lo utiliza. Especialmente si los usuarios también pertenecen a países que siguen la práctica del horario de verano.
  • Todos los trabajos cron se ejecutan en sus propias sesiones de shell anónimas y aisladas y su salida a STDOUT (si corresponde) debe dirigirse a un archivo si deseamos verlos.
  • Todos los trabajos cron se ejecutan en el contexto del usuario para el que fueron programados. Por lo tanto, siempre es una buena práctica proporcionar una ruta absoluta a los scripts y archivos de salida para evitar confusiones y desorden.

Publicación traducida automáticamente

Artículo escrito por ayush.verma16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *