Comment faire pour exécuter un Script Shell par Tâche Cron
J'ai un Shell script comme ci-dessous
echo "Hello World"
Le script est situé dans /root/scripts/
dossier que test.sh
J'ai également créé une tâche cron comme ci-dessous
0-59 * * * * ./scripts/test.sh
Maintenant la tâche cron n'est pas l'impression que le contenu en test.sh
chaque minute.
Permettez-moi de savoir si j'ai donné un mauvais répertoire ou j'ai un autre problème dans mon code.
Vous devez vous connecter pour publier un commentaire.
Je
/root/scripts/test.sh
. Je ne sais pas ce que cron comme le actuel répertoire...test.sh > /tmp/cron.log
(vous auriez probablement souhaitez rediriger stderr, à un stade aussi l'utilisation de2>&1
). Sinon vous n'allez pas voir la sortie. Il reçoit un courrier électronique à la tâche cron propriétairechmod +x /root/scripts/test.sh
)#!/bin/sh
ou similairePlus en plus de choses pour s'exécuter sous cron est très difficile. Tâches Cron exécuter avec un massivement coupe-bas à l'environnement. Il est instructif d'imprimer l'environnement à la disposition de votre script (utiliser
env
) et de les comparer et de contraste avec ce que vous avez disponible à partir de votre shell interactif.Vous Devez utiliser
pour exécuter le script à chaque minute
et vérifier propriétaire de votre dossier de script si le propriétaire n'avez pas l'autorisation d'exécuter le script de donner l'autorisation ou de changement de propriétaire qui disposent de l'autorisation
Lorsque vous ajoutez le fichier dans le cron ne pas comprendre". /scripts/test.sh'. Donc, vous devriez ajouter cron comme suit:
Et vous ajouter la permission de fichier:
Lors de l'exécution de script que okey.
Un problème commun rencontré par les nouveaux utilisateurs unix lors de l'utilisation de cron pour lancer les scripts, c'est que leur cronjobs n'ont pas accès à la même environnement que leurs shell de l'utilisateur. Ainsi, un script exécuté dans un shell utilisateur fonctionne parfaitement, mais échoue lorsque lancé par cron. Le coupable numéro un dans cette affaire, c'est que votre shell $variable d'environnement PATH diffère de celle de la tâche cron de l'interpréteur.
De test run "/bin/echo $PATH > myShellPath'. Dans cron run '/bin/echo $PATH > myCronPath'. Comparer myShellPath avec myCronPath.
Dans l'exemple fourni le script est exécuté à l'écho, sur mon CENTOS6 système se trouve dans /bin. La commande echo est trouvé par le shell par la recherche de la "echo' fichier dans l'un des répertoires listés dans la variable d'environnement $PATH variable d'environnement. Si votre tâche cron $la variable d'environnement PATH ne comprend pas /bin, l'écho de commande échouera.
Si c'est le problème, la solution la plus simple consiste à définir explicitement le chemin d'accès à "echo" dans votre script. Pour afficher votre système chemin d'accès complet de l'écho, de type "qui echo' à votre shell.
Exemple:
Dans ce cas, vous devez modifier le script et de le remplacer "echo" par "/bin/echo'. Mieux encore, définissez la variable $PATH dans votre script pour inclure le répertoire dans lequel echo réside.
Pour plus d'informations, de recherche "quel shell je suis en cours d'exécution et comment sont mes variables d'environnement définies?", "ce que la coquille est à l'aide de cron et comment puis-je configurer cron variables d'environnement?", "comment faire pour afficher ma tâche cron de variables d'environnement?"