
لماذا تتفوق مؤقّتات systemd على خادم cron
يرى مهندس أن خادم cron أداة خاطئة للمهام المجدولة في 2026، ويشرح ما تفعله مؤقّتات systemd على نحو أفضل: بيئة قابلة للتوقع، وسجل تنفيذ ظاهر، وجداول سهلة القراءة.
كل من يجدول المهام على Linux يمد يده إلى cron، وقد صارت الكلمة اسمًا عامًا لأي تنفيذ مجدول. وفي مايو 2026 يرى كاتب مدونة tjll.net أن خادم cron الحرفي وأقاربه الأحدث ليسا الأداة الصحيحة في 2026، وأن مؤقّت systemd يستحق من المحبة أكثر مما ينال.
الحجة ضد cron
اعتراضاته عملية لا أيديولوجية. فإعدادات $PATH الغامضة تجعل تنفيذ سكربتات cron صعب التوقع. وكثيرًا ما يختفي المخرَج القياسي والخطأ القياسي في ثقب أسود، أو ينتهيان في نظام بريد المضيف، وهو ما نادرًا ما يكون مطلوبًا. ومن الصعب تتبع سجل التنفيذ ومساءلته. أما قواعد التوقيت، التي يفتخر بها البعض، فليست سهلة القراءة: تعبير مثل `01,31 04,05 1-15 1,6 *` يتطلب جهدًا حقيقيًا لفكّه. ويكتب المؤلف أن المؤقّتات تحل كل هذه المشكلات وأكثر.
خدمة ومؤقّت وجدول زمني
مؤقّت systemd هو نوع من الوحدات يجدول وحدة أخرى، عادةً خدمة. والمثال في المقال خدمة احتمالها واحد من عشرة أن تطفئ الجهاز، تُقرن بملف مؤقّت يحمل الجذر الاسمي نفسه في /etc/systemd/system، لأن إعداد Unit= الافتراضي للمؤقّت يختار ملف .service المطابق. تشغيل ملف .timer يضعه على الساعة لكنه لا ينفّذ الهدف؛ أما تمكينه فيجعله يعمل عند الإقلاع عبر هدف التثبيت WantedBy=timers.target. وهناك تفصيلان يوقعان الناس في الخطأ: لا يعمل ExecStart عبر صدفة افتراضيًا، لذا لا تعمل الأنابيب كما هي مكتوبة، ولا يرث متغيرات بيئة تتجاوز افتراضات مدير النظام.
أحداث التقويم والفترات الزمنية
أكبر قفزة مفهومية عن cron هي أن systemd يقدّم نوعين من الجداول. الأول حدث تقويمي مألوف — daily أو صيغته الكاملة `*-*-* 00:00:00` — والثاني فترة زمنية تُقاس نسبةً إلى حدث سابق، مثل OnBootSec=1h مع OnUnitActiveSec=1h، فيعمل بعد ساعة من الإقلاع ثم بعد ساعة من كل تنفيذ. وغالبًا ما تطابق الصيغة الثانية النية الحقيقية: فمهمة تنظّف مجلدًا مؤقتًا لا تكسب كثيرًا من العمل فور الإقلاع، أما روبوت يستطلع واجهة برمجية كل خمس عشرة دقيقة تمامًا حسب الساعة فيصنع ذروة مرورية يتجنبها الجدول القائم على الفترة الزمنية. ويشير المؤلف إلى دليل systemd.time كمرجع أول، وإلى systemd-analyze calendar الذي يتحقق من التعبيرات ويشرحها ويفكّ حتى رموز cron الكلاسيكية.
ويُبرز أيضًا إمكانات لا يقدّمها cron: الأمر list-timers الذي يعرض في جدول واحد ما سيعمل لاحقًا وما عمل أخيرًا؛ وWakeSystem= الذي يوقظ جهازًا في وضع السكون لتنفيذ مهمة؛ وFixedRandomDelay= وRandomizedOffsetSec= اللذان يوزعان التنفيذ لتجنب ذروات "القطيع المتدافع"؛ وPersistent= الذي ينفّذ تشغيلًا فائتًا بمجرد أن يعود المؤقّت نشطًا، وهو مفيد لفحوص إدارة التهيئة على حاسوب محمول كان مغلقًا. المؤقّتات على مستوى المستخدم عبر systemctl --user صحيحة بالقدر نفسه، وإن كان هدف التثبيت يحتاج أحيانًا إلى default.target. ويبقى على الساعة أن تكون دقيقة، ويُظهر timedatectl timesync-status ما إذا كانت كذلك.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.