web-dev-qa-db-fra.com

Comment puis-je exécuter le script SH dans Crontab

J'ai un simple script .sh:

#!/bin/bash
echo "Test1"
touch /home/john/test.txt
echo "Test2"

Il est exécutable et disponible (ugo + x). Si je lance ce script, il fonctionne comme prévu.

Mais si j'essaye de l'exécuter dans crontab, je n'obtiendrai aucun résultat. Je peux voir dans le journal que le travail commence et que je reçois (Aucun MTA installé, sortie ignorée).

Autant que je sache, ce message n'est pas une erreur? Cela signifie simplement que je n'ai pas de courrier (ou autre canal de sortie)? Mais pourquoi il n'y a pas de résultats du script? BTW - dans CRONTAB j'utilise la ligne suivante:

30 * * * * sh file.sh >> /home/john/log.log

Une idée?

2
JanezKranjski

Si votre script est exécutable, il n'est pas nécessaire que votre crontab exécute /bin/sh file.sh.

De plus, file.sh n'est probablement pas dans le répertoire sur lequel crontab est exécuté. Vous préférerez utiliser /path/to/file.sh

En redirigeant votre sortie crontab, vous voudrez également intercepter stderr. Ayant attrapé stdout et stderr, il me semble que crontab ne se plaint plus de sa capacité à relayer la sortie.

30 * * * * /path/to/file.sh >> /home/john/log.log 2>&1
4
SYN

Merci à tous, avec vos suggestions, j'ai trouvé une erreur. Je n'ai pas utilisé les chemins complets dans crontab et c'était la raison.

0
JanezKranjski