Проблема в названии вашего скрипта. Из man run-parts
:
Если ни опция --lsbsysinit, ни опция --regex не заданы, то имена должны состоять исключительно из прописных и строчных букв ASCII, цифр ASCII, подчеркиваний ASCII и минус дефисов ASCII.
Другими словами, без расширения. Как ни странно, даже с параметром --lsbsysinit
вы не можете указать файл, такой как foo.sh
так как он не соответствует ни одному из охваченных пространств имен:
Если задана опция --lsbsysinit, то имена не должны заканчиваться на .dpkg-old или .dpkg-dist или .dpkg-new или .dpkg-tmp и должны принадлежать одному или нескольким из следующих пространств имен: LANANA назначенное пространство имен (^ [a-z0-9]+$); иерархические и зарезервированные пространства имен LSB (^ _?([а-z0-9 _]+-)+[а-z0-9]+$). и пространство имен сценария Debian cron (^ [a-zA-Z0-9 _-]+$).
Таким образом, пока foo.sh
не работает, foo.s-h
или foo.-sh
будут работать. Я понятия не имею, почему они сделали это таким образом, но, вероятно, они следуют тем или иным стандартам.
В любом случае, у вас есть 2 варианта: либо переименовать ваши сценарии, чтобы они не имели расширения (в любом случае расширения * являются необязательными), либо вы можете вообще пропустить использование run-parts
. Используйте это в вашем crontab
вместо этого:
find /home/fabe/tmp/ -prune -type f -executable -exec {} \;
Команда выше найдет все исполняемые файлы в целевом каталоге и запустит их. Я думаю, что -executable
является расширением GNU, но вы отметили это как Linux, поэтому я предполагаю, что у вас есть GNU find.