شاید براتون این مشکل وجود داشته که میخواستین فلان ساعت، یه کامندی تو ترمینال اجرا شه! (مثلا هر شب ساعت ۱۰، به یه شخصی فلان فایل ایمیل شه!) یا اینکه یه بار ساعت ۴ صبح که احتمالا پای کامپیوتر نیستین، شروع به دانلود فایل کنین و بعد ساعت ۸ صبح هم سیستم خود به خود خاموش شه. همه اینکارا با ترمینال لینوکس انجام میشه! برای انجام اینکارها به ادامه مطلب مراجعه کنید.
چه روشهایی برای اینکار داریم؟
برای اینکار ها، ۳ روش داریم حداقل:
- دستور
sleep
- دستور
at
- تعریف
cronjob
۲ دستور اول فقط یکبار در تایمی که بهشون میدیم، کار مورد نظر رو انجام میدن، ولی دستور ۳ام خیلی امکانات بهتری داره! مثلا جلوتر میبینین که میشه بهش گفت روز اول هر ماه، لاگهای سیستم رو پاک کن :|
دستور sleep
این دستور در واقع به ترمینال میگه x
ثانیه صبر کن. حالا بعدش میشه که دستور مورد نظر رو بدین بهش! بدیش هم اینه که همه چیز تو اون سشن ترمینال هست! استفاده ازش برای زمانبندی کارمون هم تو این قالبه:
مثلا بگیم که ۵ ثانیه بعد، بهمون سلام بده:
دستور at
این دستور نسبت به دستور sleep
هم استفادش راحتتره، هم اینکه ترمینال برای کار شما نگه داشته نمیشه …
طریقه استفاده از اون هم اینطوریه که اول at X
رو میزنین که X
زمان مورد نظر هست، مثلا now + 1 hours
که میگه از الان، ۱ ساعت بعد، کاریو که بهت میگم انجام بده، یا 0250
میگه که ساعت ۰۲:۵۰ امروز (اگه گذشته باشه فردا) اون کارو انجام بده! برای اطلاعات بیشتر، man at
رو مطالعه کنین. حالا دو روش برای دادن کار ها به at
داریم: از تو فایل، یا اینکه خودمون واردش کنیم! اگه بخوایم از تو فایل بدیم، باید یه سوییچ -file
هم به at
بدیم، یعنی اینطوری صداش کنیم:
که جای <file>
باید آدرس فایل حاوی دستورات و <time>
هم که همون زمان رو میزاریم.
اگه که بخوایم خودمون دستوراتو دستی بدیم، همونطور که قبلا گفتم at
رو صدا میکنیم، بعد دستورات رو تو برنامهای که باز میشه تو ترمینال وارد میکنیم، آخرشم CTRL+D
میزنیم که بگیم کارمون تموم شد. مثال:
تعریف cronjob
این یکی، خیلی آزادی زیادی به ما میده! اول برای اینکه cronjob
های فعال سیستم رو ببینین، میتونین از
استفاده کنیم. برای اینکه اونارو ویرایش کنیم یا چیزی بهشون اضافه کنیم، از دستور:
استفاده میکنیم که با ادیتور دیفالت ترمینال، فایل حاوی cronjob
ها رو باز میکنه.
همه cronjob
ها باید تو فرمت
باشن. هر ستاره، نماینده مقادیر زیر به ترتیب هست:
- دقیقه (بین ۰ تا ۵۹)
- ساعت (بین ۰ تا ۲۳)
- روز ماه (بین ۱ تا ۳۱)
- ماه (بین ۱ تا ۱۲)
- روز هفته (بین ۰ تا ۶ که ۰ نماینده یکشنبه هست!)
مثلا اون بالا گفتم که میشه بگیم روز اول ماه، فلان کارو کرد:10 0 1 * * /path/to/executable
که ترجمه دقیقش میشه:
- دقیقه ۰
- ساعت ۰
- روز ۱
- هر ماه
- هر روزی که بود
اسکریپتی که تو آدرس/path/to/executable
هست رو اجرا کن.
البته کارهای دیگهای هم میشه کرد! مثلا یسری کلمههای کلیدی داریم مثل
که جای دقیقه میزاریم (بقیرو خالی میزاریم) که با توجه به کلمه، خودش یسری کار میکنه … (مثلا با @monthly
همون کاری که بالا گفتیم رو انجام دادیم …)
کار دیگهای که میشه انجام داد، اینه که مثلا میخواین که هر ده دقیقه یه بار، روزای دوشنبه تا جمعه، یه کاری انجام شه:
که میگه زمان هایی که دقیقه برابر با یکی از ۰، ۱۰، ۲۰، ۳۰، ۴۰ ،۵۰ بود، /executable
رو اجرا کن. میشه تمیز ترم نوشتش:
برای راهنمایی و دیدن مشخصات کاملتر هر روش، پیشنهاد میشه که فقط به این مطلب بسنده نشه و man
هر دستور خوانده شه! اگه مطلبی دارین که میخواین به متن اضافه شه یا نکتهی خاصی مد نظرتون هست، میتونین از بخش نظرات این صفحه استفاده کنین.