Crontab هي أداة تنفيذ مجدولة شائعة الاستخدام ضمن أنظمة Unix/Linux، والتي يمكنها تشغيل مهام محددة دون تدخل يدوي. يتعين علينا في كثير من الأحيان استخدام أمر Crontab، على سبيل المثال، يستخدم البرنامج النصي acme.sh المذكور في شهادة SSL لاسم المجال المجاني Let’s Encrypt Wildcard مهمة Crontab المجدولة لتحديث شهادة SSL.

من خلال أمر crontab، يمكننا تنفيذ تعليمات النظام المحددة أو نصوص shell على فترات زمنية محددة. عندما يقوم Linux VPS بتثبيت Google Drive وDropbox، يمكننا استخدام أمر Crontab لتحقيق النسخ الاحتياطي للمزامنة المجدولة، واستخدام Crontab لإعادة تشغيل VPS والخادم بانتظام. كل يوم أو خدمات Nginx وPHP وMysqL وما إلى ذلك.

باختصار، يعد إتقان بناء جملة أمر Crontab الأساسي أمرًا ضروريًا جدًا بالنسبة لنا لإدارة مضيفي VPS الخاصين بنا. تشرح هذه المقالة كيفية استخدام أمر Linux Crontab من خلال الأمثلة دون التعمق في الاستكشاف فى المستقبل.

يقوم أمر Linux Crontab ببناء الجملة الأساسية للمهمة المجدولة وتشغيل البرنامج التعليمي-عملية أتمتة VPS/الخادم

لمزيد من الأوامر والتطبيقات المتعلقة باستضافة VPS، يمكنك الاطلاع على:

  1. ملخص أوامر مراقبة نظام Linux - وحدة المعالجة المركزية الرئيسية، والذاكرة، وإدخال القرص، وما إلى ذلك للعثور على اختناقات الأداء
  2. ثلاث أدوات أوامر Rsync وSCP وTar-Quick الحل لنقل موقع الويب عن بعد VPS ومزامنة البيانات
  3. ثلاث طرق لمشاركة أدلة المجلدات في Linux - التثبيت عن بعد لـ NFS والتخزين المشترك لـ GlusterFS وأدلة samba المشتركة

1. عرض Crontab وتحرير إعادة التشغيل

1. عرض قائمة مهام التنفيذ المجدولة لـ crontab

crontab -l

2. قم بتحرير crontab لتنفيذ المهام بانتظام

crontab -e

3. حذف المهام المجدولة crontab

crontab -r

4. الأوامر ذات الصلة:

sudo service crond start     #启动服务
sudo service crond stop      #关闭服务
sudo service crond restart   #重启服务
sudo service crond reload    #重新载入配置
sudo service crond status    #查看服务状态

2. بناء جملة التنسيق الأساسي لـ Crontab

التعبير الزمني لـ crontab:

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

دعونا ننظر إلى مثال أولا. قم بتنفيذ برنامج النسخ الاحتياطي الساعة 1:00 صباحًا كل يوم: 0 1 * * * /root/wzfou.com/backup.sh. من بينها، /root/wzfou.com/backup.sh هو مسار البرنامج النصي لاستخدام المسار المطلق، يرجى الاطلاع على الشكل أدناه لمعرفة تنسيق التاريخ السابق.

المثيل 1: يتم تنفيذ كل دقيقة واحدة

* * * * * /root/wzfou.com/backup.sh

المثيل 2: نفذ مرة واحدة كل ساعة في الدقيقتين الثالثة والخامسة عشرة

3,15 * * * * /root/wzfou.com/backup.sh

مثال 3: تنفيذ مرة واحدة كل يوم من الساعة 8:00 إلى الساعة 11:00 في الدقيقتين الثالثة والخامسة عشرة

3,15 8-11 * * * /root/wzfou.com/backup.sh

المثيل 4: يتم تنفيذه كل يومين في الدقيقتين الثالثة والخامسة عشرة من الساعة 8 صباحًا حتى الساعة 11 صباحًا

3,15 8-11 */2  *  * /root/wzfou.com/backup.sh

المثيل 5: يتم تنفيذه كل يوم اثنين من الساعة 8 صباحًا حتى 11 صباحًا في الدقيقتين الثالثة والخامسة عشرة

3,15 8-11 * * 1 /root/wzfou.com/backup.sh

مثال 6:تنفيذ مرة واحدة كل ليلة في الساعة 21:30

30 21 * * * /root/wzfou.com/backup.sh

المثيل 7: يتم تنفيذه مرة واحدة كل شهر الساعة 4:45 في اليوم الأول والعاشر والثاني والعشرين.

45 4 1,10,22 * * /root/wzfou.com/backup.sh

مثال 8:تنفيذ مرة واحدة كل سبت وأحد الساعة 1:10

10 1 * * 6,0 /root/wzfou.com/backup.sh

