مثال هایی از crontab

crontab برنامه ای برای زمانبدی کارها در لینوکس بصورت خودکار در یک زمان معین که بصورت Background انجام می شوند. وظیفه مدیریت و اجرای کار ها برای اجرای خودکار توسط فرایند crond انجام می گیرد. می توانید از crontab برای گرفتن فایل های پشتیبان، بروز کردن سیستم (Update) و … استفاده شود. عملکرد crond به اینصورت است که هر دقیقه یکبار فایل های Cron Table را چک می کند و اگر کاری برای انجام دادن وجود داشته باشد، انجام می دهد. (برنامه crontab مخفف Cron Table است.) برای هر کاربر یک فایل crontab وجود دارد که البته می توان با استفاده از فایل etc/cron.deny/ جلوگیری کرد تا کاربری نتواند کارهایی را توسط فایل خودش زمانبتدی کند.

برای انکه بدانید که آیا کاری را برای اجرا زمانبندی کردید یا نه دستور crontab را به همراه سوئیچ l- بصورت زیر استفاده کنید.

crontab  -l

اگر کاری را زمانبندی نکرده اید باید خروجی زیر نشان داده شود. البته اجرای دستور بالا در محیط کاربر root انجام شده است.

no crontab for root

و اگر مدیر سیستم هستید و می خواهید وضیعیت زمانبندی کاربران را تعیین کنید باید از سوئیچ u- مخفف user بصورت کلی زیر استفاده کنید.

crontab  -l  -u  username

crontab  -l  -u  pc2

و خروجی خط دوم مثال بالا :

no crontab for pc2

برای ویرایش فایل باید از سوئیچ e- استفاده کنید. دستور زیر باعث باز شدن فایل Cron Table شما می شود.

crontab  -e

ولی اگر مدیر هستید و می خواهید فایل کاربر دیگری را وارد کنید باید بصورت کلی زیر انجام دهید.

crontab  -e  -u  username

crontab  -e  -u  pc2

برای چگونگی فرمت فایل crontab این پست را بخوانید.

برای پاک کردن تمامی زمانبندی های انجام شده باید از سوئیچ r- استفاده کنید. با استفاده r- بدون هیچ اخطاری تمامی محتوای فایل crontab پاک خواهد شد. ولی برای دادن یک اعلان قبل پاک شدن هر زمانبندی درون فایل از سوئیچ i- استفاده کنید.

crontab  -r

crontab  -i  -r

crontab  -r  -u username

crontab  -i  -r  -u username

البته چندین فایل وجود دارد که متعلق به یک کاربر خاص نیست و برای تمامی سیستم است ولی مالک این فایل ها کاربر root است. همانطور که گفته شد همه ی کاربران دارای یک فایل crontab مخصوص خود هستند ولی چندین فایل زیر وجود دارند که متعلق به کل سیستم هستند.

  • etc/cron.d/ : دایرکتوری شامل چندین فایل
  • etc/cron.daily/ : زمانبندی برای انجام روزانه
  • etc/cron.hourly/ : زمانبندی بصورت ساعتی
  • etc/cron.monthly : زمانبندی ماهانه
  • etc/cron.weekly : زمانبندی هفتگی

پاک کردن فایل های خالی  دایرکتوری tmp/ در یک ساعت خاص : کد شکل زیر در ساعت 12:30 هر روز فایل های خالی دایرکتوری tmp/ را پاک می کند. دستور find برای اجرا شدن توسط crond از مجوز های کاربر root استفاده می کند. باید ابتدا دستور crontab  -e را اجرا کنید تا فایل crontab شما برای ویرایش باز شود.

دستور زیر در 10 ژوئن ساعت 8:30 صبح یک backup توسط اسکریپتی گرفته می شود. توجه کنید برای ساعت 8:30 شب باید از 20:30 استفاده کنید.

برای گرفتن backup در ساعت 11 ظهر و 4 بعد از ظهر(16)  هر روز از دستور زیر استفاده کنید.

* : یعنی هر روز

* : هر ماه

* : هر هفته

برای اجرای وظایف در یک محدوده زمانی خاص مثلن بین ساعت 9 صبح تا 6 عصر (16) از دستور زیر استفاده کنید.

برای انجام در روز های خاص از هفته مثل روز دوم هفته (یک شنبه روز اول هفته میلادی و عدد 0 است و دوشنبه روز دوم و عددش 1 است ) تا روز ششم یعنی جمعه هر هفته بین ساعت های 9 صبح تا 6 عصر انجام شود.

رشته های خاص :

reboot@ : دستور در زمان reboot شدن اجرا شود.

daily@ : دستور یکبار در اولین دقیقه هر روز (ساعت 00:00 هر روز) انجام شود.

midnight@ : دستور یک بار در اولین دقیقه (00:00) هر شب انجام شود.

weekly@ : دستور یکباردر اولین دقیقه (ساعت 00:00) اولین روز هفته  بصورت هفتگی انجام شود.

annuall@ یا yearly@ : دستور  در اولین دقیقه هر سال انجام شود.

monthly@ : در اولین دقیقه هر ماه انجام می شود.

برای اجرای دستور در دقیقه اول هر سال باید دستور زیر را استفاده کنید. یعنی در ساعت 00:00 اول ژانویه هر سال

به دلیل اینکه زمان های اجرا بر حسب اولین دقیقه هر روز یا ماه و … هستند یا اینکه در مثال های بالاتر بصورت ساعت 12:30 دقیقه تنظیم می شوند این است که crond هر دقیقه فایل های cronatb تمامی کاربران را چک می کند و امکان زمانبندی بر حسب ثانیه وجود ندارد.