اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

دستور Cron Jobs و Crontab در لینوکس برای زمان بندی کارها

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    دستور Cron Jobs و Crontab در لینوکس برای زمان بندی کارها

    در این مقاله ما خواهیم دید که چگونه می توان کارها را با استفاده از دستور 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 فیلد اول زمان را نشان می دهد و فیلد آخر برای دستور می باشد.
    • 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 
    نکته : تنها کاربر root اجازه دیدن محتویات کارهای crontab کاربران دیگر را دارد و کاربر معمولی این اجازه را ندارد.


    4. حذف محتویات crontab
    توجه : crontab با آپشن –r تمامی محتویات کارهای زمانبندی شده را بدون تایید شما حذف خواهد کرد، قبل از حذف از آپشن –i استفاده کنید.
    کد PHP:
    # crontab -r 

    5.prompt قبل از حذف crontab
    آپشن -i قبل از حذف crontab کاربر، سوالی جهت تایید از شما خواهد پرسید.
    کد PHP:
    # crontab -i -r

    crontabreally delete root's crontab? 

    6. کاراکترهای خاص مجاز (*,-,/,?,#)
    ستاره (*) : تمامی مقدارها و یا هر مقدار ممکن
    خط تیره یا دش(-) : جهت تعریف رنج
    اسلش(/) : /10 در اولین فیلد هر 10 دقیقه یا افزایش رنج را نشان می دهد.
    کاما(,) : برای جداسازی آیتم ها


    7. زمانبندی نامحدود cron در سیستم
    ادمین سیستم میتواند از دایرکتوری های از پیش تعریف شده سیستم استفاده کند.
    کد PHP:
    /etc/cron./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نیز استفاده کنیم .
    می توانید در صورت نیاز این string ها را با 5فیلد اول جایگزین کنید.


    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>&
    توجه : اتوماتیک سازی کارها ممکن است برای اجرای بهتر کارها و بدون خطا به ما کمک کند. جهت اطلاعات بیشتر دستور man crontab را برای استفاده از دستورالعمل آن در ترمینال خود تایپ کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 07-14-2019, 03:06 AM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

    #2
    چطور میتونم از روی دیتابیس زمان اجرای cronjob ها را تنظیم کرد؟

    من قلبی بزرگ با رویاهایی بزرگ دارم. دانسته هایمان را با هم به اشتراک بگذاریم.

    کامنت


      #3
      cronjob صرفا از طریق فایل تعریف می شن و در دیتابیسی ذخیره نمیشن که شما بخوای از داخل دیتابیس تغییری ایجاد کنی.
      اصلا دلیلی برای ذخیره کردن job ها در دیتابیس نیست مگر اینکه شما بخواهید job های زیادی تعریف کنید که اون هم راه داره و می تونین از job scheduler استفاده کنید. برای بررسی لیست job scheduler ها هم پیشنهاد میکنم لینک زیر رو یه نگاهی بندازین:
      Instagram : https://www.instagram.com/iranlinuxforum

      Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

      Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
      Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
      Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
      LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

      Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

      کامنت

      درباره انجمن منطقه لینوکسی ها

      انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

      شبکه های اجتماعی
      در حال انجام ...
      X