بديل لبرنامج جدولة المهام
برنامج جدولة المهام ينفّذ الأوامر، لكنه لا يمنحك جدولة يمكن تشغيلها فعليًا.
يُثبَّت Dagu كخدمة ويندوز ويضيف ما افتقر إليه برنامج جدولة المهام دائمًا: تبعيات بين المهام، وإعادة محاولة، وسجلات لكل خطوة، وسجل تشغيل، ووحدة تحكم واحدة في المتصفح لجميع الخوادم بدلًا من جلسة RDP لكل جهاز.
# nightly-close.yaml
schedule: "0 2 * * *"
max_active_runs: 1
shell: powershell -NoProfile
steps:
- id: export
run: .\scripts\Export-Sales.ps1
retry_policy:
limit: 2
interval_sec: 300
- id: transform
run: .\scripts\Transform-Sales.ps1
depends: export
- id: load
run: .\scripts\Import-ToCore.ps1
depends: transform
handler_on:
failure:
run: .\scripts\Notify-Failure.ps1
mail_on:
failure: trueيُثبَّت كخدمة ويندوز
خطوات بـ PowerShell و pwsh و cmd.exe
تعريفات المهام بصيغة YAML خاضعة للتحكم بالإصدارات
وحدة تحكم واحدة على الويب لكل الخوادم
At a glance
برنامج جدولة المهام و Dagu على Windows Server
تُعلَن عبر depends؛ والفشل يوقف الخطوات التالية.
غير موجودة. يُقارَب الترتيب عبر أوقات البدء.
إعادة محاولة ومعالِجات استرداد وإشعار بالبريد.
رمز آخر نتيجة يفحصه شخص.
YAML تُراجَع في Git وتُنشَر على أي مضيف.
إعداد رسومي لكل جهاز، قابل للتصدير كـ XML.
وحدة تحكم في المتصفح بسجل تشغيل وسجلات لكل خطوة.
أداة MMC محلية وسجل الأحداث، لكل خادم.
In depth
Where each tool fits
الترتيب المعبَّر عنه بالتوقيت ليس تبعية
يشغّل برنامج جدولة المهام مهمةً في وقت محدد، ولا يعرف مفهوم انتظار مهمة لأخرى، لذا يُعبَّر عن الترتيب بتقدير المدد وتباعد أوقات البدء.
- تعمل مهمة 02:30 سواء نجحت مهمة 02:00 أم لا، وغالبًا تعالج ما خلّفته
- يعلن depends الترتيب مباشرةً، فتوقف الخطوةُ السابقة الفاشلةُ العملَ اللاحق بدل أن تفسده
- المهام المستقلة فعلًا تعمل بالتوازي بدل تباعدها احترازيًا
أعطال تُعلن عن نفسها
المهمة الفاشلة تضبط رمز آخر نتيجة وتنتظر أن ينظر إليها أحد. تكتشف معظم الفرق ذلك في صباح اليوم التالي، عبر الشخص الواقع بعدها في مسار البيانات.
- يعيد retry_policy محاولة الأعطال المؤقتة قبل إيقاظ أي شخص
- يشغّل handler_on.failure مهمة استرداد، ويرسل mail_on الإشعار
- يحتفظ كل تشغيل بمخرجات stdout و stderr لكل خطوة، بدل رمز إرجاع وما وصل إلى سجل الأحداث فقط
تعريفات قابلة للمراجعة ووحدة تحكم يمكن الوصول إليها
تعيش تعريفات برنامج جدولة المهام داخل واجهة جهاز واحد. والتصدير ينتج XML لا يراجعه أحد، وفحص عشرة خوادم يعني عشر جلسات بعيدة.
- مسارات العمل هي YAML داخل Git، فيصبح تغيير الجدولة طلب دمج، ويحمل الاختبار والإنتاج التعريف نفسه
- تعرض واجهة الويب عمليات التشغيل الحالية والسابقة من أي متصفح، دون جلسة RDP لكل خادم
- تتوفر PowerShell و pwsh و cmd.exe، لذا تنتقل النصوص البرمجية القائمة دون تعديل
FAQ
Practical questions before adopting Dagu
هل يعمل Dagu كخدمة ويندوز؟
نعم. يستطيع مثبِّت PowerShell تسجيله كخدمة ويندوز عبر غلاف WinSW مثبَّت الإصدار، فيبدأ مع تشغيل الجهاز ويظهر في Get-Service مثل أي خدمة أخرى. وتُنشَر إصدارات ويندوز لمعماريات amd64 و 386 و arm64.
هل تظل نصوص PowerShell والدفعات القائمة تعمل؟
نعم. تنفّذ الخطوة الأمر عبر PowerShell أو pwsh أو cmd.exe، ويمكن الاختيار لكل مسار عمل أو لكل خطوة. وعند عدم تحديد صدفة، يفضّل Dagu ترتيب PowerShell ثم pwsh ثم cmd.exe. وتُستدعى النصوص بالطريقة نفسها التي كان يستدعيها بها برنامج جدولة المهام.
هل يستطيع Dagu واحد إدارة مهام على عدة خوادم ويندوز؟
نعم، بطريقتين. يمكن تشغيل العمال على أجهزة أخرى وتلقي العمل من منسّق، كما تتيح العقد البعيدة لواجهة ويب واحدة التنقل بين عمليات نشر Dagu منفصلة. وفي الحالتين تكون وحدة التحكم متصفحًا لا جلسة سطح مكتب بعيد.
ما إصدارات ويندوز المدعومة؟
الهدف الآمن هو Windows Server 2019 وما بعده. أما الإصدارات الأقدم التي تفتقر إلى دعم AF_UNIX فلا تزال تنفّذ مسارات العمل، لكن مقبس الحالة الحية والتحكم بالإيقاف غير متاح، فيسجّل Dagu تحذيرًا ويتابع بدونه.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.