أريد أن جدولة مهمة لتشغيل على أساس منتظم وسمعت أن كرون هو الطريق للقيام بذلك.
كيف يمكنني إضافة وظائف كرون في أوبونتو?
أريد أن جدولة مهمة لتشغيل على أساس منتظم وسمعت أن كرون هو الطريق للقيام بذلك.
كيف يمكنني إضافة وظائف كرون في أوبونتو?
وضع برنامج نصي شل في أحد هذه المجلدات: /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