Kodėl „Linux“ sistemoje nevykdoma suplanuota periodine „Cron“ sisteminės užduotis, įkelta į con.daily (cron.monthly, cron.weekly) katalogą? Pačiam paleidus užduoties failą - jis yra įvykdomas be jokių klaidų? Kitos kataloguose esančios užduotys taip pat yra vykdomos be jokių sutrikimų.
Patikrinkite užduoties failo pavadinimą. Yra tokia nedokumentuota ar prastai dokumentuota savybė, kad Cron užduočių vykdymo planuoklis, tiksliau jo sužadinama run-parts programa, neįvykdo cron.* kataloguose esančių užduočių, kurių failų pavadinimuose yra „_“ (pabraukimo) arba „.“ (taško) simboliai. Pervadinkite savo užduočių failą kitu vardu ir šios užduotys bus pradėtos vykdyti.
Kitas būdas - įtraukti savo norimą užduotį į asmeninį ar root užduočių planą, pasitelkus crontab -e komandą. Tuomet jau „Cron“ įvykdys tiksliai tą komandą, kurią nurodėte savo periodinių užduočių plane.
Ši savybė yra prastai dokumentuota, nes „Cron“ sistemos man dokumentacijoje yra nurodoma, kad failo pavadinimas gali susidėti iš raidžių, skaičių, pabraukimų ir minuso ženklų, t.y. atitikti run-parts reikalavimus:
Files must conform to the same naming convention as used by run-parts(8):
they must consist solely of upper- and lower-case letters, digits,
underscores, and hyphens. If the -l option is specified, then they
must conform to the LSB namespace specification, exactly
as in the --lsbsysinit option in run-parts.
Tuo tarpu atvėrus run-parts programos man puslapis teigia, kad pavadinime gali būti ir taškai:
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.
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-z0-9][a-z0-9-]*$).
Taigi, vat, tokios tokelės. Kodėl įprastinė run-parts konfigūracija ir elgsena neatitinka dokumentacijos puslapio - neaišku. Tiesa, mano atveju problemų kelė tik taškas, nes turiu įprotį visus aplinkos pusprogramius baigti .sh galūne, tačiau internete buvo ir besiskundžiančiu pabraukimo simboliu.