CRON(8)

الاسم
cron - برنامج خفي لتنفيذ الأوامر المجدولة (Vixie Cron)

موجز

cron [-f] [-l] [-L loglevel] [-n fqdn] [-x debugflags]

cron [-N]

الوصف

cron يُستدعى مباشرة بواسطة systemd(1) عند الدخول إلى مستويات تشغيل متعددة المستخدمين.

الخيارات

-f
    البقاء في وضع المقدمة، لا تتحول إلى برنامج خفي.

-l
    تمكين أسماء متوافقة مع LSB لملفات /etc/cron.d. هذا الإعداد، مع ذلك، لا يؤثر على تحليل الملفات تحت /etc/cron.hourly أو /etc/cron.daily أو /etc/cron.weekly أو /etc/cron.monthly.

-n fqdn
    تضمين اسم النطاق المؤهل بالكامل (FQDN) في الموضوع عند إرسال رسائل البريد. بشكل مبدئي، cron سيختصر اسم المضيف.

-N
    تشغيل مهام cron الآن، فوراً، ثم الخروج. هذا الخيار مفيد لإجراء الاختبارات.

-L loglevel
    إخبار cron بما يجب تسجيله عن المهام (يتم تسجيل الأخطاء بغض النظر عن هذه القيمة) كمجموع القيم التالية:

    1
        سيقوم بتسجيل بدء جميع مهام cron

    2
        سيُسجّل نهاية جميع وظائف cron

    4
        سيُسجّل جميع الوظائف الفاشلة (حالة الخروج != 0)

    8
        سيُسجّل رقم العملية لجميع وظائف cron

    المبدئي هو تسجيل بداية جميع الوظائف (1). سيُعطّل التسجيل إذا ضُبط loglevel على صفر (0). القيمة خمسة عشر (15) ستختار جميع الخيارات.

-x debugflags
    أخبر cron بأن يكون أكثر إفصاحًا ويُخرج معلومات التصحيح؛ debugflags هو مجموع تلك القيم:

    1
        "ext": ...

    2
        "sch": ...

    4
        "proc": ...

    8
        "pars": ...

    16
        "load": ..

    32
        "misc": ...

    64
        "test": ...

    128
        "bit": ...

ملاحظات

يبحث cron في منطقة التخزين المؤقت الخاصة به (/var/spool/cron/crontabs/) عن ملفات crontab (التي تُسمى بأسماء الحسابات في /etc/passwd)؛ تُحمّل ملفات crontab الموجودة في الذاكرة. لاحظ أن ملفات crontab في هذا الدليل لا ينبغي الوصول إليها مباشرة - بل ينبغي استخدام الأمر crontab(1) للوصول إليها وتحديثها.

يقرأ cron أيضًا /etc/crontab، وهو بتنسيق مختلف قليلاً (انظر crontab(5)). في دبيان، محتوى /etc/crontab مُحدّد مسبقًا لتشغيل البرامج تحت /etc/cron.hourly و/etc/cron.daily و/etc/cron.weekly و/etc/cron.monthly. هذا التكوين خاص بدبيان، انظر الملاحظة تحت DEBIAN SPECIFIC أدناه.

بالإضافة إلى ذلك، في دبيان، يقرأ cron الملفات في الدليل /etc/cron.d. يعامل cron الملفات في /etc/cron.d بنفس طريقة ملف /etc/crontab (تتبع التنسيق الخاص لذلك الملف، أي أنها تتضمن حقل user). ومع ذلك، فهي مستقلة عن /etc/crontab: فهي لا ترث، على سبيل المثال، إعدادات متغيرات البيئة منه. هذا التغيير خاص بدبيان، انظر الملاحظة تحت DEBIAN SPECIFIC أدناه.

مثل /etc/crontab، تُراقب الملفات في الدليل /etc/cron.d بحثًا عن التغييرات. يمكن لمسؤول النظام إنشاء وظائف cron في /etc/cron.d/ بأسماء ملفات مثل "local" أو "local-foo".

/etc/crontab والملفات الموجودة في /etc/cron.d يجب أن تكون مملوكة لمستخدم root، ويجب ألا تكون قابلة للكتابة من قبل المجموعة أو مستخدمين آخرين. وعلى عكس منطقة التخزين المؤقت، فإن الملفات الموجودة تحت /etc/cron.d أو الملفات الموجودة تحت /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly و
 /etc/cron.monthly قد تكون أيضًا روابط رمزية، بشرط أن تكون كل من الرابط الرمزي والملف الذي يشير إليه مملوكين لـ root. الملفات الموجودة تحت /etc/cron.d لا تحتاج إلى أن تكون قابلة للتنفيذ، بينما الملفات الموجودة تحت /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly و /etc/cron.monthly يجب أن تكون قابلة للتنفيذ، حيث تُشغّل بواسطة run-parts (انظر run-parts(8) لمزيد من المعلومات).

