نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: سرور مجازی و استفاده از Cron برای خودکارسازی وظایف

  1. #1
    عضو انجمن succes آواتار ها
    تاریخ عضویت
    May 2012
    محل سکونت
    تبریز - کندوهاست
    نوشته ها
    481
    تشکر تشکر کرده 
    645
    تشکر تشکر شده 
    363
    تشکر شده در
    278 پست

    پیش فرض سرور مجازی و استفاده از Cron برای خودکارسازی وظایف

    سرور مجازی CentOSUbuntu


    مقدمه

    یکی از استانداردترین روش‌ها برای اجرای وظایف در پس زمینه در سرور مجازی های لینوکس، اجرا با وظایف cron است. آن‌ها برای زمان بندی وظایف در سرور مجازی و خودکارسازی وظایف مختلف مربوط به نگهداری، سودمند هستند. خود “cron”، یک daemon (یا برنامه) است که در پس زمینه اجرا می‌شود. زمان بندی برای وظایف مختلفی که در یک ساختار اجرا می‌شوند، “crontab” نام دارد.
    نصب

    تقریبا تمام توزیع‌های لینوکس، دارای نوعی از cron نصب شده به صورت پیش فرض هستند. با این حال، اگر شما سیستمی‌را به کار می‌برید که cron روی آن نصب نشده است، می‌توانید با دستورات زیر آن را نصب کنید:
    برای Ubuntu/Debian:
    کد:
    sudo apt-get update
    sudo apt-get install cron

    برای Cent OS/Red Hat Linux:
    کد:
    sudo yum update
    sudo yum install vixie-cron crontabs
    باید مطمئن شوید که آن در پس زمینه نیز اجرا می‌شود:
    کد:
    sudo /sbin/chkconfig crond on
    sudo /sbin/service crond start

    دستور

    در زیر یک وظیفه نمونه که می‌خواهیم اجرا کنیم، می‌آید:
    کد:
    ۵ * * * * curl http://www.google.com
    دستور برای وظایف مختلفی که به دنبال جای دادن آن در crontab هستیم، ممکن است دشوار به نظر بیاید. در واقع اگر شما طرز خواندن آن را بدانید، آن مختصر بوده و تجزیه آن ساده است. هر دستور به بخش‌های زیر تقسیم می‌شود:
    • زمان بندی
    • دستور
    دستور می‌تواند در واقع، هرگونه دستوری باشد که می‌خواهید به طور معمول در خط دستور اجرا کنید. قسمت زمان بندی دستور، به پنج گزینه مختلف برای زمان بندی به ترتیب زیر تقسیم می‌شود:
    • دقیقه
    • ساعت
    • روز از ماه
    • ماه
    • روز از هفته


    مثال‌ها

    در این جا فهرستی از مثال‌ها برای چند زمان بندی‌های متداول که ممکن است در طول سازماندهی cron با آن مواجه شوید، آورده می‌شود.
    برای اجرای یک دستور در هر دقیقه:
    کد:
    * * * * *
    برای اجرای یک دستور در ۱۲مین دقیقه از ساعت:
    کد:
    ۱۲ * * * *
    شما می‌توانید گزینه‌های مختلفی را برای هر نشانه ای که بعدا با کلمه پر می‌شود، به کار ببرید. برای اجرای یک دستور، هر ۱۵ دقیقه یکبار:
    کد:
    ۰,۱۵,۳۰,۴۵ * * * *
    برای اجرای یک دستور، به صورت روزانه در ساعت ۴:۰۰ قبل از ظهر، می‌توانید دستور زیر را به کار ببرید:
    کد:
    ۰ ۴ * * *
    برای اجرای یک دستور، هر سه شنبه در ساعت ۴:۰۰ قبل از ظهر، می‌توانید دستور زیر را به کار ببرید:
    کد:
    ۰ ۴ * * ۲
    می‌توانید از تقسیم بندی در زمان بندیتان استفاده کنید. به جای فهرست کردن ۰، ۱۵، ۳۰، ۴۵، می‌توانید دستور زیر را به کار ببرید:
    کد:
    */۴ ۲-۶ * * *
    به بازه “۲-۶”دقت شود. این ترکیب، دستور را بین ساعت ۲:۰۰ قبل از ظهر و ۶:۰۰ قبل از ظهر اجرا خواهد کرد.
    دستور زمان بندی به طرز اعجاب آوری قدرتمند و انعطاف پذیر است. شما می‌توانید هر زمانی را که تصور می‌کنید، بیان کنید.

    ساختار

    زمانی که یک زمان بندی را تعیین کرده اید و وظیفه ای را که می‌خواهید اجرا کنید، می‌دانید، باید مکانی برای قرار دادن آن داشته باشید، به طوری که daemon شما، قادر به خواندن آن باشد. چند مکان مختلف وجود دارد، اما متداول ترین مکان، crontab کاربر است. اگر شما فراخوانی کنید، آن فایل زمان بندی وظایفی را که cron اجرا خواهد کرد، تعیین می‌کند. فایل‌های هر کاربر در /var/spool/cron/crontabقرار دارد، اما آن‌ها را نمی‌توان مستقیما ویرایش کرد. بلکه استفاده از دستور crontab بهترین روش است.
    شما می‌توانید crontab خود را با دستور زیر ویرایش کنید:
    کد:
    crontab -e
    این یک ویرایشگر متن را باز می‌کند که در آن می‌توانید زمان بندی خود را برای هر وظیفه در یک خط جدید، وارد کنید.
    اگر بخواهید crontab خود را ببینید، اما به دنبال ویرایش آن نیستید، می‌توانید دستور زیر را به کار ببرید:
    کد:
    crontab -l
    شما می‌توانید crontab خود را با دستور زیر پاک کنید:
    crontab -r
    اگر شما یک کاربر دارای اجازه هستید، می‌توانید crontab کاربر دیگری را با تعیین crontab -u <user> -e ویرایش کنید.

    خروجی


    در هر وظیفهcron که اجرا می‌شود، خروجی به نشانی ایمیل کاربر که متعلق به آن کاربر است، ایمیل خواهد شد، مگر این که به یک فایل گزارش یا /dev/null هدایت شود. اگر شما یک ساختار “MAILTO” در راس crontab ارائه کنید، نشانی ایمیل می‌تواند به صورت دستی مشخص شود. شما می‌توانید برنامه خروجی را که می‌خواهید اجرا کنید، مسیری که در آن جستجو برای دودویی cron انجام می‌شود و راهنمای خانه را نیز با مثال زیر مشخص کنید:
    ابتدا، بیایید crontab را ویرایش کنیم:
    کد:
    crontab -e
    سپس، آن را به این ترتیب، ویرایش خواهیم کرد:
    کد:
    SHELL=/bin/bash
    HOME=/
    MAILTO=”example@digitalocean.com”
    #This is a comment
    * * * * * echo ‘Run this command every minute’
    این وظیفه مشخص، “این دستور را هر دقیقه اجرا کن” را به عنوان خروجی خواهد داد. این خروجی هر دقیقه به نشانی ایمیل example@digitalocean.comکه من مشخص کردم، ارسال خواهد شد. بدیهی است که این نمی‌تواند یک وضعیت ایده آل باشد. همان طور که گفته شد، می‌توانیم خروجی را به یک فایل گزارش یا یک مکان خالی بفرستیم تا از ارسال خروجی با ایمیل جلوگیری کنیم.
    افزودن یک فایل گزارش، به این سادگی است:
    کد:
    * * * * * echo ‘Run this command every minute’ >> file.log
    دقت شود که: “>>” به یک فایل اضافه می‌شود.
    اگر شما بخواهید آن را به یک فضای خالی بفرستید، از /dev/null استفاده کنید. در این جا یک الگوی PHP آورده می‌شود که در پس زمینه اعمال و اجرا می‌گردد.
    کد:
    * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
    کد:
    
    
    محدود کردن دسترسی

    محدود کردن دسترسی به cron با فایل‌های /etc/cron.allow و /etc/cron.deny ساده است. برای اجازه دادن یا ردکردن دسترسی یک کاربر، تنها لازم است نام کاربری آن‌ها را بسته به دسترسی لازم، در یکی از فایل‌های زیر قرار دهید. به طور پیش فرض، اغلب daemonهای cron، فرض می‌کنند که کاربران به cron دسترسی دارند، مگر این که یکی از این فایل‌ها وجود داشته باشد. برای رد کردن دسترسی تمام کاربران و دادن امکان دسترسی به یک کاربر مشخص، می‌توانید مجموعه دستورات زیر را به کار ببرید:
    کد:
    echo ALL >>/etc/cron.deny
    echo tdurden >>/etc/cron.allow
    ابتدا تمام کاربران را با افزودن “ALL” به فایل رد، قفل می‌کنیم. سپس، با افزودن نام کاربری به فایل اجازه، دسترسی کاربر برای اجرای وظایف cronرا ممکن می‌سازیم.

    دستورات خاص


    چند دستور مختصرنویسی وجود دارد که می‌توانید در فایل crontab خود از آن‌ها استفاده کنید تا مدیریت را کمی‌ساده تر نمایید. آن‌ها میانبرهای مهمی‌برای مشخص کردن زمان بندی عددی معادل هستند:
    • @hourly مختصرنویسی برای ۰ * * * *
    • @dailyمختصرنویسی برای۰ ۰ * * *
    • @weekly مختصرنویسی برای ۰ ۰ * * ۰
    • @monthlyمختصرنویسی برای۰ ۰ ۱ * *
    • @yearlyمختصرنویسی برای۰ ۰ ۱ ۱ *
    و @reboot که دستور را در هنگام راه اندازی مجدد اجرا می‌کند.
    دقت: تمام daemonهای cron نمی‌توانند با این ترکیب، تجزیه کنند (مخصوصا نسخه‌های قدیمی)، بنابراین قبل از این که به آن اطمینان کنید، مجددابررسی کنید تا از کار آن اطمینان حاصل نمایید.
    برای داشتن وظیفه ای که در راه اندازی مجدد اجرا می‌شود، می‌توانید فایل crontab خود را ویرایش کنید (crontab -e) و در فایل، یک خط دستور مشابه زیر قرار دهید:
    کد:
    @reboot echo “System start up”
    این دستور خاص، می‌تواند اجرا شود و سپس به کاربر تعیین شده در crontab ارسال شود.

    منبع و مترجم : کندوهاست
    ❄️ جشنواره زمستانه شرکت آرکا میزبان کندو | تخفیف 40% ✅ دیتاسنتر ovh و ... ✅ مجازی ساز kvm ❄️
    تا تمام نشده اقدام بفرمایید : https://kandohost.com/w1401/ - اینماد+ساماندهی+ضمانت برگشت وجه

  2. تعداد تشکر ها از succes به دلیل پست مفید


  3. # ADS




     

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 15
    آخرين نوشته: March 17th, 2016, 11:58
  2. مشکل در فعال سازی cron job
    توسط softlayer در انجمن سوالات و مشکلات
    پاسخ ها: 4
    آخرين نوشته: February 18th, 2014, 12:35
  3. پاسخ ها: 0
    آخرين نوشته: January 26th, 2014, 15:37
  4. اجرای فایل php با استفاده از cron job
    توسط e_naderlou در انجمن سوالات و مشکلات
    پاسخ ها: 12
    آخرين نوشته: August 3rd, 2013, 19:32
  5. اجرای برنامه ها بصورت زمانبندی شده با استفاده از cron !
    توسط reza115 در انجمن ردهت,فدورا,سنت-او-اس Redhat,Fedora,CentOS
    پاسخ ها: 0
    آخرين نوشته: January 30th, 2011, 11:25

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •