هاست لینوکس پرسرعت سی پنل

کار با اجرای خودکار دستورات Cron در لینوکس

در لینوکس مفهومی با عنوان Cron وجود دارد که به عبارتی ساده برای اجرای خودکار دستورات لینوکس در فاصلۀ زمانی خاصی مورد استفاده قرار می گیرد. به نوعی برای انجام عملیات خودکارسازی فعالیت ها در لینوکس باید قادر باشیم از این قابلیت استفاده کنیم. حالا اگر این رایانه یک سرور باشد و ما هم مدیر آن سرور باشیم، مفهوم Cron بیشتر خودنمایی می کند. در این قسمت که قسمت ۷۶ از مجموعۀ آموزشی مدیریت سرور لینوکس است، می پردازیم به آموزش اجرای خودکار دستورات لینوکس با استفاده از Cron ها.

کار با اجرای خودکار دستورات Cron در لینوکس

کار با اجرای خودکار دستورات Cron در لینوکس

بحث Cron Jobs ها خیلی بحث مفصلی است. اما برای اینکه بتوانید به صورت عملی با این امکان لینوکس آشنا شوید، بهتر است با یک مثال کاربردی پیش رویم. در این مثال بنده می خواهم کاری کنم که هر نیم ساعت یک خط متن درون یک سندِ متنی نوشته شود. نباید فراموش کرد که هر دستوری که شما می توانید در لینوکس برای انجام کاری بزنید، با استفاده از Cron هم قادرید آن را به صورت خودکار و زمان بندی شده اجرا کنید. قابلیت Cron آن قدر قدرتمند است که از آن به عنوان ابزاری برای خودکار سازی کارها در لینوکس یاد می شود.

دستور مورد نظر برای کار کردن با کران ها، دستور crontab است. پس دستور زیر را می توانید برای ویرایش دستورات خوداجراشوی خود وارد کنید:

crontab -e

مشخصۀ e سندِ کرانِ مربوط به حساب کاربریِ شما را درون ویرایشگر پیش فرض سیستم که معمولاً vi هست باز می کند. حالا می توانید از ساختار Cron برای اجرای یک دستور به صورت خودکار استفاده کنید. اگر تا به حال شما Cron ای را نساخته باشید، درون ویرایشگر vi چیزی را شاهد نخواهید بود. پس کلید i را از صفحه کلید بزنید تا وارد حالت نوشتن درون سند شوید. حالا خط زیر را وارد کنید.

*/۳۰ * * * * echo `date` "Hello world" >>$HOME/helloworld.txt

خط بالا ساختار یک دستور خوداجراشو را هم تشریح می کند. تمامی دستوراتی که شما به Cron خواهید داد تا در فاصله زمانی های مشخصی اجرا شوند، باید از ساختار بالا تبعیت کنند. حتی شما این ساختار را هم در تصویر بالای همین صفحه می بینید که چقدر واضح به تصویر کشیده است.

۵ جزء اول از این خط که می توانیم همۀ آنها را با * نشان دهیم، مربوط به ساختار توالیِ زمانی است؛ اینکه در چه فاصلۀ زمانی دستور اجرا شود.

  • * اول: دقیقه (۰ – ۵۹)
  • * دوم: ساعت (۰ – ۲۳)
  • * سوم: روز ماه (۱ – ۳۱)
  • * چهارم: ماه (۱ – ۱۲)
  • * پنجم: روز هفته (۱ – ۷)

پس از آنکه ساختار توالیِ زمانی را تعیین کردید، باید در ادامه دستوری که می خواهید اجرا شود را وارد کنید. این دستور می تواند مربوط به هر قسمت از سیستم یا هر بستۀ نرم افزاری باشد؛ هیچ فرقی نمی کند. Cron آن را اجرا خواهد کرد. در مثال بالا دستور نوشتن درون یک سند متنی با استفاده از دستور echo مورد استفاده قرار گرفته است. که عبارت Hello world را به همراه تاریخ در یک سندی با نام helloworld.txt در مسیر پوشۀ خانگی ($HOME) اضافه می کند.

از آن جایی که در دستور بالا ساختار توالیِ زمانی به این صورت تعیین شده است ( */۳۰ * * * * ) به این معناست که در هر ساعت دو بار دستور را اجرا کن. یعنی هر نیم ساعت یک بار دستور اجرا می شود. پس الان کاملاً متوجه شدید که ساختار یک دستور خوداجراشو در لینوکس چگونه است.

پس سند را ذخیره کنید. ذخیره کردن تغییرات در نرم افزار vi کمی متفاوت تر از nano است که توضیحات و آموزش های آن را در مقاله های آموزشیِ گذشته خدمت شما دادم. کلید Esc را از صفحه کلید بزنید تا از حالت ویرایش سند خارج شوید. سپس دستور زیر را بزنید تا تغییرات ذخیره شود.

:wq!

حالا خواهید دید که عبارت crontab: installing new crontab روی خروجی نقش خواهد بست. به این معنا که کرانی که شما اضافه کردید به خوبی از الان به بعد کار خواهد کرد. اما اگر خطایی در دستور شما وجود داشته باشد عبارت زیر نشان داده خواهد شد و از شما می خواهد که سند را مجدد ویرایش کنید و خطای آن را برطرف نمایید.

errors in crontab file, can't install.
Do you want to retry the same edit?

پس از اینکه از دستور crontab -e استفاده کردید و دستورات خوداجراشوی خود را تعریف کردید، حالا باید سرویس crond را که همان نرم افزار اصلیِ Cron است را راه اندازی مجدد کنید.

service crond restart

حالا اگر بعد از نیم ساعت مسیر /root/helloworld.txt را ببینید، سندی با نام helloworld.txt خواهید دید که هر نیم ساعت یک بار یک خط به خطوط ان اضافه می شود که زمان را در ابتدای هر سطر درج کرده است. طبق همان دستوری که در کران تعیین کرده بودیم.

این ساده ترین کاربرد Cron Jobs ها در لینوکس بود که تقریباً در همۀ توزیع های لینوکس به همین صورت کار می کند. اما هدف ما بیشتر در اینجا توزیع CentOS بود. پس دیدید که چقدر زیبا و راحت می توان اجرا دستورات لینوکس را به صورت زمان بندی شده و خودکار درآورد. این کار را شما برای دستورات دیگر لینوکس هم می توانید انجام دهید. خودتان خط فرمان لینوکس را باز کنید و در محیط آزمایشیِ خود کدها را بالا و پایین کنید تا همه چیز دست تان آید. فراموش نکنید که خیلی از برنامه های کاربردیِ لینوکس نیاز به Cron دارند تا بتوانند به خوبی کار خود را انجام دهند. در آموزش های بعدی راجع به آنها هم توضیح خواهیم داد.

  1. با سلام
    من یه برنامه در لینوکس نوشتم که نیاز هست با دستور crontab چندین bash file که پسوند .sh دارند رو در زمان های خاص اجرا کنه. ولی فقط خط اول و اجرا میکنه و فایل بعدی رو اجرا نمیکنه

دیدگاه تان را ارسال کنید.

لطفاً از درج نظرات خارج از موضوع این صفحه خودداری کنید!