Crontab في Linux - مع أمثلة وأدوات في الوقت الفعلي
نشرت: 2015-07-26دعنا نستكشف crontab وأوامره والعمليات المختلفة المرتبطة بـ Crontab.
سنتعلم كيفية جدولة المهام باستخدام الأداة المساعدة cron ، وفي النهاية ، سنناقش أيضًا بعض الأدوات عبر الإنترنت التي تساعدنا في تنسيق أوامر cron واختبارها.
أصل
Crontab تعني " طاولة كرون ". كلمة كرون مأخوذة من الكلمة اليونانية كرونوس التي تعني الوقت. Crontab هي عملية خفية للنظام ستؤدي تلقائيًا بعض المهام والوظائف وفقًا للوقت المحدد.
استخدم حالات
يعد Crontab مفيدًا لأداء العديد من العمليات مثل التعامل مع النسخ الاحتياطي الآلي ، وتدوير ملفات السجل ، ومزامنة الملفات بين الأجهزة البعيدة ومسح المجلدات المؤقتة ، وما إلى ذلك. يمكن استخدام Crontab في أي نوع من العمل ، ولكنه يصبح مفيدًا بشكل خاص عندما نبدأ في التعامل مع نوع عمل إدارة النظام.
باستخدام cron ، يمكن للمسؤول جدولة وظيفة لتعمل في وقت ويوم محددين.
لذلك دعونا نرى كيف يمكننا إعداد هذا.
النحو Crontab
لتنفيذ قائمة الأوامر ، تقرأ الأداة المساعدة cron ملفات التكوين. لتفسير الأسطر في جداول تكوين crontab ، فإنه يتبع صيغة Crontab. يحتوي Crontab على ستة حقول ، وتحدد الحقول الخمسة الأولى (1-5) تاريخ ووقت التنفيذ. يمكن أن يكون الحقل الأخير ، أي الحقل السادس ، اسم مستخدم و / أو مهمة / مهمة / أمر / نص ليتم تنفيذه.
* * * * * USER_NAME COMMAND / SCRIPT-TO-EXECUTE
│ │ │ │ │
│ │ │ │ │
│ │ │ │ | _________ يوم الأسبوع (0-6) (0 هو الأحد ، أو استخدم الأسماء)
│ │ │ | ____________ الشهر (1 - 12) ، * تعني كل شهر
│ │ | ______________ يوم من الشهر (1 - 31) ، * تعني كل يوم
│ | ________________ الساعة (0 - 23) ، * تعني كل ساعة
| ___________________ الدقيقة (0-59) ، * تعني كل دقيقة
ملاحظات :
- تُستخدم علامة النجمة (*) لمطابقة جميع القيم الممكنة للحقل. على سبيل المثال ، ستكون العلامة النجمية المستخدمة في حقل الساعة معادلة لكل ساعة أو ستكون علامة النجمة في حقل الشهر معادلة لكل شهر.
- اسم المستخدم اختياري (متاح فقط إذا كان ملف crontab للنظام)
أمثلة:
دعونا نفهم بناء الجملة أعلاه مع بعض الأمثلة
1. جدولة cron للتنفيذ في الساعة 5 صباحًا يوميًا
0 5 * * * /scripts/job.sh2. حدد موعدًا لتنفيذه كرون مرتين يوميًا في الساعة 6 صباحًا و 6 مساءً
0 6,18 * * * /scripts/job.sh3. جدولة cron لتنفيذه في كل دقيقة
* * * * * /scripts/job.sh4. جدولة cron لتنفيذه كل يوم اثنين الساعة 7 مساءً.
0 19 * * mon /scripts/job.sh5. جدولة cron لتنفيذه كل 15 دقيقة.
*/10 * * * * /scripts/job.sh6. جدولة cron لتنفيذه في الأشهر المحددة
* * * feb,jun,oct * /script/job.sh 7. قم بتشغيل البرنامج النصي shell /home/script/backup.sh في 4 مارس الساعة 7:25 صباحًا
25 7 4 3 * /home/script/backup.sh8. جدولة cron لتنفيذه كل 30 ثانية
نظرًا لأننا لا نتحكم في الثواني في Crontab ، ولكن يمكننا تحقيق ذلك من خلال العملية المكونة من خطوتين أدناه.
- لنقم أولاً بجدولة مهمة يتم تشغيلها كل دقيقة.
* * * * * /home/scripts/script.sh- الآن دعنا نستخدم أمر
sleepلإيقاف التنفيذ مؤقتًا لمدة 30 ثانية.
* * * * * sleep 30; /home/scripts/script.shستوقف المهمة أعلاه التنفيذ لمدة 30 ثانية ، وستستأنف مرة أخرى.
نوع ملفات تكوين Cron
يوجد نوعان من ملفات تكوين Cron:
نظام UNIX / Linux System Crontab
يتطلب هذا امتياز الجذر لأنه عادةً ما يتم استخدامه لخدمات النظام والوظائف الهامة. الحقل السادس (في وصف بناء الجملة أعلاه) هو اسم مستخدم لتشغيل الأمر كـ. إنه يعطي القدرة على نظام crontab لتشغيل الأوامر مثل أي مستخدم.
مستخدم Crontab
يمكن للمستخدم أيضًا تثبيت وظائف cron الخاصة به باستخدام الأمر crontab. هنا أيضًا ، الحقل السادس (في وصف بناء الجملة أعلاه) هو الأمر الذي يجب تشغيله ، ويتم تشغيل جميع الأوامر كمستخدم أنشأ crontab. يمكن لكل مستخدم الحصول على ملف crontab الخاص به ، وعلى الرغم من أن هذه الملفات موجودة في /var/spool/cron/ crontabs ، إلا أنه لا يُقصد تحريرها مباشرة. نحتاج إلى استخدام الأمر crontab لتحرير أو إعداد وظائف cron الخاصة بنا.
كيف يعمل؟
تعمل خدمة cron (daemon) في الخلفية وتتحقق باستمرار (كل دقيقة) من ملف /etc/crontab و /etc/cron.*/ الدلائل. يتحقق أيضًا من الدليل /var/spool/cron/ . يتم تنفيذ الأوامر بواسطة cron عندما تتطابق حقول الدقيقة والساعة والشهر مع الوقت الحالي ، ويتطابق حقل واحد على الأقل من الحقول المكونة من يومين (يوم من الشهر أو يوم من أيام الأسبوع) مع اليوم الحالي.
أوامر أساسية
إدراج وظائف كرون الحالية
يمكننا سرد جميع وظائف Cron دون فتح ملف تكوين crontab باستخدام الأمر أدناه
crontab -lإذا لم تكن هناك وظيفة موجودة ، فستعيد الإخراج كـ
[geekflare@localhost ~]# crontab -l no crontab for geekflare [geekflare@localhost ~]#إذا كان المستخدم قد أضاف بالفعل بعض الوظائف ، فسيتم عرضه على النحو التالي.
[geekflare@localhost ~]# crontab -l # 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 am 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) # # mh dom mon dow command 0 */1 * * * /home/account/scripts/updateAccountStatuses.sh 0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh [geekflare@localhost ~]#جدول Cron خاص بالمستخدم ، مما يعني أنه يجب عليك تسجيل الدخول مع مستخدم معين لرؤية قائمة جدول cron.
قائمة كرون لمستخدم معين
لسرد المهام المجدولة لمستخدم آخر ، استخدم الخيار -u ( مستخدم ) و -l ( قائمة ).
crontab -u another_username -l
مثال : crontab -u geekflare -l
إضافة / تعديل إدخالات Crontab
لتعديل إدخال crontab ، يمكننا استخدام الخيار -e كما هو موضح أدناه.
crontab -e

