كيفية تشغيل Cron تلقائيًا في WSL على نظامي التشغيل Windows 10 و 11
نشرت: 2022-01-29لدى Windows عدة طرق لأتمتة المهام. الأداة الأكثر شيوعًا هي برنامج جدولة مهام Windows ، ولكن إذا كنت تستخدم نظام Windows الفرعي لنظام التشغيل Linux (WSL) ، فهناك أيضًا برنامج cron الخفي الذي يدير المهام في الخلفية لتثبيت WSL.
لا يعمل Cron افتراضيًا
في نظامي التشغيل Windows 10 و Windows 11 ، يأتي cron مضمنًا مع بيئات Linux مثل Ubuntu. تكمن المشكلة في أن WSL لا يبدأ تشغيل cron تلقائيًا ، مما يعني أن مهامك الآلية لا يتم تنفيذها افتراضيًا.
لإصلاح ذلك ، يمكنك بدء تشغيل cron يدويًا في كل مرة تفتح فيها سطر الأوامر ، لكن بدء تشغيل أداة من المفترض أن تعمل تلقائيًا على المهام أمر يفتقد إلى النقطة.
لحسن الحظ ، هناك طريقة سهلة لإصلاح ذلك ، وتتطلب استخدام برنامج جدولة المهام.
إذا لم تستخدم cron مطلقًا في Linux لتشغيل المهام ، فراجع برنامجنا التعليمي السابق حول كيفية جدولة المهام على Linux. لأغراضنا هنا ، سنفترض أنك قد أنشأت بالفعل بعض وظائف cron في تثبيت WSL وأنك بحاجة إلى مساعدة للتأكد من أنها تعمل بدلاً من مجالسة الأطفال كرون طوال الوقت.
في هذا البرنامج التعليمي ، سنستخدم sudo service
للتحقق من cron وبدء تشغيله ، وهي الطريقة الموصى بها لإيقاف الخدمات وبدء تشغيلها في الإصدارات الحديثة من Ubuntu - التوزيع الأكثر شيوعًا لـ WSL.
لاحظ أيضًا أن هذا البرنامج التعليمي يفترض أن لديك حقوق المسؤول على إصدار WSL الخاص بك. إذا كنت المستخدم الوحيد لجهاز الكمبيوتر الخاص بك وقمت بتمكين WSL بنفسك ، فإنك تمتلك حقوق المسؤول.
تلميح: يعمل هذا في نظام Windows الفرعي لنظام التشغيل Linux على نظام التشغيل Windows 11 أيضًا — وليس فقط على نظام التشغيل Windows 10.
ذات صلة: كيفية جدولة المهام على نظام Linux: مقدمة لملفات Crontab
تحضير لينوكس
أول شيء يتعين علينا القيام به هو السماح للكمبيوتر ببدء تشغيل cron بدون كلمة مرور. عند بدء تشغيل خدمة مثل cron ، يمكنك استخدام الأمر sudo service cron start
. لكن هذا الأمر يتطلب كلمة مرور لن يتمكن Windows من الوصول إليها عند بدء تشغيله. الطريقة للتغلب على ذلك هي إيقاف تشغيل متطلبات كلمة المرور لهذا الأمر.
للقيام بذلك ، افتح نافذة WSL الطرفية واكتب sudo visudo
. اضغط على Enter بلوحة المفاتيح ، وأدخل كلمة مرور Linux الخاصة بك ، واضغط على مفتاح Enter مرة أخرى. إذا كنت تستخدم Ubuntu ، فسيؤدي ذلك إلى فتح ملف "sudoers" باستخدام محرر نصوص سطر أوامر Nano الصديق للمبتدئين. Sudoers هو ملف لمسؤولي النظام يمكنه تغيير الامتيازات وحقوق الوصول للمستخدمين.
أضف الأمر التالي إلى أسفل ملف sudoers ، ثم اضغط على Ctrl + o للحفظ و Ctrl + x للخروج من الملف.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
يقول أمر sudoers هذا أن أي مستخدم لديه امتيازات كافية لاستخدام الأمر sudo (الذي يجب أن يشملك) لا يحتاج إلى كلمة مرور لتشغيل الأمر sudo service cron start
، والذي يبدأ تشغيل cron daemon.
بعد حفظ الملف ، يمكنك التحقق من قيام الأمر بعمله عن طريق كتابة sudo service cron start
، ويجب أن يبدأ cron دون طلب كلمة مرور. إذا نجح ذلك ، فلنقم بإيقاف تشغيل cron مرة أخرى حتى نتمكن من اختبار أن المهمة التي نقوم بإنشائها في الخطوة التالية تعمل بشكل صحيح. للقيام بذلك ، يرجى تشغيل sudo service cron stop
.
قم بإعداد Cron في برنامج جدولة مهام Windows
هذه هي المرحلة الأولى من رحلتنا نحو أتمتة cron. دعنا ننتقل إلى الجزء 2 باستخدام برنامج جدولة المهام. اضغط على مفتاح Windows على لوحة المفاتيح ، ثم ابحث عن "برنامج جدولة المهام". قم بتشغيل اختصار "برنامج جدولة المهام".
عند بدء التشغيل ، انظر أسفل قسم "الإجراءات" وحدد "إنشاء مهمة أساسية".
هذا يفتح معالج المهام الأساسية. أولاً ، سيطلب منك تسمية المهمة ووصفها. يمكنك إدخال ما تريد هنا. أطلقنا على المهمة "cron" ، والوصف هو "مهمة لبدء cron عند بدء تشغيل النظام." الآن ، اضغط على "التالي".
في القسم التالي ، نبدأ العمل. أولاً ، يريد Windows معرفة متى نريد تشغيل المهمة. اختر زر الاختيار "عندما يبدأ الكمبيوتر" وانقر على "التالي".
في القسم التالي ، نريد "بدء برنامج". يتم تحديد هذا الخيار افتراضيًا ، لذا انقر فوق "التالي".
الآن ، علينا تحديد البرنامج الذي نريد تشغيله ، وهو WSL. أدخل ما يلي في مربع إدخال نص "البرنامج / البرنامج النصي": C:\Windows\System32\wsl.exe
نحتاج أيضًا إلى إضافة بعض الحجج ، نظرًا لأن كل ما فعلناه حتى الآن هو بدء WSL ، ولكن داخل WSL ، نحتاج إلى إخبار Ubuntu لبدء cron. لذلك ، في مربع "إضافة وسائط" ، أضف: sudo /usr/sbin/service cron start
اضغط على "التالي" مرة أخرى ، حدد المربع الذي يقول "فتح مربع حوار الخصائص عند النقر فوق إنهاء" ، ثم انقر فوق "إنهاء".
تم إنشاء المهمة ، لكن علينا أن نفعل شيئًا أخيرًا للتأكد من أن كل شيء يعمل. سيتم فتح نافذة جديدة تعرض ملخص المهمة التي قمت بإنشائها ، ولكنها معدة للتشغيل فقط عندما تقوم بتسجيل الدخول. نحتاج إلى تحديد زر الاختيار الذي يقول "تشغيل سواء تم تسجيل دخول المستخدم أم لا" ، ثم الضغط على "موافق".
الآن ، دعنا نختبر مهمتنا بطريقتين. أولاً ، في النافذة الرئيسية لبرنامج جدولة المهام ، قم بالتمرير لأسفل حتى ترى اسم مهمتك. إذا استخدمت الاسم "كرون" ، فيجب العثور عليه في أعلى القائمة. انقر بزر الماوس الأيمن فوق المهمة وحدد "تشغيل".
بعد ذلك ، ارجع إلى محطة WSL الخاصة بك واكتب sudo service cron status
، ويجب أن تقول أن cron قيد التشغيل. إذا لم يكن الأمر كذلك ، فتحقق مرة أخرى من أنك أدخلت كل شيء بشكل صحيح في الخطوات السابقة.
إذا كان كل شيء يعمل بشكل صحيح في الفحص الأول ، فقد حان وقت الاختبار الكبير. أعد تشغيل الكمبيوتر ، وعندما تعود ، افتح محطة WSL وقم بتشغيل sudo service cron status
، والتي يجب أن تبلغ عن تشغيل cron الآن.
تهانينا! لقد اتخذت خطوتك الأولى نحو عالم آلي أكبر. مع تشغيل cron في الخلفية ، سيتم تشغيل cronjobs التي تقوم بتكوينها في WSL تلقائيًا في الموعد المحدد.