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.