طريقة الاستخدام
- أدخل اسم الخدمة والأمر بمساره الكامل ومجلد العمل.
- حدّد المستخدم وسياسة إعادة التشغيل وأي متغيرات بيئة.
- أضف اختياريًا تحصينًا أساسيًا أو جدولًا (OnCalendar) لإنشاء مؤقّت.
- انسخ الملفات الناتجة، أو الصق أوامر التثبيت في طرفية root على الخادم.
شرح الخيارات
- Type
- يناسب simple البرامج التي تبقى في المقدمة، ويناسب oneshot السكربتات التي تعمل مرة واحدة مثل المهام المجدولة.
- Restart
- «عند الفشل» يعيد تشغيل الخدمة عند انتهائها بخطأ أو تعطلها، و«دائمًا» يعيد تشغيلها أيضًا بعد الانتهاء الطبيعي.
- OnCalendar
- وقت إطلاق المؤقّت، مثل daily أو *-*-* 03:00:00 للثالثة فجرًا كل يوم. اختبر العبارات بالأمر systemd-analyze calendar.
مثال: مهمة ليلية على هيئة مؤقّت
لتشغيل سكربت كل ليلة في الساعة 3 فجرًا، اضبط «الأمر (ExecStart)» على /usr/local/bin/backup.sh، واسم الخدمة على backup، وType على oneshot وRestart على «أبدًا»، ثم فعّل «التشغيل وفق جدول (إنشاء .timer)» و«تحصين أساسي». ومع المستخدم ومجلد العمل الافتراضيين، ينتج المولّد ملفين. الملف backup.service:
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
User=www-data
WorkingDirectory=/srv/myapp
ExecStart=/usr/local/bin/backup.sh
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
والملف backup.timer:
[Unit]
Description=Run backup on a schedule
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=backup.service
[Install]
WantedBy=timers.target
يتغير أمران عند تفعيل المؤقّت. يفقد ملف الخدمة قسم [Install]، لأن المؤقّت هو الذي يشغّله، وتفعّل أوامر التثبيت المؤقّت بدلًا من الخدمة:
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers backup.timer
journalctl -u backup.service -f
لا يتغير Type تلقائيًا عند تفعيل خيار المؤقّت، فاختر oneshot بنفسك للمهام التي تنتهي. وخدمة oneshot مع Restart بقيمة Always غير صالحة، لذا يترك المولّد Restart خارج الملف ويعرض تحذيرًا.
الأسئلة الشائعة
أين أضع الملف؟
في /etc/systemd/system/. ثم شغّل systemctl daemon-reload وsystemctl enable --now <name>.service، وتنفّذ الأوامر الناتجة ذلك كله.
لماذا تفشل خدمتي بالرسالة «Executable path is not absolute»؟
تتطلب إصدارات systemd الأقدم المسار الكامل للبرنامج في ExecStart. اعثر عليه بالأمر which، مثل which node.
المؤقّت أم cron؟
تسجّل المؤقّتات سجلاتها في journal، ويمكنها تعويض التشغيلات الفائتة أثناء إيقاف الخادم، ولا تعمل مرتين في آن واحد. أما cron فأبسط للأوامر ذات السطر الواحد ولا يزال يعمل جيدًا.
الخصوصية
تعمل هذه الأداة بالكامل داخل متصفحك. تُعالَج ملفاتك ونصوصك على جهازك ولا تُرفع أبدًا إلى خوادمنا.