مقدمة
تحتوي توزيعات Linux (Ubuntu و CentOS) وأنظمة التشغيل الأخرى الشبيهة بـ Unix على جدولة الوظائف القائم على الوقت والمعروف باسم Cron. تعتبر Cron ممتازة لأتمتة الأعمال المنزلية المرتبطة بالصيانة لأنها تعمل في الخلفية ويتم تنفيذ الإجراءات المخطط لها معها، والمعروفة باسم «وظائف cron»، تلقائيًا.
يقدم هذا البرنامج التعليمي تعليمات لجدولة الوظائف باستخدام التركيبة الفريدة من cron. كما يناقش بعض الاختصارات التي قد تتخذها لتسريع وتحسين إمكانية قراءة جداول المهام.
متطلبات
لإكمال هذا الدليل، ستحتاج إلى الوصول إلى خادم يعمل بـ Ubuntu LTS أو CentOS.
بغض النظر عن نوع الكمبيوتر الذي تستخدمه لاتباع هذه التعليمات، يجب تعيينه مع مستخدم غير root لديه وصول . لإعداده ، اتبع دليلنا على أنشئ مستخدمًا جديدًا مدعومًا بالسودو في Ubuntu LTS و CentOS 7.
الخطوة 1: تثبيت كرون
تتميز جميع توزيعات Linux تقريبًا بنوعها الخاص من الكرون المثبت ببساطة عن طريق التخلف عن السداد. ومع ذلك، حتى في حالة استخدامك لآلة Ubuntu التي لم يتم تثبيت cron فيها، يمكنك تثبيتها باستخدام APT.
قبل تركيب الكرون على الجهاز، تحديث فهرس الطرود المحلية للحاسوب:
Ubuntu
$ sudo apt update
CentOS
$ sudo yum update
And then install cron with the following command:
Ubuntu
$ sudo apt install cron
CentOS
$ sudo yum install cron
ستحتاج إلى التأكد من أنه من المقرر تشغيله في الخلفية أيضًا:
$ sudo systemctl enable cron
root@Ubuntu:~# sudo systemctl enable cron
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
الخطوة 2: فقط كيف يعمل كرون
يتم توثيق وظائف Cron وإدارتها في وثيقة خاصة تسمى crontab. قد يكون لكل حساب على النظام crontab خاص به حيث يمكنهم جدولة الوظائف، والتي يتم تخزينها تحت/var/spool/cron/crontabs/ .
لتحديد موعد الوظيفة، افتح crontab الخاص بك للتحرير وأضف وظيفة مكتوبة على شكل تعبير cron. يمكن فصل التركيب الخاص لتعبيرات cron إلى عنصرين: الجدول الزمني والأمر بالتنفيذ.
يجب أن تستخدم أي أمر تقريبًا تقوم بتشغيله عادةً باستخدام سطر الأوامر. ينقسم مكون الخطة إلى 5 حقول مختلفة، وهي مكتوبة بالأمر التالي:
1st | 2nd | 3rd | 4th | 5th | |
---|---|---|---|---|---|
* | * | * | * | * | |
هوية | دقيقة | ساعة | يوم-تاريخ | شهر | اسم اليوم |
القيم المسموح بها | 0-59 | 0-23 | 1-31 | 1-12 or JAN-DEC | 0-6 or SUN-SAT |
كل مهمة مجدولة في crontab منظمة على النحو التالي:
$ * * * * * <command>
# OR
$ * * * * * <path/to/script>
مثال:
من المقرر أن يدير هذا الأمر المهمة في الساعة 00:00 [منتصف الليل] كل يوم أحد
0 0 * * 0 curl webhi.com
ملاحظة:
* : في تعبيرات cron، علامة النجمة هي متغير بطاقة البدل الذي يمثل «الكل». وبالتالي، مهمة مقررة مع * * * * * كل دقيقة من كل ساعة من كل يوم من كل شهر. , : تقوم الفواصل بتفكيك قيم الجدولة لتشكيل قائمة. إذا كنت ترغب في تشغيل مهمة في بداية ومنتصف كل ساعة، بدلاً من كتابة مهمتين منفصلتين - : تمثل الواصلة مجموعة من القيم في مجال الجدول الزمني. / : يمكنك استخدام شرطة مائلة بعلامة النجمة للتعبير عن قيمة الخطوة.
ملاحظة: من المهم ملاحظة أنه لا يمكنك التعبير عن قيم الخطوات بشكل عشوائي ؛ يجب عليك استخدام الأعداد الصحيحة التي تنقسم بالتساوي ضمن النطاق المسموح به في الحقل المعني. في عمود «الساعات»، على سبيل المثال، يمكنك فقط إدخال 1 أو 2 أو 3 أو 4 أو 5 أو 6 أو 7 أو 12 بعد شرطة مائلة.
فيما يلي بعض الأمثلة الأخرى على كيفية استخدام عنصر الجدولة في cron:
* * * * * - كل دقيقة. 12 * * * * - 12 دقيقة بعد كل ساعة. (0,15,30,45 * * * *) / (*/15 * * * *) - كل 15 دقيقة. 0 4 * * * - كل يوم في الساعة 4:00 صباحًا. 0 4 * * 2-4 - كل ثلاثاء وأربعاء وخميس الساعة 4 صباحا 20,40 */8 * 7-12 * - كل يوم طوال الأشهر الستة الأخيرة من العام، في الدقيقتين 20 و 40 من الساعة التاسعة.
الخطوة 3: كتابة Crontabs
Cron، كما ذكرنا سابقًا، هو ملف خاص يخزن جدول الوظائف التي سيتم تشغيلها. ومع ذلك، لم يتم تصميم هذه لتغييرها مباشرة. بدلاً من ذلك، يُنصح باستخدام أمر crontab. يتيح لك هذا تغيير ملف تعريف المستخدم الخاص بك دون الحاجة إلى استخدام سودو. سيخبرك أمر crontab أيضًا إذا كانت هناك أي أخطاء في الجملة في crontab، ولكن تغييرها مباشرة لن يحدث.
يمكنك تعديل crontab الخاص بك عن طريق تشغيل الأمر التالي:
$ crontab -e
no crontab for bob - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
أدخل الرقم المقابل للمحرر الذي تختاره. بدلاً من ذلك، يمكنك الضغط على ENTER لقبول الخيار الافتراضي، نانو.
عندما تستخدم crontab -e في المستقبل، فإنه سيفتح تلقائيًا crontab في محرر النص هذا.
بعد أن تتخذ قرارك، سيتم قيادتك إلى crontab جديد مع بعض التعليمات المعلقة حول كيفية استخدامه:
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any'). # # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command
يمكنك استخدام الأمر التالي لفحص محتويات crontab الخاص بك وليس كتابته:
$ crontab -l
يمكنك مسح crontab الخاص بك من خلال تشغيل الأمر التالي:
تحذير: لن يدفعك الأمر التالي إلى تأكيد رغبتك في حذف كرونتاب. قم بتشغيله فقط إذا كنت متأكدًا من رغبتك في حذفه.
$ crontab -r
خلاصة
Cron هي أداة مرنة وقوية يمكنها تخفيف عبء العديد من المهام المرتبطة بإدارة النظام. جنبًا إلى جنب مع سكربت شل، يمكنها أتمتة المهام المملة والمعقدة عادةً.