كرون
cronهو مُجدول مهام يعتمد على الوقت . تُعرف المهمة المُجدولة باسم مهمة كرون . [ 1 ] [ 2 ] [ 3 ] [ 4 ] على الرغم من أنه يُستخدم عادةً لأتمتة صيانة النظام وإدارته، إلا أنه يُمكن استخدامه لأتمتة أي مهمة. cronيُعدّ الأنسب لجدولة المهام المتكررة، حيث يُمكن إنجاز جدولة مهمة لمرة واحدة عبره at.
اسم الشيطان مشتق من كلمة كرونوس اليونانية التي تعني الزمن. [ 5 ]
cronوهو متوفر بشكل عام على أنظمة التشغيل الشبيهة بنظام يونكس .
ملخص
تُدار مهام cron بواسطة ملف crontab (جدول cron). تُخزَّن ملفات crontab في المكان الذي تُحفظ فيه قوائم المهام والتعليمات الأخرى لبرنامج cron ./etc يمكن للمستخدمين امتلاك ملفات crontab خاصة بهم، وغالبًا ما يوجد ملف crontab على مستوى النظام (عادةً في مجلد رئيسي أو مجلد فرعي منه، على /etcسبيل المثال /etc/cron.d) لا يمكن تعديله إلا من قِبل مسؤولي النظام.
يمثل كل سطر في ملف crontab مهمة، ويبدو كالتالي:
* * * * * <الأمر المراد تنفيذه> ٨ | | | | | # | | | | يوم من أيام الأسبوع (0-6) (من الأحد إلى السبت؛ # | | | الشهر (1-12) 7 هو أيضًا يوم الأحد في بعض الأنظمة) # | | يوم من أيام الشهر (1-31) # | ساعة (0–23) # دقيقة (0–59)
يتوقع بناء جملة كل سطر تعبير cron مكون من خمسة حقول تمثل وقت تنفيذ الأمر، متبوعًا بأمر shell للتنفيذ.
في حين أن المهمة تُنفذ عادةً عندما تتطابق جميع حقول تحديد الوقت/التاريخ مع الوقت والتاريخ الحاليين، إلا أن هناك استثناءً واحدًا: إذا كان كل من "يوم الشهر" (الحقل 3) و"يوم الأسبوع" (الحقل 5) مقيدًا (لا يحتوي على "*")، فيجب أن يتطابق أحدهما أو كلاهما مع اليوم الحالي. [ 6 ]
على سبيل المثال، يقوم الأمر التالي بمسح سجل أخطاء Apache في الدقيقة 1 بعد منتصف الليل (00:01) كل يوم، بافتراض أن الصدفة الافتراضية لمستخدم cron متوافقة مع Bourne shell :
1 0 * * * printf "" > /var/log/apache/error_log يقوم هذا المثال بتشغيل برنامج shell يسمى export_dump.sh في الساعة 23:45 (11:45 مساءً) كل يوم سبت.
45 23 * * 6 /home/oracle/scripts/export_dump.sh ملاحظة: في بعض الأنظمة، يُمكن تحديد */nتشغيل البرنامج كل فترة زمنية n . كما يُمكن تحديد فترات زمنية مُحددة مُتعددة باستخدام الفواصل (مثلاً، 1,2,3). سيُخرج السطر أدناه عبارة "hello world" إلى سطر الأوامر كل 5 دقائق من كل ساعة أولى وثانية وثالثة (أي 01:00، 01:05، 01:10، حتى 03:55).
*/5 1 ,2,3 * * * صدى مرحباً بالعالم يمكن تعديل ملف التكوين الخاص بالمستخدم عن طريق استدعاء الدالة crontab -eبغض النظر عن مكان تخزين هذا الملف في التنفيذ الفعلي.
تُضيف بعض cronالتطبيقات، مثل إصدار BSD الرابع الشهير الذي كتبه بول فيكسي والمُضمّن في العديد من توزيعات لينكس، حقلاً سادساً: اسم مستخدم الحساب الذي يُشغّل المهمة المُحدّدة (رهناً بوجود المستخدم وصلاحياته). يُسمح بذلك فقط في جداول مهام النظام (crontabs) - وليس في غيرها، حيث يُخصّص كل منها لمستخدم واحد لتكوينه. يُستخدم الحقل السادس أحياناً للسنة بدلاً من اسم مستخدم الحساب - كما يفعل برنامج nncron الخفي لنظام ويندوز.
لا يستخدم تطبيق Amazon EventBridge لوظيفة cron أيام الأسبوع بدءًا من الصفر، بل يستخدم الأرقام من 1 إلى 7 من الأحد إلى السبت (بدلاً من 0 إلى 6)، كما يدعم ميزات تعبير إضافية مثل أول يوم من أيام الأسبوع وآخر يوم من الشهر. [ 7 ]
تعريفات الجدولة غير القياسية المحددة مسبقًا
تدعم بعض تطبيقات cron [ 8 ] وحدات الماكرو غير القياسية التالية:
| دخول | وصف | ما يعادل |
|---|---|---|
@yearly(أو @annually) | يُقام مرة واحدة في السنة في منتصف ليل الأول من يناير | 0 0 1 1 * |
@monthly | يتم تشغيله مرة واحدة شهريًا في منتصف ليل اليوم الأول من الشهر | 0 0 1 * * |
@weekly | يُعرض مرة واحدة في الأسبوع في منتصف ليل يوم الأحد | 0 0 * * 0 |
@daily(أو @midnight) | يتم تشغيله مرة واحدة يوميًا في منتصف الليل | 0 0 * * * |
@hourly | يتم تشغيله مرة واحدة كل ساعة في بداية الساعة | 0 * * * * |
@reboot | تشغيل عند بدء التشغيل | غير متوفر |
@rebootيُهيئ هذا الأمر مهمةً لتشغيلها مرةً واحدةً عند بدء تشغيل الخدمة. وبما أن cron لا يُعاد تشغيله عادةً، فإن هذا يتزامن عادةً مع بدء تشغيل الجهاز. ويُفرض هذا السلوك في بعض إصدارات cron، مثل الإصدار المُستخدم في دبيان [ 9 ]، بحيث لا يؤدي إعادة تشغيل الخدمة إلى إعادة تشغيل @rebootالمهام.
@rebootيمكن أن يكون ذلك مفيدًا إذا كانت هناك حاجة لبدء تشغيل خادم أو برنامج خفي تحت مستخدم معين، ولم يكن لدى المستخدم حق الوصول لتكوين init لبدء تشغيل البرنامج.
أذونات Cron
يلعب هذان الملفان دورًا مهمًا:
- /etc/cron.allow – إذا كان هذا الملف موجودًا، فيجب أن يحتوي على اسم المستخدم حتى يُسمح لهذا المستخدم باستخدام مهام cron.
- /etc/cron.deny – إذا لم يكن ملف cron.allow موجودًا ولكن ملف /etc/cron.deny موجود، فإنه لاستخدام مهام cron، يجب ألا يتم إدراج المستخدمين في ملف /etc/cron.deny.
لاحظ أنه إذا لم يكن أي من هذين الملفين موجودًا، فإنه اعتمادًا على معلمات التكوين الخاصة بالموقع، إما أن المستخدم الخارق فقط هو من يمكنه استخدام مهام cron، أو أن جميع المستخدمين يمكنهم استخدام مهام cron.
التعامل مع المناطق الزمنية
معظم تطبيقات cron تفسر ببساطة إدخالات crontab وفقًا لإعدادات المنطقة الزمنية للنظام التي يعمل عليها برنامج cron. قد يُسبب هذا خلافًا إذا كان جهاز كبير متعدد المستخدمين يحتوي على مستخدمين في مناطق زمنية مختلفة، خاصةً إذا كانت المنطقة الزمنية الافتراضية للنظام تتضمن التوقيت الصيفي الذي قد يُسبب التباسًا . لذلك، قد يتعرف تطبيق cron، كحالة خاصة، على أسطر من النوع "CRON_TZ= < المنطقة الزمنية > " في crontab الخاص بالمستخدم، ويفسر إدخالات crontab اللاحقة نسبةً إلى تلك المنطقة الزمنية. [ 10 ]
تاريخ
الإصدارات المبكرة
كانت خدمة cron في نظام يونكس الإصدار 7 خدمة نظام (أُطلق عليها لاحقًا اسم daemon ) يتم استدعاؤها /etc/rcعندما يدخل نظام التشغيل في وضع المستخدمين المتعددين. [ 11 ] وكانت خوارزميتها بسيطة:
- اقرأ
/usr/lib/crontab[ 12 ] - حدد ما إذا كان يجب تشغيل أي أوامر في التاريخ والوقت الحاليين، وإذا كان الأمر كذلك، فقم بتشغيلها بصفتك المستخدم الخارق ، root.
- نم لمدة دقيقة واحدة
- كرر من الخطوة 1.
كانت هذه النسخة من برنامج cron بسيطة وقوية، لكنها كانت تستهلك موارد النظام سواءً وجدت عملاً تقوم به أم لا. وفي تجربة أُجريت في جامعة بيردو أواخر سبعينيات القرن الماضي لتوسيع نطاق خدمة cron لتشمل جميع المستخدمين المئة على جهاز VAX ذي نظام مشاركة الوقت ، تبيّن أنها تُحمّل النظام عبئاً زائداً.
إمكانية تعدد المستخدمين
تم تطوير الإصدار التالي من برنامج cron، مع إصدار نظام Unix System V ، لتوسيع إمكانياته لتشمل جميع مستخدمي نظام Unix، وليس فقط المستخدم المتميز. ورغم أن هذا قد يبدو بسيطًا اليوم نظرًا لأن معظم أنظمة Unix والأنظمة الشبيهة بها تمتلك معالجات قوية وعددًا قليلًا من المستخدمين، إلا أنه في ذلك الوقت تطلب نهجًا جديدًا على نظام بمعالج MIPS واحد يضم حوالي 100 حساب مستخدم.
في عدد أغسطس 1977 من مجلة اتصالات جمعية آلات الحوسبة (ACM) ، نشر دبليو آر فرانتا وكورت مالي مقالًا بعنوان "بنية بيانات فعالة لمجموعة أحداث المحاكاة"، يصفان فيه بنية بيانات قائمة انتظار الأحداث لأنظمة المحاكاة المنفصلة القائمة على الأحداث، والتي أظهرت "أداءً يفوق أداء خوارزميات القوائم المرتبطة البسيطة الشائعة الاستخدام"، وسلوكًا جيدًا في ظل توزيعات زمنية غير منتظمة، وتعقيدًا في أسوأ الحالات .، حيث يمثل "n" عدد الأحداث في قائمة الانتظار.
لاحظ روبرت براون، وهو طالب دراسات عليا في جامعة بيردو، أثناء مراجعته لهذه المقالة، التشابه بين برنامج cron ومحاكيات الأحداث المنفصلة ، فأنشأ تطبيقًا لمدير قائمة أحداث فرانتا-مالي (ELM) لأغراض التجربة. تعمل محاكيات الأحداث المنفصلة في وقت افتراضي ، حيث تسحب الأحداث من قائمة الانتظار بأسرع ما يمكن، وتقدم مفهومها عن "الآن" إلى الوقت المحدد للحدث التالي. أما تشغيل محاكي الأحداث في "الوقت الحقيقي" بدلًا من الوقت الافتراضي، فقد أدى إلى إنشاء نسخة من cron تقضي معظم وقتها في حالة سكون، بانتظار الوقت المحدد لتنفيذ المهمة الموجودة في بداية قائمة الأحداث.
في العام الدراسي التالي، انضم طلاب جدد إلى برنامج الدراسات العليا في جامعة بيردو، من بينهم كيث ويليامسون، الذي انضم إلى فريق أنظمة قسم علوم الحاسوب. وكمهمة تمهيدية، طلب منه براون تطوير نموذج أولي لبرنامج cron ليصبح خدمة إنتاجية، وبدأ استخدام هذا البرنامج متعدد المستخدمين في جامعة بيردو أواخر عام 1979. وقد حلت هذه النسخة من cron محل النسخة /etc/cronالمستخدمة على جهاز VAX 11/780 التابع لقسم علوم الحاسوب والذي يعمل بنظام 32 بت.
الخوارزمية المستخدمة بواسطة هذا البرنامج المُجدول هي كالتالي:
- عند بدء التشغيل، ابحث عن ملف بهذا الاسم
.crontabفي المجلدات الرئيسية لجميع أصحاب الحسابات. - لكل ملف crontab تم العثور عليه، حدد الوقت التالي في المستقبل الذي يجب أن يتم فيه تشغيل كل أمر.
- ضع تلك الأوامر في قائمة أحداث Franta–Maly مع وقتها المقابل ومحدد الوقت "الخماسي".
- ادخل إلى الحلقة الرئيسية:
- افحص مدخل المهمة في رأس قائمة الانتظار، واحسب إلى أي مدى يجب أن يتم تشغيلها في المستقبل.
- نم خلال تلك الفترة الزمنية.
- عند الاستيقاظ وبعد التحقق من الوقت الصحيح، قم بتنفيذ المهمة الموجودة في رأس قائمة الانتظار (في الخلفية) بصلاحيات المستخدم الذي أنشأها.
- حدد الوقت التالي في المستقبل لتشغيل هذا الأمر وأعده إلى قائمة الأحداث عند قيمة الوقت تلك.
بالإضافة إلى ذلك، يستجيب البرنامج الخفي لإشارات SIGHUP لإعادة فحص ملفات crontab المُعدّلة، ويُجدول أحداث تنبيه خاصة كل ساعة ونصف ساعة للبحث عن هذه الملفات. وقد تم حذف الكثير من التفاصيل المتعلقة بعدم دقة تتبع وقت الكمبيوتر، وجدولة تنبيهات يونكس، وتغييرات الوقت الصريحة، وإدارة العمليات، والتي تُشكّل جميعها غالبية أسطر التعليمات البرمجية في هذا البرنامج. كما يقوم هذا البرنامج بتسجيل مخرجات stdout و stderr ، ويرسل أي مخرجات عبر البريد الإلكتروني إلى مالك ملف crontab.
إن الموارد التي يستهلكها هذا البرنامج تتزايد فقط مع مقدار العمل الذي يُعطى له ولا تزداد بشكل جوهري بمرور الوقت، باستثناء التحقق الدوري من التغييرات.
Williamson completed his studies and departed the University with a Masters of Science in Computer Science and joined AT&T Bell Labs in Murray Hill, New Jersey, and took this cron with him. At Bell Labs, he and others incorporated the Unix at command into cron, moved the crontab files out of users' home directories (which were not host-specific) and into a common host-specific spool directory, and of necessity added the crontab command to allow users to copy their crontabs to that spool directory.
This version of cron later appeared largely unchanged in Unix System V and in BSD and their derivatives, Solaris from Sun Microsystems, IRIX from Silicon Graphics, HP-UX from Hewlett-Packard, and AIX from IBM. Technically, the original license for these implementations should be with the Purdue Research Foundation who funded the work, but this took place at a time when little concern was given to such matters.
Modern versions
With the advent of the GNU Project and Linux, new crons appeared. The most prevalent of these is the Vixie cron, originally coded by Paul Vixie in 1987. Version 3 of Vixie cron was released in late 1993. Version 4.1 was renamed to ISC Cron and was released in January 2004. Version 3, with some minor bugfixes, is used in most distributions of Linux and BSDs.
In 2007, Red Hat forked vixie-cron 4.1 to the cronie project, adding features such as PAM and SELinux support.[13] In 2009, anacron 2.3 was merged into cronie.[14] Anacron is not an independent cron program however; another cron job must call it.
DragonFly's dcron was made by its founder Matt Dillon, and its maintainership was taken over by Jim Pryor in 2010.[15]
في عام ٢٠٠٣، قدّم ديل ميلور mcron، [ ١٦ ] وهو نسخة معدّلة من cron مكتوبة بلغة Guile، توفر توافقًا تامًا مع Vixie cron، بالإضافة إلى مرونة أكبر، إذ تسمح باستخدام أي كود Scheme في حسابات الجدولة وتعريفات المهام. ولأن كلًا من برنامج mcron الخفي وملفات crontab تُكتب عادةً بلغة Scheme (مع أن mcron يقبل أيضًا ملفات crontab التقليدية من Vixie)، فإن الحالة التراكمية لقائمة مهام المستخدم متاحة لكود مهامه، والذي يمكن جدولة تشغيله إذا استوفت نتائج المهام الأخرى معايير محددة. يُنشر mcron افتراضيًا ضمن مدير حزم Guix ، الذي يتضمن خدمات تُمكّن مدير الحزم من إصدار ملفات crontab الخاصة بـ mcron بشكل أحادي، مع ضمان تثبيت الحزم اللازمة لتنفيذ المهام، وأن ملفات crontab المقابلة تشير إليها بشكل صحيح. [ ١٧ ]
يقوم حل webcron بجدولة مهام الحلقة لتشغيلها بشكل منتظم في أي مكان لا تتوفر فيه تطبيقات cron في بيئة استضافة الويب .
جهود التقييس
في عام 2025، نُشرت مواصفات نمط كرون المفتوح (OCPS) لمعالجة التباين في صيغة كرون بين التطبيقات المختلفة. يوفر الإصدار 1.0 من OCPS مواصفات رسمية لهجة كرون في Vixie، ويُقنن تنسيق النمط ذي الحقول الخمسة بقواعد واضحة للحالات الشاذة التي كانت غامضة سابقًا. [ 18 ]
تم تصميم المواصفات كمجموعة شاملة متوافقة مع الإصدارات السابقة، مع خطط مستقبلية لإضافة ميزات تدريجيًا مثل الجداول الزمنية المحددة مسبقًا، ودقة المستوى الثاني، ومعدلات التقويم المتقدمة مع الحفاظ على التوافق مع الإصدارات السابقة.
تعبير كرون
تعبير cron هو سلسلة تتكون من خمسة أو ستة أو سبعة حقول مفصولة بمسافة بيضاء [ 19 ] تمثل مجموعة من الأوقات، عادة كجدول زمني لتنفيذ بعض الروتينات.
تبدأ التعليقات بعلامة تعليق #، ويجب أن تكون في سطر منفصل.
| مجال | مطلوب | القيم المسموح بها | الأحرف الخاصة المسموح بها | ملاحظات |
|---|---|---|---|---|
| ثوانٍ | أحيانا | 0–59 | *,- | غير مدعوم في التطبيقات القياسية ذات الخمسة أرقام. مطلوب للتطبيقات ذات الستة والسبعة أرقام حيث يُسمح بالثواني. [ 20 ] |
| دقائق | نعم | 0–59 | *,- | |
| ساعات | نعم | 0–23 | *,- | |
| يوم من الشهر | نعم | 1-31 | *,-?LW | ?LWفقط في بعض التطبيقات |
| شهر | نعم | 1–12 أو يناير–ديسمبر | *,- | |
| يوم من أيام الأسبوع | نعم | من 0 إلى 6 أو من الأحد إلى السبت | *,-?L# | ?L#فقط في بعض التطبيقات |
| سنة | لا | 1970–2099 | *,- | غير مدعوم في التطبيقات القياسية المكونة من 5 أرقام. اختياري في بعض التطبيقات المكونة من 6 و7 أرقام. |
لا تُراعى حالة الأحرف في اختصارات الشهر وأيام الأسبوع.
في حالة ملف crontab الخاص بالنظام (/etc/crontab)، يتم إدراج حقل المستخدم قبل الأمر . وعادةً ما يتم تعيينه إلى 'root'.
- علامة النجمة (
*) - تمثل علامات النجمة (المعروفة أيضًا باسم الأحرف البديلة) "الكل". على سبيل المثال، استخدام "* * * * *" سيؤدي إلى التشغيل كل دقيقة. استخدام "* * * * 1" سيؤدي إلى التشغيل كل دقيقة يوم الاثنين فقط. استخدام ست علامات نجمية يعني التشغيل كل ثانية عند دعم الثواني.
- الفاصلة (
,) - تُستخدم الفواصل لفصل عناصر القائمة. على سبيل المثال، استخدام "MON,WED,FRI" في الحقل الخامس (يوم الأسبوع) يعني أيام الاثنين والأربعاء والجمعة.
- واصلة (
-) - تُستخدم الواصلة لتحديد النطاقات. على سبيل المثال، يشير "2000-2010" إلى كل عام بين عامي 2000 و2010، شاملاً.
- النسبة المئوية (
%) - يتم تحويل علامات النسبة المئوية (%) في الأمر، ما لم يتم تهريبها باستخدام الشرطة المائلة العكسية (\)، إلى أحرف سطر جديد، ويتم إرسال جميع البيانات التي تلي علامة النسبة المئوية الأولى إلى الأمر كمدخلات قياسية. [ 21 ]
أحرف غير قياسية
الأحرف التالية غير قياسية وتوجد فقط في بعض تطبيقات cron، مثل جدولة Quartz Java .
L- يرمز الحرف "L" إلى "الأخير". عند استخدامه في حقل يوم الأسبوع، يسمح بتحديد صيغ مثل "آخر جمعة" (" 5L ") من شهر معين. أما في حقل يوم الشهر، فيحدد آخر يوم من الشهر.
W- يُسمح باستخدام الحرف "W" في حقل يوم الشهر. يُستخدم هذا الحرف لتحديد أقرب يوم من أيام الأسبوع (من الاثنين إلى الجمعة) إلى اليوم المُحدد. على سبيل المثال، إذا تم تحديد " 15W " كقيمة لحقل يوم الشهر، فهذا يعني: "أقرب يوم من أيام الأسبوع إلى الخامس عشر من الشهر". لذا، إذا كان الخامس عشر يوم سبت، فسيتم تفعيل المُشغّل يوم الجمعة الرابع عشر. وإذا كان الخامس عشر يوم أحد، فسيتم تفعيله يوم الاثنين السادس عشر. وإذا كان الخامس عشر يوم ثلاثاء، فسيتم تفعيله يوم الثلاثاء الخامس عشر. أما إذا تم تحديد "1W" كقيمة ليوم الشهر، وكان الأول يوم سبت، فسيتم تفعيل المُشغّل يوم الاثنين الثالث، لأنه لا يتجاوز حدود أيام الشهر. يُمكن تحديد الحرف "W" فقط عندما يكون يوم الشهر يومًا واحدًا، وليس نطاقًا أو قائمة أيام.
- هاش (
#) - يُسمح باستخدام الرمز "#" في حقل يوم الأسبوع، ويجب أن يتبعه رقم بين واحد وخمسة. يسمح هذا بتحديد صيغ مثل "الجمعة الثانية" من شهر معين. [ 22 ] على سبيل المثال، إدخال "5#3" في حقل يوم الأسبوع يُشير إلى الجمعة الثالثة من كل شهر.
- علامة استفهام (
?) - في بعض التطبيقات، يُستخدم الرمز "؟" بدلاً من " * " لترك خانة يوم الشهر أو يوم الأسبوع فارغة. بينما تستبدل تطبيقات أخرى لـ cron علامة الاستفهام "؟" بوقت بدء تشغيل خدمة cron، بحيث يتم تحديث الوقت إلى 8:25 صباحًا إذا بدأ تشغيل cron في الساعة 8:25 صباحًا، وسيستمر التشغيل في هذا الوقت يوميًا حتى إعادة تشغيله. [ 23 ]
? ? * * * *25 8 * * * * - الشرطة المائلة (
/) - في برنامج vixie-cron، يمكن دمج الشرطات المائلة مع النطاقات لتحديد قيم الخطوات. [ 8 ] على سبيل المثال، يشير */5 في حقل الدقائق إلى كل 5 دقائق (انظر الملاحظة أدناه حول الترددات). وهو اختصار للصيغة الأكثر تفصيلاً في نظام POSIX: 5,10,15,20,25,30,35,40,45,50,55,00 . لا يُحدد نظام POSIX استخدامًا للشرطات المائلة؛ ويشير مبرره (تعليقًا على امتداد BSD) إلى أن التعريف يستند إلى تنسيق System V، ولكنه لا يستبعد إمكانية وجود امتدادات. [ 6 ]
لاحظ أنه لا يمكن التعبير عن الترددات بشكل عام؛ فقط قيم الخطوات التي تقسم نطاقها بالتساوي تعبر عن ترددات دقيقة (بالنسبة للدقائق والثواني، فهي /2، /3، /4، /5، /6، /10، /12، /15، /20 و /30 لأن 60 يقبل القسمة بالتساوي على هذه الأرقام؛ بالنسبة للساعات، فهي /2، /3، /4، /6، /8 و /12 )؛ جميع "الخطوات" الممكنة الأخرى وجميع الحقول الأخرى تنتج فترات "قصيرة" غير متناسقة في نهاية وحدة الوقت قبل أن "تعاد ضبطها" إلى الدقيقة أو الثانية أو اليوم التالي؛ على سبيل المثال، إدخال */5 لحقل اليوم يتم تنفيذه أحيانًا بعد 1 أو 2 أو 3 أيام، اعتمادًا على الشهر والسنة الكبيسة؛ هذا لأن cron لا يحتفظ بالحالة (فهو لا يتذكر وقت التنفيذ الأخير ولا يحسب الفرق بينه وبين الآن، وهو أمر مطلوب لحساب التردد بدقة - بدلاً من ذلك، فإن cron هو مجرد أداة لمطابقة الأنماط).
بعض المكتبات الخاصة بلغات البرمجة التي توفر إمكانية جدولة المهام باستخدام crontab لا تتطلب نطاقات "صارمة" مثل 15-59/XX على يسار الشرطة المائلة عند استخدام النطاقات. [ 24 ] في هذه الحالات، يكون 15/XX هو نفسه جدول vixie-cron الذي يُمثل 15-59/10 في قسم الدقائق. وبالمثل، يمكن حذف -23 من 0-23/XX ، و-31 من 1-31/XX ، و -12 من 1-12/XX للساعات والأيام والأشهر على التوالي.
H- يُستخدم الرمز "H" في نظام التكامل المستمر Jenkins للإشارة إلى استبدال قيمة "مُجزأة". وبالتالي، فبدلاً من رقم ثابت مثل "
20 * * * *" الذي يعني بعد 20 دقيقة من بداية كل ساعة،H * * * *يشير الرمز " " إلى أن المهمة تُنفذ كل ساعة في وقت غير محدد ولكنه ثابت لكل مهمة. وهذا يسمح بتوزيع المهام على مدار الوقت، بدلاً من أن تبدأ جميعها في نفس الوقت وتتنافس على الموارد. [ 25 ]
انظر أيضاً
- عند (الأمر)
- تم الإطلاق
- قائمة أوامر POSIX
- الجدولة (الحوسبة)
- systemd – يتضمن ما يعادل cron (يسمى المؤقتات )
- fcron
- جدولة مهام ويندوز
ملحوظة
مراجع
- ↑ "أتمتة المهام باستخدام Cron على نظام CentOS 8" . 6 أبريل 2020. مؤرشف من الأصل في 5 أغسطس 2020. تم الاطلاع عليه في 19 أغسطس 2020 .
- ↑ "ما الفرق بين cron و crontab و cronjob؟" . موقع Stack Overflow . مؤرشف من الأصل بتاريخ 1 أبريل 2021. تم الاطلاع عليه بتاريخ 19 أغسطس 2020 .
- ↑ "Cron Job: دليل شامل للمبتدئين 2020" . 24 مايو 2019. مؤرشف من الأصل في 24 يونيو 2019. تم الاطلاع عليه في 19 أغسطس 2020 .
- ↑ "Crontab – مرجع سريع" . اختيار المشرف . 21 ديسمبر 2009. مؤرشف من الأصل في 2 سبتمبر 2020. تم الاطلاع عليه في 19 أغسطس 2020 .
- ↑ "لينكس - cron و crontab" . كلية الزراعة وعلوم الحياة بجامعة كورنيل . مؤرشف من الأصل بتاريخ 4 يونيو 2019. تم الاطلاع عليه بتاريخ 12 يوليو 2025 .
- 1 2 "crontab" ، المواصفات الأساسية لمجموعة Open Group، الإصدار 7 - معيار IEEE 1003.1، إصدار 2013 ، مجموعة Open Group، 2013، مؤرشف من الأصل في 16 مايو 2015 ، تم استرجاعه في 18 مايو 2015
- ↑ "تعبيرات الجدولة للقواعد" . أمازون. مؤرشف من الأصل بتاريخ 2020-12-02 . تم الاسترجاع بتاريخ 2021-01-19 .
- 1 2 "دليل تنسيقات ملفات FreeBSD لـ CRONTAB(5)" . مشروع FreeBSD. مؤرشف من الأصل بتاريخ 2017-02-01 . تم الاطلاع عليه بتاريخ 2015-04-30 .
- ↑ "#77563 - cron: crontab(5) غير دقيق، '@reboot' يُفعّل عند إعادة تشغيل cron، وليس النظام" . نظام تتبع الأخطاء في دبيان . مؤرشف من الأصل بتاريخ 2019-07-02 . تم الاطلاع عليه بتاريخ 2013-11-06 .
- ↑ "crontab(5): جداول لتشغيل cron - صفحة دليل لينكس" . Linux.die.net. مؤرشف من الأصل بتاريخ 2013-11-08 . تم الاطلاع عليه بتاريخ 2013-11-06 .
- ↑ "V7/etc/rc" . الصفحة الرئيسية لميني . مؤرشفة من الأصل بتاريخ 24-02-2021 . تم الاطلاع عليها بتاريخ 12-09-2020 .
- ↑ "V7/usr/src/cmd/cron.c" . الصفحة الرئيسية لميني . مؤرشف من الأصل بتاريخ 28-05-2020 . تم الاطلاع عليه بتاريخ 12-09-2020 .
- ↑ "cronie-crond/cronie" . cronie-crond. 20 سبتمبر 2024. مؤرشف من الأصل في 11 ديسمبر 2024. تم الاسترجاع في 27 سبتمبر 2024 .
- ↑ "التحميل الأولي لـ anacron-2.3 والذي ينبغي تحسينه لتحسين الأداء · cronie-crond/cronie@55f4057" . GitHub . مؤرشف من الأصل بتاريخ 11 ديسمبر 2024. تم الاطلاع عليه بتاريخ 27 سبتمبر 2024 .
- ↑ براير، جيم (5 يناير 2010). "كرون" . arch-general@archlinux.org (قائمة بريدية) . تم الاطلاع عليه بتاريخ 6 نوفمبر 2013 .
- ↑ ميلور، ديل (1 يونيو 2003). "Mcron - متطلبات المستخدم وتحليلها" . مؤرشف من الأصل بتاريخ 23 أغسطس 2019. تم الاطلاع عليه بتاريخ 11 يونيو 2019 .
- ↑ "دليل مرجعي لبرنامج GNU Guix: 8.8.2 تنفيذ المهام المجدولة" . GNU Guix. 19-05-2019. مؤرشف من الأصل بتاريخ 08-05-2019 . تم الاطلاع عليه بتاريخ 11-06-2019 .
- ↑ "OCPS 1.0: الأساس" . open-source-cron. 28 أكتوبر 2025. تم الاطلاع عليه بتاريخ 28 أكتوبر 2025 .
- ↑ "دليل استخدام Cron في أوبونتو" . Help.ubuntu.com. 2013-05-04 . تم الاطلاع عليه بتاريخ 2013-11-06 .
- ↑ "دليل استخدام CronTrigger" . موقع Quartz Scheduler الإلكتروني . مؤرشف من الأصل بتاريخ 25 أكتوبر 2011. تم الاطلاع عليه بتاريخ 24 أكتوبر 2011 .
- ↑ "مرجع mcron crontab" . Gnu.org. مؤرشف من الأصل بتاريخ 27-03-2017 . تم الاطلاع عليه بتاريخ 06-11-2013 .
- ↑"Oracle® Role Manager Integration Guide". Docs.oracle.com. Archived from the original on 2013-06-25. Retrieved 2013-11-06.
- ↑"Cron format". nnBackup. Archived from the original on 2014-06-19. Retrieved 2014-05-27.
- ↑"Python Crontab". GitHub. Archived from the original on 2023-04-06. Retrieved 2023-04-05.
- ↑"Timer Trigger Syntax". jenkins.com. Archived from the original on 2020-06-12. Retrieved 2018-02-16.
External links
- : schedule periodic background work – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Group
- GNU cron (mcron)
- ISC Cron 4.1
- Standard Unix programs
- Unix SUS2008 utilities
- Unix process- and task-management-related software
- Job scheduling
