
در یک سرور نیاز داریم، برخی عملیات ها در زمان های مشخصی و یا به صورت دوره ای انجام شوند. مثلا هر روز راس ساعت خاصی از دیتابیس بکاپ گرفته شود و یا عملیات مختلف دیگری انجام شوند. مثلا اگر سایت دروپالی شما در یک سرور لینوکس قرار دارد، برای اجرای کرن دروپال می توانید از زمانبندی دستورات کرون در لینوکس استفاده کنید.
در لینوکس این گونه عملیات ها با استفاده از کرون (cron) زمانبندی می شوند.
تنظیم کرون در لینوکس
برای شروع می توانیم یک فایل حاوی دستورات کرون ایجاد کنیم مثلا اسم آن را crontab.root قرار می دهیم. برای نمونه محتوای زیر را در آن می نویسیم:
0 * * * * mysqldump -uroot -p123 --all-databases > all-databases.sql
در خط بالا مشخص کرده ایم که دستور گرفتن بکاپ از mysql که با کامند mysqldump انجام می شود، راس هر ساعتی اجرا شود و از همه دیتابیس های موجود بکاپ بگیرد.
حالا باید این فایل را به سرویس کرون لینوکس (crond) معرفی کنیم. با استفاده از دستور crontab در شل این کار را انجام می دهیم. نمونه ای از این کار را در زیر می بینید:
crontab -u root crontab.root
در اینجا برای کاربر root دستورات فایل crontab.root را ثبت کرده ایم.
اکنون برای اطمینان می توانیم از دستور زیر استفاده کرده و و لیست همه دستورات کرون که باید اجرا شوند را ببینیم:
crontab -l
حالادیگر کرون اجرا می شود می توان برای اطمینان سرویس کرون را ریستارت کرد که این کار با دستور زیر انجام می شود:
service crond restart
لاگ اجرای کرون در لینوکس
لاگ اجرای کرون در فایل /var/log/cron قرار دارد. که می توان از صحت اجرای دستورات کرون اطمینان حاصل کرد.
اطلاعات بیشتر از دستورات کرون
هر دستور کرون حاوی زمان اجرا و دستوری که باید اجرا بشود، است. از ابتدای دستور این موارد را داریم که با فاصله از یکدیگر جدا می شوند:
- دقیقه که عددی از 0 تا 59 است،
- ساعت عددی از 0 تا 23 است،
- روز که عددی از 1 تا 31 است،
- ماه که عددی از 1 تا 12 است،
- روز هفته که عددی از 0 تا 6 است و بیانگر یکشنبه تا شنبه است.
- دستور شل که باید اجرا شود.
اگر پارامتر های زمانی نامحدود بخواهیم می توانیم از ستاره به جای عدد استفاده کنیم. مثلا در دستوری که در این مطلب داشتیم. دقیقه را صفر منظور کرده بودیم و سایر پارامتر ها را ستاره گذاشتیم. به این صورت هر زمان که دقیقه اش صفر باشد، دستور مورد نظر اجرا می شد که این معادل اجرای دستور راس هر ساعت است.