run-parts runs all the executable files named within constraints described below, found in directory directory. Other files and directories are silently ignored.

If neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of upper and lower case letters, digits, underscores, and hyphens.

By default, our cron.hourly on Ubuntu was set up to run using run-parts. Which means critical_backup.rb or notify_me.pl won't run, because nothing in /etc/cron.hourly is supposed to have a dot or a suffix.

I guess this is something all sysadmins inherently know? Why does this restriction exist, or make sense? Maybe if you were compiling a bunch of source files and wanted to run the executables, but even then... Why place hidden restrictions with no logging or exception information into a default system?