56 votes

Comment définir une tâche cron pour exécuter un Shell Shell ?

J'avais mis en place une tâche cron :

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

Le principal problème est qu'au moment de la programmation, il y a une erreur : "le courrier a été envoyé à /var/spool/mail/lucky".

Le contenu de myfile.sh est :

mkdir jh
cd jh

86voto

Radu Rădeanu Points 156862

Ce n'est pas correct pour un script qui est défini comme une tâche cron :

mkdir jh
cd jh 

Vous devez donner le chemin complet où jh doit être créé. De plus, dans ce chemin, vous devez avoir la permission de créer de nouveaux fichiers/répertoires.

Par exemple, votre script devrait ressembler à :

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

Aussi /usr/bin/sh n'est pas la bonne voie pour sh . Le bon chemin est /bin/sh . Vous pouvez le vérifier avec whereis sh commandement. Et même ainsi, votre travail cron devrait ressembler à :

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

N'oubliez pas de rendre le script exécutable :

chmod +x /home/lucky/myfile.sh

8voto

penguinRaider Points 116

Le chemin dans lequel le dossier semble être créé est le suivant / . Cela est dû au fait que le crontab nécessite le chemin complet du dossier et des fichiers dans tous les fichiers qu'il exécute .

Donc le chemin dans le myfile.sh devrait être

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.sh Cette ligne est correcte bien que vous devriez vérifier le chemin pour voir si sh existe dans /usr/bin/sh ou non (utiliser which sh pour voir le chemin où sh existe ; le mien était /bin/sh)

Si vous êtes pressé de commencer à écrire une crontab, ce lien contient de très bons exemples.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X