Click Here to Go HomePage index.php
مهمان   به  GNUIran.org  خوش آمدید یكشنبه، ۰۴ فروردین ۱۳۹۸ 
نکته ها و ترفند ها

برای استفاده از حقوق کاربر ریشه ( root ) در کنسول کافیست تایپ کنید su و بعد از فشردن Enter کلمه ی عبور را وارد کنید!!!.

--

جستجو در سایت




جستجوی پیشرفته
جستجو در انجمن‌ها

پلاگین فایرفاکس

وضعیت کاربران سایت
مدیر
هیچیک از مدیران حاضر نیست
مدیر افتخاری
هیچ مدیر کمکی حاضر
ناظران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:1040
جدیدترین:جدیدترین:
RezaJafary
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:1
مجموع:مجموع:1
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

زمان بندی انجام دستورات با Cron

(1712 مجموع کلمات موجود در متن)
(9489 بار مطالعه شده است)  نسخه چاپی
نام مقاله : زمان بندی انجام دستورات با Cron
نویسنده : نوید


I. زمان بندی !

زمانبندی (Schedule) را می توان هنر یک مدیر دانست ، البته نه به این معنا که کاربران نباید این کار را در فهرست مهارت های خود قرار دهند بلکه به این معنا که یکی از وظایف اصلی مدیران سیستم همانا زمان بندی انجام کار هاست. یک مدیر باید روزانه از سیستم خود یک نسخه ی پشتیبان بگیرد ، بازرسی های امنیتی سیستم را انجام دهد ، به فایل های گزارش روزانه یا log ها سرکشی کند و بسیاری کار دیگر که بر عهده ی اوست ، این جاست که زمان بندی کار ها به میان می آید ، شماهر چقدر هم که فرد باهوش و با دقتی باشید باز هم سیل کارهای مختلف در روز می تواند باعث فراموشی و یا اشتباه در کارتان شود ، این همان چیزیست که هرگز نباید رخ بدهد. برای جلوگیری از خطاهای انسانی این وظایف را به کامپیوتر می سپارند ، در سیستم عامل لینوکس و اغلب یونیکس ها از برنامه ای به نام cron برای زمانبندی کارها استفاده می شود. به این وسیله شما به راحتی می توانید با وارد کردن دستور برای یکبار این وظیفه را به کامپیوتر خود واگذار کنید ، از این پس این کامپیوتر شماست که دستورات را به موقع انجام می دهد.

corn .II و استفاده از آن !

همان طور که در بالا گفتیم برای زمانبندی در لینوکس از برنامه ی cron که نوشته ی Paul Vixie می باشد استفاده می کنیم. این برنامه در اغلب توزیع های لینوکس و یونیکس ها وجود دارد. این برنامه یک Deamon ( بخوانید/Daymen/ یا /Dimen/ ) دارد که همواره در پشت صحنه ی سیستم شما در حال اجراست و فایل های ورودی خود را چک می کند ، به محض مشاهده ی کاری در زمان خاص آن کار را انجام می دهد. به فایل های ورودی ، crontab می گویند ، شما باید دستورات خود را در این فایل ها اضافه کنید و زمان اجرای دستور را نیز قید کنید ، به محض فرارسیدن زمان اجرای دستور ، دایمن Cron این دستور یا دستورات را انجام خواهد داد. توجه داشته باشید که بعد از انجام تغییرات در فایل های Crontab نیازی به راه اندازی مجدد Cron Deamon وجود ندارد و cron خودش این تغییرات را تشخیص و به آن ها عمل خواهد کرد. در واقع cron هر دقیقه یک بار دایرکتوری های var/spool/cron/ و etc/cron.d/ و فایل etc/crontab/ را چک می کند ، ‌به این نوع Deamon ها بیدار باش یا "Wakes up" می گویند (بیدار باش ترجمه ای لغتی است و مفهوم wakes up حواس جمع بودن و دائم سر پست حاضر بودن است).

بسیار خوب تا به این جا روند انجام کار را بررسی کردیم. تنها کاری که شما باید انجام بدهید ویرایش فایل etc/crontab/ و اضافه کردن دستورات خود در این فایل است. برای درک بهتر نظر شما را به نمونه ای از این فایل در سیستم خودم جلب می کنم :