سيفتح الأمر أعلاه محررات vi حيث تحدد تفاصيل الوظيفة وتحفظ الملف. بمجرد الحفظ ، يمكنك التحقق مما إذا تم تكوين cron أم لا باستخدام crontab -l .
إضافة / تعديل إدخالات Crontab لمستخدم معين
يمكننا تحرير crontab لمستخدم آخر باستخدام الأمر أدناه
crontab -u another_username -e مثال : crontab -u geekflare -e
إزالة Crontab Entry
استخدم المعلمة <strong>-r</strong> مع Crontab لإزالة المهام المجدولة الكاملة بدون تأكيد من crontab
crontab -r
إذا كنت تريد التأكيد قبل حذف المهام المجدولة ، فاستخدم الخيار <strong>-i</strong> مع -r ، والذي سيطلب التأكيد من المستخدم قبل حذف crontab الخاص بالمستخدم.
crontab -i -r [geekflare@localhost ~]# crontab -i -r crontab: really delete geekflare's crontab?سلسلة كرونتاب الخاصة
بخلاف الصيغة أعلاه التي ناقشناها ، يمكننا أيضًا استخدام ثمانية سلاسل خاصة مقدمة من Crontab. لن يوفر وقتنا فحسب ، بل سيؤدي أيضًا إلى تحسين قابلية القراءة.
| سلسلة خاصة | وصف |
@reboot | تشغيل مرة واحدة ، بعد بدء التشغيل. |
@yearly | تشغيل مرة واحدة في العام ، أي 0 0 1 1 * |
@annually | مثل @yearly |
@monthly | تشغيل مرة واحدة في الشهر ، أي 0 0 1 * * |
@weekly | تشغيل مرة واحدة في الأسبوع ، أي 0 0 * * 0 |
@daily | تشغيل مرة واحدة في اليوم ، أي 0 0 * * * |
@midnight | مثل @daily |
@hourly | تشغيل مرة واحدة في الساعة ، أي 0 * * * * |
أمثلة على سلسلة Crontab الخاصة
1. Crontab لجدولة المهام على أساس سنوي
@yearly /scripts/greeting.sh
يمكننا تنفيذ فوق واحد لإرسال تهنئة بالعام الجديد ، وسيتم تنفيذه في الدقيقة الأولى من كل عام.
2. Crontab لجدولة المهام ليتم تنفيذها على أساس شهري.
@monthly /scripts/cleanup.sh
يمكننا تنفيذ ما سبق لإجراء بعض أنشطة التنظيف في بداية كل شهر.
وبالمثل ، يمكننا استخدام سلسلة Crontab الخاصة الأخرى للأغراض الأسبوعية واليومية والساعة.
دليل كرون
يمكن لمسؤول النظام استخدام جدول cron على مستوى النظام والذي يأتي ضمن دليل cron المحدد مسبقًا كما هو موضح أدناه
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
أمثلة على Crontab Realtime
دعنا نناقش بعض الأمثلة في الوقت الفعلي ، التي يستخدمها مسؤول النظام أو متخصصو تكنولوجيا المعلومات عادةً.
احذف الملفات والدليل الفارغ
45 0 * * * geekflare find /tmp -type f -empty -delete
أعلاه سيجد تعبير cron الملفات الفارغة والدليل من الدليل / tmp وسيحذفها . ستعمل هذه الوظيفة في الساعة 12.45 صباحًا على أساس يومي. نحتاج إلى ذكر اسم المستخدم لأداء هذه الوظيفة. في المثال أعلاه ، يقوم مستخدم geekflare بتنفيذ عملية مهمة cron.
تنفيذ مهام متعددة باستخدام كرون واحد
* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh
يمكن فصل المهام / المهام المتعددة باستخدام فاصلة منقوطة ( ؛ ) ويمكن تخصيصها لتعبير cron واحد.
أدوات تنسيق واختبار كرون
ناقشنا حتى الآن أوامر وصيغة crontab لجدولة مهمة. ولكن ماذا لو لم تكن مسؤول النظام ولم تكن مهمتك هي إعداد Cron بانتظام ، فقد لا يكون من الممكن تذكر بناء الجملة ويفتح المجال للخطأ. لا تقلق ، لدينا حل لهذه المشكلة.
هناك العديد من أدوات تنسيق Cron المتاحة عبر الإنترنت.
# 1. مولد وظيفة كرون
Cron Job Generator عبارة عن واجهة مستخدم رسومية سهلة الاستخدام للغاية حيث يمكنك تحديد دقيقة وأيام ومسار البرنامج النصي لإنشاء crontab.
لنأخذ مثالًا في الوقت الفعلي حيث يتعين علي تنفيذ /home/processMonitor.sh كل 5 دقائق بين الاثنين إلى الجمعة.

