Le problème est le nom de votre script. De man run-parts
:
Si l'option --lsbsysinit ou l'option --regex ne sont pas indiquées, les noms doivent être entièrement constitués de lettres ASCII majuscules et minuscules, de chiffres ASCII, de traits de soulignement ASCII et de traits d'union ASCII.
En d'autres termes, pas d'extension. Curieusement, même avec le --lsbsysinit
vous ne pouvez pas spécifier un fichier comme foo.sh
car il ne correspond à aucun des espaces de noms couverts :
Si l'option --lsbsysinit est donnée, les noms ne doivent pas se terminer par .dpkg-old ou .dpkg-dist ou .dpkg-new ou . dpkg-tmp, et doivent appartenir à un ou plusieurs des espaces de noms suivants : l'espace de noms attribué par LANANA (^[a-z0-9]+$) ; les espaces de noms hiérarchiques et réservés de LSB (^_ ?([a-z0-9_.]+-)+[a-z0-9]+$) ; et l'espace de noms Debian cron script (^[a-zA-Z0-9_-]+$).
Ainsi, alors que les foo.sh
ne fonctionne pas, foo.s-h
o foo.-sh
fonctionnera. Je n'ai aucune idée de la raison pour laquelle ils ont procédé de cette manière, mais je suppose qu'ils suivent une norme ou une autre.
Quoi qu'il en soit, vous avez 2 options, soit renommer vos scripts pour qu'ils n'aient pas d'extension (les extensions sont optionnelles dans *nix de toute façon), soit vous pouvez ne pas utiliser run-parts
tout à fait. Utilisez ceci dans votre crontab
au lieu de cela :
find /home/fabe/tmp/ -prune -type f -executable -exec {} \;
La commande ci-dessus trouvera tous les fichiers exécutables dans le répertoire cible et les exécutera. Je pense que la commande -executable
est une extension GNU, mais vous l'avez étiqueté comme Linux, donc je suppose que vous avez GNU find.