يستيقظ cron بعد ذلك كل دقيقة، ويفحص جميع ملفات crontab المخزنة، ويتحقق من كل أمر لمعرفة ما إذا كان ينبغي تشغيله في الدقيقة الحالية. عند تنفيذ الأوامر، يُرسل أي مخرجات عبر البريد إلى مالك crontab (أو إلى المستخدم المُسمى في متغير البيئة MAILTO في crontab، إذا كان موجودًا) من مالك crontab (أو من عنوان البريد الإلكتروني المُعطى في متغير البيئة MAILFROM في crontab، إذا كان موجودًا). تُجبر نسخ cron الفرعية التي تُشغّل هذه العمليات على تحويل اسمها إلى أحرف كبيرة، كما سيُرى في syslog ومخرجات ps(1).

بالإضافة إلى ذلك، يتحقق cron كل دقيقة لمعرفة ما إذا كان وقت تعديل دليل التخزين المؤقت (أو وقت تعديل ملف /etc/crontab) قد تغير، وإذا تغير، فسيقوم cron بفحص وقت تعديل جميع جداول crontab وإعادة تحميل تلك التي تغيرت. وبالتالي، لا حاجة لإعادة تشغيل cron كلما تم تعديل ملف crontab. لاحظ أن أمر crontab(1) يحدّث وقت تعديل دليل التخزين المؤقت كلما غيّر crontab.

توجد اعتبارات خاصة عند تغيير الساعة بأقل من 3 ساعات، على سبيل المثال في بداية ونهاية التوقيت الصيفي. إذا تقدم الوقت، فسيتم تشغيل المهام التي كانت ستُشغّل في الوقت الذي تم تخطيه بعد التغيير بفترة وجيزة. على العكس، إذا تأخر الوقت بأقل من 3 ساعات، فلن يتم إعادة تشغيل المهام التي تقع في الوقت المكرر.

تتأثر فقط المهام التي تُشغّل في وقت معين (غير محددة كـ @hourly، ولا تحتوي على '*' في محدد الساعة أو الدقيقة). المهام المحددة بأحرف بدل تُشغّل بناءً على الوقت الجديد فوراً.

تعتبر تغييرات الساعة التي تزيد عن 3 ساعات تصحيحات للساعة، ويُستخدم الوقت الجديد فوراً.

يسجل cron إجراءاته في مرفق syslog 'cron'، ويمكن التحكم في التسجيل باستخدام مرفق syslogd(8) القياسي.

البيئة

إذا تم تكوينه في /etc/default/cron في أنظمة دبيان، يمكن إدارة بيئة إعدادات التوطين لبرنامج cron الخفي من خلال استخدام /etc/environment أو من خلال استخدام /etc/default/locale مع تجاوز القيم من الأخير لقيم الأول. تُقرأ هذه الملفات وتُستخدم لإعداد متغيرات البيئة LANG وLC_ALL وLC_CTYPE. تُستخدم هذه المتغيرات بعد ذلك لتعيين مجموعة أحرف البريد الإلكتروني، والتي تكون مبدئياً 'C'.

هذا لا يؤثر على بيئة المهام التي تعمل تحت cron. لمزيد من المعلومات حول كيفية تعديل بيئة المهام، راجع crontab(5).

سيستخدم البرنامج الخفي، إن وجد، التعريف من /etc/localtime للمنطقة الزمنية.

يمكن إعادة تعريف البيئة في تعريفات crontab للمستخدم، لكن cron سيعالج المهام فقط في منطقة زمنية واحدة.

خاص بدبيان

تقدم دبيان بعض التغييرات على cron التي لم تكن متاحة أصلاً في المنبع. أهم التغييرات المقدمة هي:

    • دعم /etc/cron.{hourly,daily,weekly,monthly} عبر /etc/crontab،

    • دعم /etc/cron.d (دليل إدراج لجداول crontab للحزم)،

    • دعم PAM،

    • دعم SELinux،

    • دعم سجل التدقيق،

    • التوقيت الصيفي وتغييرات/إصلاحات أخرى متعلقة بالوقت،

    • SGID crontab(1) بدلاً من SUID root،

    • مواقع ملفات وأوامر خاصة بدبيان،

    • تكوين خاص بدبيان (/etc/default/cron)،

    • ميزات وإصلاحات أصغر أخرى عديدة.

الدعم لـ /etc/cron.hourly و /etc/cron.daily و /etc/cron.weekly و /etc/cron.monthly مُقدم في دبيان عبر الإعداد المبدئي لملف /etc/crontab (انظر المثال على مستوى النظام في crontab(5)). يحتوي crontab المبدئي على مستوى النظام على أربع مهام: تشغيل كل ساعة، كل يوم، كل أسبوع وكل شهر. كل مهمة من هذه المهام ستنفذ run-parts(8) مع توفير كل دليل من الأدلة كوسيط. هذه المهام مُعطلة إذا كان anacron(8) مثبتًا (باستثناء المهمة الساعية) لمنع التعارض بين الخادمين.