لذلك ، حصلت على صيغة Cron أدناه والتي يمكنني وضعها في crontab عن طريق التنفيذ
crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh
# 2. إيزيكرون
Easycron هو جدولة وظائف cron مفيدة على شبكة الإنترنت. يمكننا إنشاء وظيفة cron من خلال تحديد عنوان URL للاتصال به ، ويمكننا ضبط الوقت الذي يجب تنفيذه فيه. يمكننا أيضًا تحديد تعبير cron أو إضافته يدويًا من نموذج وصفي. الأهم من ذلك ، يمكننا اختياريًا استخدام مصادقة HTTP الأساسية لطبقة صغيرة من الأمان.

ليس هذا فقط ، ولكن يمكن أيضًا استخدام Easycron لتحقيق أغراض أخرى مثل تعبير Standard Cron ، وسجلات تنفيذ مهمة Cron ، وإخطار البريد الإلكتروني ، وسجلات الفشل المنفصلة ، وما إلى ذلك.
# 3.مولد كرونتاب
Crontab Generator هي أداة أخرى مفيدة لإنشاء crontab وباستخدام هذه الأداة ، يمكنك أيضًا إضافة ما إذا كنت تريد حفظ إخراج cron في الملف أو إرساله إلى البريد الإلكتروني.

