بديل لبرنامج جدولة المهام

برنامج جدولة المهام ينفّذ الأوامر، لكنه لا يمنحك جدولة يمكن تشغيلها فعليًا.

يُثبَّت 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

التبعيات
Dagu

تُعلَن عبر depends؛ والفشل يوقف الخطوات التالية.

برنامج جدولة المهام في ويندوز

غير موجودة. يُقارَب الترتيب عبر أوقات البدء.

معالجة الأعطال
Dagu

إعادة محاولة ومعالِجات استرداد وإشعار بالبريد.

برنامج جدولة المهام في ويندوز

رمز آخر نتيجة يفحصه شخص.

التعريفات
Dagu

YAML تُراجَع في Git وتُنشَر على أي مضيف.

برنامج جدولة المهام في ويندوز

إعداد رسومي لكل جهاز، قابل للتصدير كـ XML.

الوضوح
Dagu

وحدة تحكم في المتصفح بسجل تشغيل وسجلات لكل خطوة.

برنامج جدولة المهام في ويندوز

أداة MMC محلية وسجل الأحداث، لكل خادم.

In depth

Where each tool fits

01

الترتيب المعبَّر عنه بالتوقيت ليس تبعية

يشغّل برنامج جدولة المهام مهمةً في وقت محدد، ولا يعرف مفهوم انتظار مهمة لأخرى، لذا يُعبَّر عن الترتيب بتقدير المدد وتباعد أوقات البدء.

  • تعمل مهمة 02:30 سواء نجحت مهمة 02:00 أم لا، وغالبًا تعالج ما خلّفته
  • يعلن depends الترتيب مباشرةً، فتوقف الخطوةُ السابقة الفاشلةُ العملَ اللاحق بدل أن تفسده
  • المهام المستقلة فعلًا تعمل بالتوازي بدل تباعدها احترازيًا
02

أعطال تُعلن عن نفسها

المهمة الفاشلة تضبط رمز آخر نتيجة وتنتظر أن ينظر إليها أحد. تكتشف معظم الفرق ذلك في صباح اليوم التالي، عبر الشخص الواقع بعدها في مسار البيانات.

  • يعيد retry_policy محاولة الأعطال المؤقتة قبل إيقاظ أي شخص
  • يشغّل handler_on.failure مهمة استرداد، ويرسل mail_on الإشعار
  • يحتفظ كل تشغيل بمخرجات stdout و stderr لكل خطوة، بدل رمز إرجاع وما وصل إلى سجل الأحداث فقط
03

تعريفات قابلة للمراجعة ووحدة تحكم يمكن الوصول إليها

تعيش تعريفات برنامج جدولة المهام داخل واجهة جهاز واحد. والتصدير ينتج 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.