المثيل 9: يتم تنفيذه كل 30 دقيقة بين الساعة 18:00 و23:00 كل يوم

0,30 18-23 * * * /root/wzfou.com/backup.sh

المثيل 10: يتم تنفيذه مرة واحدة كل يوم سبت الساعة 23:00 مساءً

0 23 * * 6 /root/wzfou.com/backup.sh

مثال 11:تنفيذ مرة واحدة كل ساعة

* */1 * * * /root/wzfou.com/backup.sh

المثال 12:يتم تنفيذه كل ساعة بين الساعة 23:00 كل ليلة والساعة 7:00 من اليوم التالي

* 23-7/1 * * * /root/wzfou.com/backup.sh

المثال 13: يتم تنفيذ في اليوم الأول من كل أسبوع (أي أنه يبدأ الساعة 24:00 كل ليلة أحد).

@weekly /root/wzfou.com/backup.sh

المثال 14:قم بالتنفيذ مرة واحدة في اليوم الخامس عشر من كل شهر.

0 11 15 * * /root/wzfou.com/backup.sh

المثيل 15: يتم تنفيذ مرة واحدة في اليوم الأول من كل شهر (أي أنه يبدأ في الساعة 0 صباحًا في اليوم الأول من كل شهر).

@monthly /root/wzfou.com/backup.sh

المثيل 16: يتم تنفيذ مرة واحدة في الشهر المحدد (يتم تنفيذه مرة واحدة كل ليلة عند الساعة 0:00 في يناير وأبريل ويونيو).

0 0 * jan,apr,jun * /root/wzfou.com/backup.sh

المثيل 17: يتم تنفيذه مرة واحدة بعد إعادة التشغيل.

@reboot /root/wzfou.com/backup.sh

المثال 18:أرسل إشعارًا بالبريد الإلكتروني بعد تنفيذ المهمة المجدولة.

MAILTO="raj"
1 1 * * * /root/wzfou.com/backup.sh

المثال 19: حدد الصدفة (الافتراضي هو /bin/bash)

SHELL=/bin/sh
1 1 * * * /root/wzfou.com/backup.sh

المثيل 20: يحدد متغيرات البيئة.

PATH=/sbin:/bin:/usr/sbin:/usr/bin 
1 1 * * * /root/wzfou.com/backup.sh

4. المشاكل المحتملة مع Crontab

4.1  لا يدخل Crontab حيز التنفيذ على الفور

ستحتاج مهمة Crontab المجدولة التي تم إنشاؤها حديثًا إلى الانتظار لمدة دقيقتين قبل تنفيذها بعد حفظها. بالطبع، إذا كنت تريد تنفيذها على الفور، فيمكنك إعادة تشغيل Crontab. عند فشل crontab، يمكنك تجربة إعادة تشغيل /etc/init.d/crond لحل المشكلة، أو التحقق من السجل لمعرفة ما إذا تم تنفيذ مهمة معينة/تم الإبلاغ عن خطأ tail -f /var/log/cron.

4.2  لا يتم تنفيذ Crontab

عندما يكون مسار الملف متضمنًا في البرنامج النصي، اكتب المسار العام بعد تحديث وقت النظام والمنطقة الزمنية، يجب إعادة تشغيل cron. عندما يكون التنفيذ اليدوي للبرنامج النصي على ما يرام، ولكن لا يتم تنفيذ crontab، فمن المرجح أن يكون متغير بيئة، يمكنك محاولة إدخال متغير البيئة مباشرة في crontab لحل المشكلة، على سبيل المثال:

0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh

4.3  ليس لدى Crontab إذن بالتنفيذ

انتبه إلى جدولة المهام على مستوى النظام وجدولة المهام على مستوى المستخدم. يمكن فقط للمستخدم الجذر ومالك الملف crontab تشغيل -e و-l و-r و- v< استخدم اسم المستخدم بعد علامة ept4> لتحرير ملف crontab أو إدراجه أو إزالته أو التحقق منه لمستخدم محدد.

يمكن تعيين عملية جدولة المهام للمستخدم الجذر من خلال "crontab -uroot -e"، أو يمكن كتابة المهام المجدولة مباشرة إلى ملف /etc/crontab.

لتحرير crontab لمستخدم آخر، قم بتشغيل الأمر التالي كجذر. يمكن أيضًا استخدام نفس التنسيق (ألحق "-u username" في نهاية الأمر) لسرد علامات crontab أو حذفها.

 crontab -u username -e

4.4  إشعار بعد تنفيذ Crontab

عند تنفيذ مهمة Crontab المجدولة في الوقت الذي تحدده، سيرسل لك النظام خطابًا يوضح محتوى تنفيذ البرنامج، والذي يمكن رؤيته في السجل /var/log/cron. إذا كنت لا ترغب في تلقي مثل هذا الإشعار، يرجى إضافة > /dev/null 2>&1 بعد مسافة في كل سطر.

اترك رد