SHELL=/bin/bash
MAILTO=gnuiranorg
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
# check scripts in cron.hourly, cron.daily, cron.weekly, and
#cron.monthly
-*/15 * * * * root test -x
/usr/lib/cron/run-crons &&
/usr/lib/cron/run-crons >/dev/null 2>&1
59 * * * * root rm -f
/var/spool/cron/lastrun/cron.hourly
14 4 * * * root rm -f
/var/spool/cron/lastrun/cron.daily
9 4 * * 6 root rm -f
/var/spool/cron/lastrun/cron.weekly
44 4 1 * * root rm -f
/var/spool/cron/lastrun/cron.monthly
02 4 * * * root run-parts

شاید ظاهر این فایل کمی غیر معمول به نظر برسد امابا دانستن روش وارد کردن دستور خواهید دید که بسیار هم ساده و جالب است. نظری به خط آخر می اندازیم ؛ این خط با ۵ قسمت آغاز می شود: اولی دقیقه (۰ تا ۵۹) ، دومی ساعت (۰ تا ۲۳) ، سوم روز از ماه (۱-۳۱) ، چهارم ماه (۱-۱۲) و آخرین بخش نام روز از هفته ( ۰-۷ که ۰و۷ نمایش دهنده ی یکشنبه هستند) . برای ماه و روزهای هفته شما می توانید سه حرف اول این مقادیر به انگلیسی را نیز استفاده کنید. شما می توانید مقادیر کلی یا طول مدتی را با استفاده از موارد زیر استفاده کنید :

  • با استفاده از کاراکتر '*' (بخوانید Asterisk یا استریسک [۱] ) این کاراکتر به معنی تمام طول مدت انجام کار است مثلا اگر در فلید یا بخش دقیقه این علامت وارد شود یعنی در تمام ۶۰ دقیقه این کار انجام شود.
  • لیستی از اعداد که توسط کاما ',' از یکدیگر جدا شده اند ، corn با برخورد به هر کدام از مقادیر آن را اجرا خواهد کرد. مثلا 20 , 10,16 یعنی در دقایق یا ساعات 20 و 16 و10 این کار انجام شود.
  • دامنه ای از مقادیر که با هایفن یا '-' از هم جدا شده باشند ، برای نمونه 8-18 اگر در بخش ساعت یعنی دومین بخش به کار برود بین ساعات 8 صبح و 6 بعد از ظهر هر1 ساعت این کار انجام می شود و یا اگر در بخش اول یعنی دقیقه باشد بین دقایق 8 و 18 ساعت مورد نظر این کار انجام می شود (سر هر دقیقه) .
  • یک اسلش '/' با استفاده از یک اسلش شما می توانید یک کار را در یک سیکل زمانی انجام دهید ، برای نمونه 15/* باعث می شود که یک کار هر 15 دقیقه یک بار انجام گیرد.

بعداز۵ قسمت اول نام کاربری که قرار است این دستور را اجرا نماید نوشته شده است و سپس دستوری که قرار است اجرا شود ( در این جا run-parts) بنابر این این برنامه هر روز و درساعت 4:02 صبح اجرا می شود. برای ایجاد یک دستور جدید کافیست آن را به فایل etc/crontab/ اضافه کنید ، برای این کار باید دارای مجوز ریشه باشید و برنامه ی شما با مجوز ریشه اجرا خواهد شد. اما این می تواند کمی برای کاربران معمولی سیستم ناراحت کننده باشد ، برای این که یک کار بر بتواند از این سیستم زمانبدنی استفاده کند بخش بعد را مطالعه فرمایید.


III. ایجاد فرمان ها توسط کاربر

برای ایجاد این فرمان ها شما باید از ابزار crontab استفاده کنید اما نه با ویرایش فایل ! قبل از ادامه همین جا باید با واژه ی cron job آشنا شوید ، همان طور که از معنی این لغت بر می آید cron job یک کار cron است در واقع به هر یک از فرمان هایی که در زمان خاص اجرا می شود یک cron job می گویند. در واقع ما برای هر کاری یک cron job می سازیم. ساختار کلی ابزار crontab به شکل زیر است :

crontab [-u user] [-l | -e | -r] [file]


شاید ظاهرش کمی شلوغ است اما اگر بدانید که وجود " [] " ها به این معنیست که شما می توانید این بخش را در ساختار دستور به کار ببرید یا اگر خواستید استفاده نکنید ;) در واقع اگر شما u User- را وارد نکنید ابزار crontab با کاربری که آن را اجرا کرده است اجرا می شود ولی اگر بخواهید با نام کاربری دیگر آن را اجرا کنید برای نمونه وارد می کنید u tux- و از این ابزار استفاده می کنید. اگر می خواهید به طور مستقیم برروی یک cron job کار کنید کافیست از دستوراتی که در کروشه ی دوم آمده اند استفاده کنید:

  • l- وظایف یا همان cron job های کنونی را نمایش می دهد.
  • e- برای ویرایش cron job حاضر به کار می رود که درواقع خودش یک Vi را باز می کند و فایل crontab را در آن قرار می دهد تاشما وظیفه ای را اضافه یا کم کنید یا وظایف کنونی را تغییر بدهید. [۲]
  • r- این گزینه هم برای پاک کردن وظایف کنونی به کار می رود.

(علامت های | بدین معنی هستند که شما فقط یکی از آن سه گزینه را می توانید استفاده کنید. )راه دیگر این است که شما یک فایل وظایف یا cron job file ایجاد کنید و در محلی ذخیره کنید و آن را با همین ابزارو گزینه ی file وارد جداول وظایف بکنید :

crontab -u tux my_cron__file

شما می توانید حتی مقادیر متغییر های محیطی را نیز در یک فایل cron تغییر بدهید برای این کار کافیست از این الگو پیروی کنید :VARIABLE=value مثلا برای HOME مقدار home/tux/ را قرار بدهید .(HOME=/home/tux) . در نمونه ی زیر این فایل cron هر ۳۰ دقیقه ایمیل های آمده را فرا می خواند :

SHELL=/bin/bash
MAILTO=tux
HOME=/home/tux
0,30 * * * * /usr/bin/fetchmail -s


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

مقدار معادل
@reboot
در زمان هر بار بوت شدن سیستم
@yearle 0 0 1 1 *
@annually
مانند بالایی
@mounthly
0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@midnight همانند بالایی
@hourly 0 * * * *

بسیار خوب حالا می توانید کار هایتان را به کامپیوتر لینوکستان بسپارید و دیگر نگران تنظیم وقت خود نباشید ، خوب بازی با اعداد را شروع کنید تا کاملا به این ابزار مسلط شوید ;)



[۱] به کاراکتر استریسک یا * در گوشی های تلفن Star یا ستاره می گویند و نامیدن ستاره یا Star در کامپیوتر برای این کاراکتر اشتباه است.
[۲] اگر نمی خواهید با vi کار هایتان را انجام دهید کافیست ویرایشگر پیش فرض سیستم خود را از vi به ویرایشگر مورد علاقه ی خود تغییر دهید برای این کار باید متغییر محیطی VISUAL و EDITOR را تغییر دهید.


امتیاز دهی 1/10
امکانات

اطلاعات

ارتباطات

پروژه‌ها

ورود اعضا




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید


The rest of this site is Copyright © 2004 2005 2006 2007 2008 GNUIran.org
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by Free Software Foundation; A copy of the licence is available at www.gnu.org/copyleft/fdl.html

تمام مطالب این سایت تحت مجوز GNU/FDL نسخه ی ۱.۲ یا هر نسخه ی جدیدی که از سوی بنیاد نرم افزار آزاد منتشر شود قرار دارد شما برای کپی استفاده و/یا تغییر مستندات آزاد هستید.
می توانید یک نسخه از این مجوز را از اینجا تهیه کنید.


GIO Forums RSS   GIO News RSS   GIO Gallery RSS   Licensed under GNU/FDL  Use TW-CMS  Run on Debian GNU/Linux