Yo uso el comando crontab -e
para ejecutar un script de shell a intervalos regulares.
Pero algo está mal con eso.
El script de shell está ubicado en /opt/oneinstack/oneinstack
, Entonces mi crontab es:
0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2> & 1 &
El permiso para el archivo backup.sh es 755.
El usuario que usa el crontab -e
el comando es raíz
El mensaje en /data/back.log es /bin/sh no such file or directory .
Al igual que el título.
La ejecución manual backup.sh
no es problema.
¿Qué pasa con eso y cómo puedo solucionarlo?
Espera que alguien me ayude. ¡Muchas gracias!
Respuestas
1 para la respuesta № 1Intente configurar lo siguiente antes de la lista crontab. Por ejemplo, si esta línea está en la parte superior:
0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2>&1 &
entonces se ve así:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2>&1 &
En adición: Como se mencionó en @Ugur, no es necesario hacer un CD, si se ocupan de las rutas correctamente en el backup.sh
. Por ejemplo:
ROOTPATH="/path/to/data"
TARTGETPATH="/path/to/target"
FileToBackup="${ROOTPATH}/myfile"
rsync $FileToBackup $TARGETPATH/