J'ai créé un script Shell appelé /home/root/cron_grads.sh
(chmodded 755) sur mon serveur.
Dans ce répertoire, il y a plus de scripts de graduation comme 500hPa_p0.gs
(644). Mon script principal crée un fichier temporaire grads_exec.gs
, le remplit de contenu et essaie ensuite de copier le contenu de 500hPa_p0.gs
à la fin de celui-ci avant d'exécuter le tout. Cela fonctionne très bien, même sur le serveur si je le démarre manuellement.
Mais en utilisant crontab -e
avec:
42 0,6,12,18 * * * /home/root/grads/cron_grads.sh
... une erreur se produit. Le script démarre mais les diplômés disent:
cat: 500hPa_p0.gs: File or directory not found
J'utilise bash dans cron_grads.sh
avec #!/bin/bash
en haut. crontab -e
contient également Shell=/bin/bash
.
Des idées?
Il s'agit d'un problème dans votre cron_grads.sh
script. Lorsque vous l'appelez manuellement, je suppose que vous êtes dans /home/root
donc il exécuterait quelque chose comme:
echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs
Mais si vous avez exécuté cela depuis /home/oli/
, il tenterait d'écrire dans /home/oli/grads_exec.gs
et lire à partir de /home/oli/500hPa_p0.gs
. Voilà pourquoi le chat explose dans votre cas.
Pour corriger, soit explicitement cd dans le bon répertoire (et utilisez un chemin absolu):
cd /home/root
echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs
Ou utilisez des chemins absolus partout:
echo test > /home/root/grads_exec.gs
cat /home/root/500hPa_p0.gs >> /home/root/grads_exec.gs
Ou pour des raisons de sécurité, les deux.