در این مقاله ما خواهیم دید که چگونه می توان کارها را با استفاده از دستور cron زمانبندی کرده که به صورت اتوماتیک در background در فواصل منظم اجرا شوند. انجام دادن کارهای مکرر دستی برای یک administrator کاری خسته کننده است. چنین پروسسی میتواند زمانبندی شده و در پس زمینه به صورت اتوماتیک و بدون دخالت انسان با استفاده از دیمون cron در سیستم عامل های لینوکس و یونیکس اجراشود.
به عنوان مثال شما می توانید فرایند ی همچون پشتیبان گیری، زمانبندی بروزرسانی ها، و هماهنگ سازی فایل ها و بسیاری از کارهای دیگر را اتوماتیک سازید. Cron یک دیمون برای اجرای کارهای زمانبندی شده است. Cron در هر دقیقه بیدار می شود و کارهای زمانبندی شده در crontable را چک می کند. crontab جدولی است که ما میتوانیم کارهای تکراری را در آن زمانبندی کنیم.
همچنین توصیه میشود مطالعه کنید:
نحوه ایجاد و مدیریت cron job ها در لینوکس
اجرای اتوماتیک دستورات / اسکریپت ها در لینوکس موقع Reboot یا StartUP
6 ابزار آنلاین برای ایجاد و تست cron job در لینوکس (به زودی)
نکته : هر کاربری می تواند crontab خود را داشته باشد و آن را ایجاد و یا حذف و اضافه کند. به طوز پیش فرض cron برای تمامی کاربران فعال است، ولی ما میتوانیم آنها را در فایل /etc/cron.deny محدود کنیم.
فایل crontab شامل دستوری است که هر خط دارای 6 فیلد است که با space یا tab جدا شده است. 5 فیلد اول زمان را نشان می دهد و فیلد آخر برای دستور می باشد.
1. لیست محتویات های crontab
با استفاده از آپشن –l در کامند crontab کارهای crontab کاربر جاری را لیست کنید.
2. ویرایش محتویات crontab
جهت ویرایش crontab از آپشن –e همانند زیر استفاده کنید. در مثال زیر کارهای زمانبندی شده توسط ویرایشگر VI باز خواهد شد. تغییرات لازم را ایجاد کنید و با استفاده از آپشن :wq ذخیره کرده و خارج شوید.
3. لیست کارهای زمانبندی شده cron
برای لیست کردن کاهای زمانبندی شده ی کاربر خاص linux-zone از آپشن –u(user) و –l(list) استفاده کنید.
نکته : تنها کاربر root اجازه دیدن محتویات کارهای crontab کاربران دیگر را دارد و کاربر معمولی این اجازه را ندارد.
4. حذف محتویات crontab
توجه : crontab با آپشن –r تمامی محتویات کارهای زمانبندی شده را بدون تایید شما حذف خواهد کرد، قبل از حذف از آپشن –i استفاده کنید.
5.prompt قبل از حذف crontab
آپشن -i قبل از حذف crontab کاربر، سوالی جهت تایید از شما خواهد پرسید.
6. کاراکترهای خاص مجاز (*,-,/,?,#)
ستاره (*) : تمامی مقدارها و یا هر مقدار ممکن
خط تیره یا دش(-) : جهت تعریف رنج
اسلش(/) : /10 در اولین فیلد هر 10 دقیقه یا افزایش رنج را نشان می دهد.
کاما(,) : برای جداسازی آیتم ها
7. زمانبندی نامحدود cron در سیستم
ادمین سیستم میتواند از دایرکتوری های از پیش تعریف شده سیستم استفاده کند.
8. زمانبندی یک کار برای زمان خاص
کارهای زیر فایل ها و دایرکتوری های خالی را از /tmp در ساعت 12:30 به صورت روزانه حذف می کند. شما برای اجرای دستور crontab نیاز دارید که با نام کاربر نیز اشاره کنید. در مثال زیر کاربر root کار را اجرا می کند.
9. string های بخصوص برای زمانبندهای رایج
می توانید در صورت نیاز این string ها را با 5فیلد اول جایگزین کنید.
10. دستورات چندگانه با استفاده از &&
در مثال زیر command1 و command2 روزانه اجرا خواهند شد.
11. غیر فعال کردن اطلاع رسانی از طریق ایمیل
به صورت پیش فرض cron هنگام اجرای کار ایمیلی به کاربر ارسال می کند. اگر میخواهید آن را غیرفعال کنید cron job زیر را اضافه کنید. با استفاده از آپشن >/dev/null 2>&1 در انتهای فایل تمامی خروجی و نتیجه ی cron را به /dev/null هدایت میکند.
توجه : اتوماتیک سازی کارها ممکن است برای اجرای بهتر کارها و بدون خطا به ما کمک کند. جهت اطلاعات بیشتر دستور man crontab را برای استفاده از دستورالعمل آن در ترمینال خود تایپ کنید.
به عنوان مثال شما می توانید فرایند ی همچون پشتیبان گیری، زمانبندی بروزرسانی ها، و هماهنگ سازی فایل ها و بسیاری از کارهای دیگر را اتوماتیک سازید. Cron یک دیمون برای اجرای کارهای زمانبندی شده است. Cron در هر دقیقه بیدار می شود و کارهای زمانبندی شده در crontable را چک می کند. crontab جدولی است که ما میتوانیم کارهای تکراری را در آن زمانبندی کنیم.
همچنین توصیه میشود مطالعه کنید:
نحوه ایجاد و مدیریت cron job ها در لینوکس
اجرای اتوماتیک دستورات / اسکریپت ها در لینوکس موقع Reboot یا StartUP
6 ابزار آنلاین برای ایجاد و تست cron job در لینوکس (به زودی)
نکته : هر کاربری می تواند crontab خود را داشته باشد و آن را ایجاد و یا حذف و اضافه کند. به طوز پیش فرض cron برای تمامی کاربران فعال است، ولی ما میتوانیم آنها را در فایل /etc/cron.deny محدود کنیم.
فایل crontab شامل دستوری است که هر خط دارای 6 فیلد است که با space یا tab جدا شده است. 5 فیلد اول زمان را نشان می دهد و فیلد آخر برای دستور می باشد.
- Minute یا دقیقه (مقداری بین 0 - 59)
- Hour یا ساعت (مقداری بین 0 - 23)
- Day of Month یا روز هر ماه (مقداری بین 1 - 31)
- Month of the year یا ماه هر سال (مقداری بین 1 - 12 یا Jan - Dec)
- Day of week یا روز هر هفته (مقداری بین 0 - 6 یا Sun - Sat)
- Command یا دستور
1. لیست محتویات های crontab
با استفاده از آپشن –l در کامند crontab کارهای crontab کاربر جاری را لیست کنید.
کد PHP:
# crontab -l
00 10 * * * /bin/ls >/ls.txt
2. ویرایش محتویات crontab
جهت ویرایش crontab از آپشن –e همانند زیر استفاده کنید. در مثال زیر کارهای زمانبندی شده توسط ویرایشگر VI باز خواهد شد. تغییرات لازم را ایجاد کنید و با استفاده از آپشن :wq ذخیره کرده و خارج شوید.
کد PHP:
# crontab -e
3. لیست کارهای زمانبندی شده cron
برای لیست کردن کاهای زمانبندی شده ی کاربر خاص linux-zone از آپشن –u(user) و –l(list) استفاده کنید.
کد PHP:
# crontab -u linux-zone -l
no crontab for linux-zone
4. حذف محتویات crontab
توجه : crontab با آپشن –r تمامی محتویات کارهای زمانبندی شده را بدون تایید شما حذف خواهد کرد، قبل از حذف از آپشن –i استفاده کنید.
کد PHP:
# crontab -r
5.prompt قبل از حذف crontab
آپشن -i قبل از حذف crontab کاربر، سوالی جهت تایید از شما خواهد پرسید.
کد PHP:
# crontab -i -r
crontab: really delete root's crontab?
6. کاراکترهای خاص مجاز (*,-,/,?,#)
ستاره (*) : تمامی مقدارها و یا هر مقدار ممکن
خط تیره یا دش(-) : جهت تعریف رنج
اسلش(/) : /10 در اولین فیلد هر 10 دقیقه یا افزایش رنج را نشان می دهد.
کاما(,) : برای جداسازی آیتم ها
7. زمانبندی نامحدود cron در سیستم
ادمین سیستم میتواند از دایرکتوری های از پیش تعریف شده سیستم استفاده کند.
کد PHP:
/etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
8. زمانبندی یک کار برای زمان خاص
کارهای زیر فایل ها و دایرکتوری های خالی را از /tmp در ساعت 12:30 به صورت روزانه حذف می کند. شما برای اجرای دستور crontab نیاز دارید که با نام کاربر نیز اشاره کنید. در مثال زیر کاربر root کار را اجرا می کند.
کد PHP:
# crontab -e
30 0 * * * root find /tmp -type f -empty -delete
9. string های بخصوص برای زمانبندهای رایج
Strings | Meanings |
@reboot | دستوری که هنگام ریبوت سیستم اجرا می شود. |
@daily | یکبار در روز و یا از @midnight نیز میتوان استفاده کرد . |
@weekly | یکبار در هفته . |
@yearly | یکبار در سال. ما میتوانیم از@annuallyنیز استفاده کنیم . |
10. دستورات چندگانه با استفاده از &&
در مثال زیر command1 و command2 روزانه اجرا خواهند شد.
کد PHP:
# crontab -e
@daily <command1> && <command2>
11. غیر فعال کردن اطلاع رسانی از طریق ایمیل
به صورت پیش فرض cron هنگام اجرای کار ایمیلی به کاربر ارسال می کند. اگر میخواهید آن را غیرفعال کنید cron job زیر را اضافه کنید. با استفاده از آپشن >/dev/null 2>&1 در انتهای فایل تمامی خروجی و نتیجه ی cron را به /dev/null هدایت میکند.
کد PHP:
[root@linux-zone~]# crontab -e
* * * * * >/dev/null 2>&1
کامنت