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

44

Había establecido 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 se ha enviado a / var / spool / mail / lucky".

El contenido de myfile.sh es:

mkdir jh
cd jh 
Abhishek Tripathi
fuente
Esto puede ayudarlo: help.ubuntu.com/community/CronHowto
PeppeDAlterio
2
si myfile.sh está configurado como ejecutable?
rogerdpack

Respuestas:

61

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

mkdir jh
cd jh 

Debe proporcionar la ruta completa donde jhdebe crearse el directorio. 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

Tampoco /usr/bin/shes el camino correcto para sh. El camino correcto es /bin/sh. Puede verificar esto con el whereis shcomando. Y aun así, su trabajo cron debería verse así:

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

No olvide hacer que el script sea ejecutable:

chmod +x /home/lucky/myfile.sh
Radu Rădeanu
fuente
Impresionante, me salvó la vida :) La mía funciona bien así. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki
5

La ruta donde parece estar creando la carpeta es /. Esto se debe a que crontabrequiere la ruta completa a la carpeta y los 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.shEsta línea es correcta, aunque debe verificar la ruta para ver si sh existe en / usr / bin / sh o no (use which shpara ver la ruta donde existe sh; la mía era / bin / sh)

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

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

pingüino
fuente