¿Cómo configurar una tarea cron para ejecutar un script de shell?

30

Establecí un trabajo cron:

20 * * * * /usr/bin/sh /home/lucky/myfile.sh

El principal problema es que a la hora programada, hay un error: "el correo ha sido enviado a / var / spool / mail / lucky".

El contenido de myfile.sh es:

mkdir jh
cd jh 
    
pregunta Abhishek Tripathi 27.09.2013 - 18:17

2 respuestas

45

Esto no está bien para un script que se configura como un trabajo cron:

mkdir jh
cd jh 

Debería indicar la ruta completa donde debe crearse el directorio jh . Además, en esta ruta debe tener permiso para crear nuevos archivos / directorios.

Por ejemplo, su script debería verse así:

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

También /usr/bin/sh no es la ruta correcta para sh . La ruta correcta es /bin/sh . Puede verificar esto con el comando whereis sh . Y aun así, su trabajo cron debería verse así:

20 * * * * /home/lucky/myfile.sh

No olvides hacer el script ejecutable:

chmod +x /home/lucky/myfile.sh
    
respondido por el Radu Rădeanu 27.09.2013 - 19:42
5

La ruta en la que parece estar creando la carpeta en es / . Esto se debe a que crontab requiere ruta completa a la carpeta y archivos en todos los archivos que ejecuta.

Entonces, la ruta en myfile.sh debería ser

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.sh Esta línea es correcta, aunque debes verificar la ruta para ver si sh existe en / usr / bin / sh o no (usa which sh para ver la ruta donde sh existe; la mía era / bin / sh)

Si tiene prisa por comenzar a escribir crontab, este enlace tiene buenos ejemplos

enlace

    
respondido por el penguinRaider 27.09.2013 - 19:53

Lea otras preguntas en las etiquetas