O problema é o nome do seu script. De man run-parts
:
If neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of ASCII upper- and lower-case letters, ASCII digits, ASCII underscores, and ASCII minus- hyphens.
Em outras palavras, sem extensão. Curiosamente, mesmo com a opção --lsbsysinit
, você não pode especificar um arquivo como foo.sh
, já que não corresponde a nenhum dos namespaces cobertos:
If the --lsbsysinit option is given, then the names must not end in .dpkg-old or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong to one or more of the following namespaces: the LANANA assigned namespace (^[a-z0-9]+$); the LSB hierarchical and reserved namespaces (^_?([a-z0-9_.]+-)+[a-z0-9]+$); and the Debian cron script namespace (^[a-zA-Z0-9_-]+$).
Assim, enquanto foo.sh
falhar, foo.s-h
ou foo.-sh
funcionará. Eu não tenho ideia de por que eles fizeram isso dessa maneira, mas presumivelmente eles estão seguindo algum padrão ou outro.
De qualquer forma, você tem 2 opções, seja renomear seus scripts para não ter uma extensão (extensões são opcionais no * nix) ou você pode pular run-parts
ao mesmo tempo. Use isso no seu crontab
:
find /home/fabe/tmp/ -prune -type f -executable -exec {} \;
O comando acima encontrará todos os arquivos executáveis no diretório de destino e os executará. Eu acho que -executable
é uma extensão GNU, mas você marcou isso como Linux, então eu suponho que você tenha o GNU encontrado.