كما هو موصوف أعلاه، يجب أن تجتاز الملفات تحت هذه الأدلة بعض فحوصات السلامة بما في ذلك التالي: أن تكون قابلة للتنفيذ، مملوكة للجذر، غير قابلة للكتابة من قبل المجموعة أو الآخرين، وإذا كانت روابط رمزية، تشير إلى ملفات مملوكة للجذر. بالإضافة إلى ذلك، يجب أن تتوافق أسماء الملفات مع متطلبات اسم الملف لـ run-parts(8): يجب أن تتكون بالكامل من حروف وأرقام ويمكن أن تحتوي فقط على العلامات الخاصة الشرطة السفلية ('_') والواصلات ('-'). أي ملف لا يتوافق مع هذه المتطلبات لن ينفذ بواسطة run-parts(8). على سبيل المثال، أي ملف يحتوي على نقاط سيتم تجاهله. يُفعل هذا لمنع cron من تشغيل أي من الملفات التي يتركها نظام إدارة حزم دبيان عند معالجة الملفات في /etc/cron.d/ كملفات تهيئة (أي الملفات المنتهية بـ .dpkg-dist و .dpkg-orig و .dpkg-old و .dpkg-new).

يمكن استخدام هذه الميزة من قبل مدراء النظام والحزم لتضمين مهام سيتم تشغيلها على فترات زمنية محددة. يجب تسمية الملفات التي تنشئها الحزم في هذه الأدلة باسم الحزمة التي توفرها.

الدعم لـ /etc/cron.d مُضمن في خادم cron نفسه، الذي يعالج هذا الموقع كمجمع crontab على مستوى النظام. يمكن أن يحتوي هذا الدليل على أي ملف يعرف المهام باتباع التنسيق المستخدم في /etc/crontab، أي على عكس مجمع cron للمستخدم، يجب أن توفر هذه الملفات اسم المستخدم لتشغيل المهمة في تعريف المهمة.

يجب أن تكون الملفات في هذا الدليل مملوكة للجذر، ولا تحتاج إلى أن تكون قابلة للتنفيذ (فهي ملفات تهيئة، تمامًا مثل /etc/crontab) ويجب أن تتوافق مع اصطلاح التسمية نفسه المستخدم بواسطة run-parts(8): يجب أن تتكون فقط من أحرف كبيرة وصغيرة وأرقام وشرطات سفلية وواصلات. هذا يعني أنها لا يمكن أن تحتوي على أي نقاط. إذا تم تحديد الخيار -l لـ cron (يمكن إعداد هذا الخيار عبر /etc/default/cron، انظر أدناه)، فيجب أن تتوافق مع مواصفات مساحة اسم LSB، تمامًا كما في الخيار --lsbsysinit في run-parts(8).

الغرض المقصود من هذه الميزة هو السماح للحزم التي تتطلب تحكمًا أدق في جدولتها من الأدلة /etc/cron.{hourly,daily,weekly,monthly} بإضافة ملف crontab إلى /etc/cron.d. يجب تسمية هذه الملفات باسم الحزمة التي توفرها.

أيضًا، يتم التحكم في التهيئة المبدئية لـ cron بواسطة /etc/default/cron الذي يُقرأ بواسطة سكريبت init.d الذي يشغل خادم cron. يحدد هذا الملف ما إذا كان cron سيقرأ متغيرات بيئة النظام ويجعل من الممكن إضافة خيارات إضافية إلى برنامج cron قبل تنفيذه، إما لتهيئة تسجيله أو لتحديد كيفية معالجته للملفات تحت /etc/cron.d.

انظر أيضًا

crontab(1)، crontab(5)، run-parts(8)

المؤلفون

بول فيكسي <paul@vix.com>
    كتب صفحة الدليل هذه (1994).

ستيف غرينلاند <stevegr@debian.org>
    صان الحزمة (1996-2005).

خافيير فيرنانديز سانغينو بينيا <jfs@debian.org>
    صان الحزمة (2005-2014).

كريستيان كاستنر <ckk@debian.org>
    صان الحزمة (2010-2016).

جورج خزندار <georgesk@debian.org>
    صان الحزمة (2022-2024).

حقوق النسخ
حقوق النشر © 1994 بول فيكسي

وزع البرنامج بحرية، باستثناء: لا تحذف اسمي من المصدر أو التوثيق (لا تنسب عملي إليك)، حدد تغييراتك (لكي لا أُلام على عللك المحتملة)، لا تغير أو تحذف هذا التنويه. يمكن بيعه إذا قُدم المصدر القابل للبناء للمشتري. لا يتضمن هذا البرنامج أي ضمان من أي نوع، صريحًا كان أو ضمنيًا؛ استخدمه على مسؤوليتك الخاصة، وتقع مسؤولية الأضرار (إن وجدت) التي تلحق بأي شخص نتيجة استخدام هذا البرنامج بالكامل على المستخدم.

منذ عام 1994، أُجريت العديد من التعديلات على صفحة الدليل هذه، صاغها مطورو دبيان الذين صانوا cron(TM)؛ أعلاه قائمة قصيرة، ويمكن العثور على مزيد من المعلومات في ملف /usr/share/doc/cron/copyright.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.