Lokomass Posté(e) le 10 juin 2012 Posté(e) le 10 juin 2012 Bonsoir à tous, Je rencontre un problème particulièrement génant. Mon crontab ne fonctionne qu'à moitié. C'est à dire que certains scripts sont executés, d'autre non. Et ce sur mes deux NAS. J'ai donc vérifier, les emplcaments, les syntaxes, les droits, etc... mais je ne vois rien d'anormal. Je peux même executer mes scripts à la main, ça fonctionne, mais pas via crontab. Voici le fichier : NAS> cat /etc/crontab #minute hour mday month wday who command 20 18 * * 1,4 root /usr/bin/php -n -d safe_mode_exec_dir='' /usr/syno/bin/autoupdate.php 0 0 * * * root /usr/sbin/ntpdate -b pool.ntp.org 55 21 * * 2,5 root /usr/syno/bin/synopkg chkupgradepk 50 23 * * 5 root /bin/ash /usr/syno/scripts/boot.sh 0 22 * * 6 root /bin/ash /usr/syno/scripts/clean.sh 0 0 1 * * root /bin/ash /usr/syno/scripts/del.sh 0 0 * * * root /bin/ash /usr/syno/scripts/dump.sh Iici, clean, del et dump fonctionne bien mais pas boot.sh. NAS> ll /usr/syno/scripts/ 6291 4 drwxr-xr-x 24 root root 4096 Apr 15 22:31 .. 15396 4 -rwxr-xr-x 1 root root 266 Apr 19 20:20 dump.sh 15410 4 -rwxr-xr-x 1 root root 40 Apr 19 20:20 boot.sh 15411 24 -rwxr-xr-x 1 root root 24306 Apr 19 20:20 clean.sh 15412 4 -rwxr-xr-x 1 root root 49 Apr 19 20:20 del.sh 17172 4 drwxr-xr-x 2 root root 4096 Apr 19 20:20 . NAS> cat /usr/syno/scripts/boot.sh #!/bin/ash wakelan F4:6D:04:9A:BB:5C Je précise que mon boot.sh fonctionne bien lorsque je le lance à la mano. Et pareil sur mon autre syno, j'ai le même phénomène. NAS-Backup> cat /etc/crontab #minute hour mday month wday who command 20 18 * * 1,4 root /usr/bin/php -n -d safe_mode_exec_dir='' /usr/syno/bin/autoupdate.php 0 0 * * * root /usr/sbin/ntpdate -b pool.ntp.org 55 21 * * 2,5 root /usr/syno/bin/synopkg chkupgradepkg 0 1 * * * root /bin/ash /usr/syno/scripts/restore.sh 0 0 * * 7 root /bin/ash /usr/syno/scripts/backup.sh restore.sh fonctionne très bien tous les jours, et backup.sh ne se lance jamais, et à la main ça marche impecc.... Merci à celui qui pourra m'aider. 0 Citer
Kramlech Posté(e) le 10 juin 2012 Posté(e) le 10 juin 2012 Est-ce que tu as bien des tabulations entre les informations, et pas des espaces ? La mise en forme est importante. Il faut impérativement passer d'une colonne à l'autre via une tabulation .... 0 Citer
Lokomass Posté(e) le 11 juin 2012 Auteur Posté(e) le 11 juin 2012 Oui oui ce sont bel et bien des tabulations, j'ai aussi vérifier ceci... 0 Citer
CoolRaoul Posté(e) le 11 juin 2012 Posté(e) le 11 juin 2012 Essaie de rajouter "en dur" la définition du PATH ("PATH=...") au début du script "/usr/syno/scripts/boot.sh" J'en profite pour marteler un de mes mantras : *toujours* positionner le PATH dans les scripts shell. On n'a par principe aucune garantie de la valeur de ce dernier (héritée de l'environnement du process père) au moment ou le script s'exécute. Par exemple, dans ton cas ca m'étonnerait que le PATH hérité via crond contienne le répertoire ou est situé ta commande "wakelan" 0 Citer
Lokomass Posté(e) le 11 juin 2012 Auteur Posté(e) le 11 juin 2012 OK, je vais essayer ceci. Donc je rajoute en tout début, juste après #!/bin/ash, la commande path de mon /root/.profile. Il n'existe pas une sorte d'archivage de log qui pourrait tout simplement me dire "wakelan ; command not found" ? Merci 0 Citer
CoolRaoul Posté(e) le 11 juin 2012 Posté(e) le 11 juin 2012 OK, je vais essayer ceci. Donc je rajoute en tout début, juste après #!/bin/ash, la commande path de mon /root/.profile. C'est ça, et même tu peux te limiter à ne mettre que le PATH minimum nécessaire à l'exécution de ton script, du genre: PATH=/bin:/usr/bin:<repértoire de la command wakelan> un fois que cette ligne est dans ton script, si il marche quand lancé "à la main" il marchera lorsque lancé par cron Il n'existe pas une sorte d'archivage de log qui pourrait tout simplement me dire "wakelan ; command not found" ? Merci Me semble pas que le cron busybox ait un log par défaut. Mais rien ne t'empéche d'ajouter a la fin de tes entrées crontab un truc du genre: "> /var/log/<nomlog>.log 2>&1" ou bien: ">> /var/log/<nomlog>.log 2>&1" si tu veux éviter d'écraser le log précédent (penser a nettoyer dans ce cas) par exemple: /usr/syno/scripts/boot.sh > /var/log/cron-boot.log 2>&1 0 Citer
Lokomass Posté(e) le 11 juin 2012 Auteur Posté(e) le 11 juin 2012 OK merci pour ces précieux conseils, je test ce soir et je te dirai. Merci encore 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.