
Niyə systemd taymerləri cron-dan üstündür
Bir mühəndis 2026-da planlaşdırılmış işlər üçün cron demonunun yanlış alət olduğunu müdafiə edir və systemd taymerlərinin nəyi daha yaxşı etdiyini izah edir: proqnozlaşdırıla bilən mühit, görünən icra tarixçəsi və oxunaqlı cədvəllər.
Linux-da işləri cədvələ salan hər kəs cron-a əl atır və bu söz hər cür planlaşdırılmış icranın ümumi adına çevrilib. 2026-cı ilin mayında tjll.net müəllifi bloqunda yazır ki, 2026-da hərfi mənada cron demonu və onun daha müasir qohumları yanlış alətdir, systemd taymeri isə aldığından daha çox sevgiyə layiqdir.
cron əleyhinə arqumentlər
Onun etirazları ideoloji deyil, praktikdir. Qeyri-müəyyən $PATH ayarları cron skriptlərinin icrasını proqnozlaşdırmağı çətinləşdirir. stdout və stderr çox vaxt qara dəlikdə yox olur və ya hostun poçt sisteminə düşür; bu isə demək olar ki, heç vaxt istənilən nəticə deyil. İcra tarixçəsini izləmək və sorğulamaq çətindir. Bəzilərinin qürur mənbəyi olan cədvəl qrammatikası isə oxumaq üçün asan deyil: `01,31 04,05 1-15 1,6 *` kimi ifadəni deşifrə etmək real səy tələb edir. Müəllif yazır ki, taymerlər bütün bu problemləri və daha çoxunu həll edir.
Xidmət, taymer və cədvəl
systemd taymeri başqa bir unit-i — adətən xidməti — cədvələ salan unit növüdür. Məqalənin nümunəsi maşını söndürmək şansı onda bir olan xidmət və /etc/systemd/system daxilində eyni ad kökünü paylaşan taymer faylıdır, çünki taymerin standart Unit= parametri uyğun .service faylını seçir. .timer-ı işə salmaq onu saat üzərinə qoyur, lakin hədəfi icra etmir; enable isə WantedBy=timers.target quraşdırma hədəfi vasitəsilə açılışda işə düşməsini təmin edir. İki detal insanları çaşdırır: ExecStart standart olaraq shell vasitəsilə icra olunmur, ona görə boru xətləri yazıldığı kimi işləmir, və o, sistem menecerinin standartlarından başqa mühit dəyişənlərini miras almır.
Təqvim hadisələri və zaman aralıqları
cron ilə müqayisədə ən böyük konseptual sıçrayış systemd-nin iki cür cədvəl təklif etməsidir. Biri tanış təqvim hadisəsidir — daily və ya tam forması `*-*-* 00:00:00` — digəri isə əvvəlki hadisəyə nisbətən ölçülən zaman aralığıdır; məsələn OnBootSec=1h ilə OnUnitActiveSec=1h açılışdan bir saat sonra, sonra isə hər icradan bir saat sonra işə düşür. İkinci forma çox vaxt real niyyətə uyğun gəlir: müvəqqəti qovluğu təmizləyən işin açılışdan dərhal sonra işləməsi az fayda verir, API-ni saat üzrə düz on beş dəqiqədən bir yoxlayan bot isə zaman aralığına əsaslanan cədvəlin qaçındığı trafik pikini yaradır. Müəllif ilk mənbə kimi systemd.time təlimatını və ifadələri yoxlayıb izah edən, hətta klassik cron joker simvollarını da deşifrə edə bilən systemd-analyze calendar alətini göstərir.
O, həmçinin cron-un təklif edə bilmədiyi imkanları sadalayır: növbəti nəyin işləyəcəyini və ən son nəyin işlədiyini bir cədvəldə göstərən list-timers; askıya alınmış maşını işi icra etmək üçün oyadan WakeSystem=; "thundering herd" piklerinin qarşısını almaq üçün icraları yayan FixedRandomDelay= və RandomizedOffsetSec=; və buraxılmış icranı taymer yenidən aktiv olan kimi işə salan Persistent= — söndürülmüş noutbukda konfiqurasiya idarəetməsi yoxlamaları üçün faydalıdır. systemctl --user vasitəsilə istifadəçi səviyyəli taymerlər də eyni dərəcədə etibarlıdır, baxmayaraq ki, quraşdırma hədəfi bəzən default.target olmalıdır. Saat yenə də dəqiq olmalıdır və timedatectl timesync-status bunun belə olub-olmadığını göstərir.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.