كيف يمكنني إعداد وظيفة كرون?

أريد أن جدولة مهمة لتشغيل على أساس منتظم وسمعت أن كرون هو الطريق للقيام بذلك.

كيف يمكنني إضافة وظائف كرون في أوبونتو?

وضع برنامج نصي شل في أحد هذه المجلدات: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly أو /etc/cron.weekly.

إذا كانت هذه ليست كافية بالنسبة لك ، يمكنك إضافة مهام أكثر تحديدا على سبيل المثال مرتين في الشهر أو كل 5 دقائق. انتقل إلى المحطة واكتب:

crontab -e

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

minute hour day-of-month month day-of-week command

لجميع الأرقام يمكنك استخدام القوائم ، على سبيل المثال. 5,34,55 في الحقل دقائق يعني تشغيل في 5 الماضي ، 34 الماضي ، و 55 الماضي مهما تم تعريف ساعة.

يمكنك أيضا استخدام الفواصل الزمنية. يتم تعريفها على النحو التالي: */20. هذا المثال يعني كل 20 ، لذلك في عمود الدقائق يعادل 0,20,40.

لذلك لتشغيل أمر كل يوم اثنين في الساعة 5: 30 بعد الظهر:

30 17 * * 1 /path/to/command

أو كل 15 دقيقة

*/15 * * * * /path/to/command

لاحظ أن يوم الأسبوع يذهب من 0-6 حيث 0 هو الأحد.

يمكنك قراءة المزيد هنا.

إذا كان يمكن تشغيل المهمة التي تريد تشغيلها مع نفس الامتيازات المستخدم الخاص بك أوصي باستخدام كرونتاب المستخدم الذي يمكنك تحرير عن طريق تشغيل EDITOR="gedit" crontab -e (والتي سوف تستخدم جيديت لتحرير ملف كرونتاب) أو ببساطة crontab -e (والتي سوف تستخدم المحرر الافتراضي) في محطة.

إذا كنت تريد تشغيل شيء ما كل 10 دقائق، على سبيل المثال ، يمكنك إضافة سطر مثل هذا

*/10 * * * * /usr/bin/somedirectory/somecommand

وحفظ الملف.

يمكنك ان ترى محتويات كرونتاب المستخدم مع crontab -l.

لإضافة وظيفة كرون التي تعمل كجذر ، يمكنك تحرير كرونتاب الجذر عن طريق تشغيل sudo crontab -e.

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

على سبيل المثال ، إذا كنت تريد تشغيل شيء ما كل 10 دقائق كجذر، فستضيف سطرا مثل هذا

*/10 * * * * root /usr/bin/somedirectory/somecommand

(لاحظ إضافة المستخدم إلى الخط)

يمكنك رؤية محتويات ملف كرونتاب النظام مع cat /etc/crontab.

مزيد من التفاصيل في: https://help.ubuntu.com/community/CronHowto

إذا كنت تفضل القيام بذلك باستخدام واجهة المستخدم الرسومية ، يمكنك الذهاب إلى مركز البرامج وتثبيتها المهام المجدولة (أو تشغيل sudo apt-get install gnome-schedule). وسوف توفر واجهة المستخدم الرسومية قوية لإضافة المهام كرون.

لاحظ أنه إذا كنت تستخدم هذه الطريقة ، فسيتم تنفيذ المهام بشكل افتراضي كمستخدم خاص بك ، وليس كجذر. هذا عادة شيء جيد.

أوصي برنامج جدولة المهام في كيدي (kde-config-cron) . الوصول إليه من إعدادات النظام في ال جدولة المهام وحدة هناك.

وتدير كل من كرونتابس الشخصية والنظام ، وسهولة إنشاء حدود الوقت فاجأني كثيرا (انظر الصورة أدناه). وأعتقد أن هذا الجزء هو الاستخفاف حقا.

سوف كدي جدولة المهام لا تعمل في أوبونتو العادية. يعمل فقط في أنظمة كدي مثل كوبونتو. بالنسبة لنظام غير كدي ، تفضل استخدام جدول جنوم

$ sudo apt-get install gnome-schedule

ومن المقرر التطبيق المهام في اندفاعة.

كنت أرغب في تعيين وظيفة كرون لتشغيل من خلال برنامج نصي باش ، لذلك تنفيذ البرنامج النصي من شأنه أن يضيف وظيفة كرون.

أدركت أنه عند الاستفادة من:

crontab -e 

ثم يقوم بإنشاء الملف:

/var/spool/cron/crontabs/root

حيث الجذر هو اسم المستخدم تشغيل تشغيل الأمر كرونتاب. لذلك على أساس هذا وفي 14.04 على الأقل ، يمكننا تنفيذ الأوامر باش التالية لإنشاء وظيفة كرون جديدة:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

نحتاج أيضا إلى تعيين الملكية الصحيحة للملف:

chown root:root /var/spool/cron/crontabs/root

وتعيين الأذونات الصحيحة:

chmod 600 /var/spool/cron/crontabs/root

إذا عند تشغيل crontab -e هناك بالفعل وظائف كرون في القائمة ، ثم كنت قادرا إلحاق القائمة باستخدام الأمر التالي:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

مثال على تشغيل البرنامج النصي test_cron.sh بواسطة كرون كل دقيقة على أوبونتو 18.04 باستخدام رابط رمزي:

test_cron.sh الملف:

#!/bin/bashecho "System backuped" >> /media/myname/data/backup/backup_tmp.log

إذا كنت ترغب في استخدام متغيرات البيئة في البرنامج النصي الخاص بك مثل $USER في مسارات فمن الأفضل لكتابة مسار دقيق ، سوف باش لا يعرف المتغيرات الخاصة بك في وقت التنفيذ.

myname هو اسم المستخدم (جزء من مجموعة الجذر ، لست متأكدا من أن امتيازات الجذر ضرورية).

السماح للمستخدمين بتعيين وظائف كرون ، سيتم إنشاء الملف إذا لزم الأمر:

sudo nano /etc/cron.allowrootmyname

الطريق إلى البرنامج النصي هو /home/myname/shell/test_cron.sh

لقد غيرت المالك وجعلته قابلا للتنفيذ:

sudo chown myname /home/myname/shell/test_cron.shchmod +x /home/myname/shell/test_cron.sh

أضفت رابط رمزي:

sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron

تم تسجيل الدخول باسم myname أضفت مهمة جديدة لتنفيذها test_cron كل دقيقة.

crontab -e*/1 * * * * test_cron

للتحقق مما إذا كان الأمر في القائمة:

crontab -l*/1 * * * * test_cron

للتحقق من التنفيذ

grep -i cron /var/log/syslogNov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)

معتبرا لديك وظائف كرون متعددة مع مستخدم معين ولا يشاركون نفس الجدول الزمني. يمكنك فقط إنشاء ملف بسيط تحت /etc/cron.d/دعنا نقول اسم الملف هو myjobs ثم مجرد كتابة كل ما تبذلونه من جدولة في هذا الملف ثم قم بتشغيل الأمر التالي.

crontab -u <username> /etc/cron.d/myjobs