# 4. كرونتاب جورو
Crontab Guru هو محرر تعبير بسيط للجدول الزمني عبر الإنترنت. بالإضافة إلى ذلك ، فإنه يوفر وسيلة مفيدة لمراقبة cronjob الخاص بك. كل ما نحتاجه هو نسخ أمر مقدم وإلحاقه في نهاية تعريف crontab. في حالة فشل وظيفة cron أو حتى لم تبدأ ، ستتلقى رسالة تنبيه بالبريد الإلكتروني.
في المثال أدناه ، سيتم تنفيذ Job الساعة 04:05 كل يوم وكل شهر وكل أسبوع.

# 5. اختبار كرون
يسمح لنا اختبار CRON باختبار تعريفات الوقت / التاريخ كرون. قد يكون هناك موقف يتعين علينا فيه فك تشفير بنية cron الحالية لاستكشاف الأخطاء وإصلاحها أو نريد فقط إجراء اختبار.
للقيام بذلك ، يمكننا استخدام هذه الأداة. كل ما نحتاج إلى القيام به هو نسخ ولصق تعبير cron الخاص بنا في حقل تعريف cron ، ثم اختيار عدد التكرارات والنقر فوق اختبار لمعرفة التواريخ المختلفة التي سيتم تشغيلها فيها.
دعنا نتحقق من أحد تعبيرات cron 4 3 */2 * * التي يجب أن تعمل الساعة 03:04 (صباحًا) كل يومين. دعنا نتحقق من ذلك باستخدام جهاز اختبار كرون.

استنتاج
آمل أن يساعدك ما سبق في الحصول على فهم أفضل لـ Crontab وإعداد وظائف cron. جدولة الوظائف من خلال Cron هي إحدى المهام العديدة التي يقوم بها مسؤول Linux. إذا كنت مهتمًا بتعلم المهارات المتقدمة ، فاطلع على هذه الدورة.
