كارت dvb , كارت دي وي بي , دی وی بی , رسيور , رسیور

فروشگاه سايت

تبليغات

آخرين ارسالي‌هاي لینوکس

اجرای برنامه ها بصورت زمانبندی شده توسط Cron و At

اين يك بخش از موضوع اجرای برنامه ها بصورت زمانبندی شده توسط Cron و At است كه در انجمن لینوکس مطرح گرديده و اين انجمن نيز زير مجموعه‌ي مقالات آموزشی است: http://reza.behroozi.info/?p=18 cron ابزاری برای کمک به ما در انجام وظایف بصورت خودکار میباشد. مثلا به ما در تهیه پشتیبان از فایل ها و دایرکتوری های مورد نظر در ساعت های استراحت شبکه که مسلما ما هم در استراحت هستیم یاری میدهد تا مدیران شبکه با خیالی آسوده به استراحت بپردازند.(خوابهای ...

 

بازگشت   انجمن های آموزشی پارس > بخش های تخصصی آموزشی شبکه و سرور > مقالات آموزشی > لینوکس


لینوکس لینوکس

اطلاعيه‌هاي سايت

 

لطفاً پيش از فعاليت در سايت، قوانين سايت را مطالعه نماييد

كليه‌ي كاربراني كه توانايي مديريت هر يك از بخش‌هاي سايت را دارند، با كليك روي اين لينك به مديريت سايت اطلاع دهند


پاسخ

 

LinkBack ابزارهای موضوع
قدیمی Tuesday 15 January 2008, 01:40 PM   #1
کاربر نقره‌ای
 
jamshid آواتار ها
 

تاریخ عضویت: May 19th, 2006
نوشته ها: 1,184

سطح دانش: 30 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
سابقه در سایت: 72 / 725
قابليت: 394 / 6640
ميزان تجربه: 2%

Thanks: 75
Thanked 768 Times in 401 Posts
قدرت اعتبار: 5 jamshid is on a distinguished road
پیش فرض اجرای برنامه ها بصورت زمانبندی شده توسط Cron و At

http://reza.behroozi.info/?p=18

cronابزاری برای کمک به ما در انجام وظایف بصورت خودکار میباشد. مثلا به ما در تهیه پشتیبان از فایل ها و دایرکتوری های مورد نظر در ساعت های استراحت شبکه که مسلما ما هم در استراحت هستیم یاری میدهد تا مدیران شبکه با خیالی آسوده به استراحت بپردازند.(خوابهای خوب ببینید ).اشتباه نکنید وظیه cron تهیه پشتیبان برای ما نیست بلکه اجرای پروسه ی پشتیبانگیری یا هر پروسه ی دیگری در ساعت و زمان از پیش تعیین شده میباشد.
دستورات و قوانین cron در حالت پیش فرض در (crontab(cron table که در /etc/قرار دارد ذخیره میشود ولی هر کاربر میتواند crontab مربوط به خودش را داشته باشد که در /var/spool/cron/ ذخیره میشود.
برای ویرایش crontab یه کاربر کافیست به راحتی با کاربر مورد نظر به سیستم وارد
شده و در ترمینال

کد:
#crontab -e


را تایپ کنیم.
ویرایشگر پیش فرض برای crontab -e ویراشگر vi میباشد که بعضی از دوستان از جمله خود من در کار کردن با این ویرایشگر دچار مشکل هستن پس اگر شما تمایل یه تعویض حالت پیش فرض رو دارید کافیست بدین ترتیب عمل کنید

کد:
#export VISUAL='youreditor' (I recommend jed,ee or nano)
چند نمونه از دستوراتی که در crontab استفاده میکنیم
کد:
12 3 * * * root tar cfz /reza/backup.tar.gz /etc >> /dev/null 2>&152 5 * * * root /usr/local/src/analog-5.3.2-1h/analog >> /dev/null 2>&1*/15 * * * * root echo "are you alive?..lol"
مورد اول برای گرفتن پشتیبان از /etc/
مورد دوم برای اجرای برنامه analog جهت محاسبه آمار وب سرور می باش
مورد سوم برای فرستادن پیغام به کاریر root هر از 15 دقیق میباشد
ما اینجا برای نوشتن دستورات crontab تعداد 7 فیلد داریم که به ترتیب زیر نوشته میشوند

کد:
1 2 3 4 5 6 7 1-Minute(0-59)2-Hour(0-23)3-DayofMonth(1-31)4-Month(1-12 or Jan,Dec,etc)5-DayofWeek(0-6(0=sunday) or sun,sat,etc)6-User7-Command1=*/15 2=* 3=* 4=* 5=* 6=root 7=echo "are you alive?..lol"
برای درک بهتر از مثال هایی که در بالا ذکر شد استفاده میکنیم
کد:
12 3 * * * root tar cfz /reza/backup.tar.gz /etc >> /dev/null 2>&1
مثال بالا در ساعت 3:12 صبح با اجرای tar cfz /reza/backup.tar.gz /etc >> /dev/null 2>&1 شروع به تهیه پشتیبان از /etc/ میکند.
dev/null 2>&1 یه معنی ارسال هرگونه خروجی استاندارد(statndard output) به dev/null (سطل آشغال لینوکس) می باشد و هدایت خطاهای استاندارد(2)(standard error) به همان جایی که خروجی استاندار (1) رفته است بدون هر گونه خروجی در ترمینال یا هر نقطه دیگر.
مثالی دشوارتر :
کد:
 30 15 7 10 0 * root echo "happy birthday,reza!!"
در این مثال در تاریخ یکشنبه 7 oct ساعت 15:30 پیغام تبریکی برای کاربر ارسال میشود
مثال بالا رو به شیوه زیر هم میتوان نوشت :
کد:
30 15 7 Oct Sun * root echo "happy birthday,reza!!"
با اقزودن ' , ' در یک فیلد امکان چندین مرتبه اجرا شدن دستور مورد نظر بدست میاد.مثلا برای اجرای دستور در 15 و 30 دقیقه گذشته از هر ساعت بدین طریق عمل میکنیم :
کد:
15,30 * * * * reza echo "nuclear weapon is our right!!"
برای اجرای دستور مورد نظر در یک زمان مشخص برای اولین هفته ماهی که شما تمایل دارید در فیلد روز از 7-1 استفاده میکنیم
کد:
15,30 */2 1-7 * *  reza echo "horray,west world will bycott us!!"
run-parts
برای اجرای یک مجموعه اسکریپت در زمان مشخص از run-parts استفاده میکنیم.مثال زیر اسکرپیت های قرار گرفته در /home/reza/cron/ را در ساعت 4:18 بعد از ظهر اجرا خواهد کرد
کد:
18 16 * * * reza run-parts /home/reza/cron >> /dec/null 2>&1
ثبت خروجی دستورات در cron
برای انجام اینکار میبایست بجای dev/null از چیزی شبیه به مثال پایین استفاده کنیم
کد:
30 4 * * * root ls -s /reza/web >> /reza/webdirlist.log 2>&1
نکته»
اگر بجای << از < استفاده کردید در هر دفعه جرا شدن دستور و فرستادن خروجی به فایل مریوطه ,محتویات فایل پاک و خروجی حدید جایگزین میشود ولی با استفاده از << خروجی به انتهای فایل افزوده خواهد شد.
برای لیست کردن jobهایی که با crontab -e اضافه کردیم میتوانیم با استفاده از دستور زیر cron jobها رو لیست کنیم
کد:
#crontab -l
برای پاک کردن یک crontab از دستور زیر استفاده میکنیم
کد:
#crontab -r
برای ویرایش crontab یک کاربر از طریق کاربر root بدین طریق عمل میکنیم
کد:
#crontab -e -u username
تا اینجا دیدید که برخلاف ظاهر پیچیده crontab به آسانی تنظیم میشود و تقریبا ابزاری کاربردی و مهم در فرآیند مدیریت سیستم میباشد.
برای استفاده از cron باید از crontab جهت load کردن jobها استفاده کرد که برای این منظور 2 راه پیش رو داریم :
1-استفاده از crontab -e ,یعنی مستقیما دستور مربوط رو در crontab مینویسیم
2-از طریق فایل یعنی ابتدا یک فایل متنی میسازیم و طبق قوانین توضیح داده شده در بالا وروی مناسب با شرایط خودتون رو در فایل مورد نظر قرار داده و سپس Load میکنیم
قبل از Loadبا استفاده از crontab -l لیست jobهای جاری رو تهیه میکنیم و هر کدام رو که لازم داریم در فایل جدید مینویسیم چون با load این فایل تمامی jobهای گذشته پاک خواهند شد .
با مثال ادامه میدهیم
کد:
#touch /reza/mycrontab #echo "30 4 * * * ls -s /reza/web >> /reza/webdirlist.log 2>&1" > /reza/mycrontab #crontab -u reza /reza/mycrontab #crontab -l
با اجرای crontab -l از load شدن فایل اطمینان حاصل میکنیم.
توجه داشته باشید که برای افزودن job جدید یا ویرایش jobهای موجود کافیه با ویرایش فایل mycrontab و افزودن دستور مورد نظر در خط جدید و پاک کردن crontab با استفاده از crontab -r فایل را دوباره Load کنیم.
cron jobها تحت کاربری که فایل را با اون load کردیم اجرا خواهد شد
چه کاربرانی اجازه استفاده از cron رو دارند :
اگر فایل /etc/cron.allow/ وجود داشته باشد فقط کاربرانی داخل این فایل اجازه استفاده از cron را دارند.
اگر فایل /etc/cron.allow/ وجود نداشته باشد /etc/cron.deny/ بررسی خواهد شد ,در این صورت چنانچه کاربری داخل این فایل وجود نداشته باشد امکان استفاده از cron را خواهد داشت.
فرستادن خروجی به ایمیل یک کاربر :
در حالت پیش فرض cron خروجی را برای email کاربر مالک job میفرستد که میتوانید با افزودن خط زیر به crontab خروجی را به email کاربر دلخواه هدایت کنی
کد:
MAILTO="username"
این دستور در صورتی اجرا خواهد شد که از /dev/null/ استفاده نکرده باشید.
اجرای برنامه ها در statup از طریق crontab :
برای اجرای برنامه در زمان بوت سیستم کافیست برنامه مورد نظر را بدین طریق در crontab قرار بدهیم
کد:
@reboot /path/to/my/program@reboot updatedb
این برنامه در هر بار بوت مجدد سیستم اجرا خواهد شد.
گزینه های دیگر قابل استفاده همانند reboot@ بدین قرار هستند :
کد:
string             meaning ------              ----------- @reboot        Run  once, at startup. @yearly         Run once a year, "0 0 1 1 *". @annually      (same as @yearly) @monthly      Run once a month, "0 0 1 * *". @weekly         Run once a week, "0 0 * * 0". @daily           Run once a day, "0 0 * *  *". @midnight     (same as @daily) @hourly         Run once an hour, "0 * * *  *".
******************************************
At ابزاری برای اجرای دستورات بصورت زمانبندی شده ولی برای یکمرتبه میباشد.در واقع تفاوت cron با at در همین نکته هست که cron برای انجام پروسه ها در مدت زمان طولانی و یصورت پشت سر هم در حالیکه at برای اجرای یک پروسه زمانبندی شده فقط برای یکبار میباشد.
شیوه کار:
با root وارد شده و دستور زیر را تایپ میکنیم
کد:
#at time(23:30,4pm,etc)#at 4pm#at 4pm + 3 days#at 4pm Jul 31#at 4pm tomorrow
با انجام اینکار وارد محیط at همانند شکل میشوید



سپس دستور مورد نظر را تایپ کنید
کد:
at> ls -l /etc > /reza/ls.etc
شما در هر خط اجازه وارد کردن یک job رو دارید و برای job بعدی کلید Enter را بزنید و دستور جدید را بنویسید
با زدن همزمان Ctrl + D خروجی شبیه زیر خواهید داشت
کد:
 job 7 at 2007-03-24 17:00
که اینجا 7 , شماره job مورد نظر میباشد
چیزی که شما ساختید یه پروسه زمانبندی شده بود که در ساعت 4 بعداز ظهر اجرا خواهد شد.
پاک کردن یک job:
چنانچه تصمیم گرفتید قبل از 4 بعد ازظهر job مورد نظرتون را پاک کنید کافیست بدین روش عمل کنید
کد:
#atrm X(jobID)#at -d X
دیدن لیست jobها :
برای دیدن لیست jobهایی که منتظر اجرا شدن هستند اینگونه عمل میکنیم
کد:
#atq#at -l
لود کردن jobها با فایل :
برای کپی کردن /reza/www/php/ در ساعت 4 بعد ازظهر 3 روز بعد , اینگونه عمل میکنیم :
کد:
#touch /reza/myat#echo "cp /var/www/php /reza/www/php"#at -f /reza/myat 4pm + 3 days
ه کاربرانی اجازه استفاده از at رو دارند :
اگر فایل /etc/at.allow/ وجود داشته باشد فقط کاربرانی داخل این فایل اجازه استفاده از at را دارند.
اگر فایل /etc/at.allow/ وجود نداشته باشد /etc/at.deny/ بررسی خواهد شد ,در این صورت چنانچه کاربری داخل این فایل وجود نداشته باشد امکان استفاده از at را خواهد داشت.

منابع :
linuxhelp.net
scrounge.org
reallylinux.com
debianhelp.co.uk


__________________
یادت نره
View jamshid's Photo Album jamshid آفلاين است   پاسخ با نقل قول
قدیمی Tuesday 15 January 2008, 01:41 PM   #2
کاربر نقره‌ای
 
jamshid آواتار ها
 

تاریخ عضویت: May 19th, 2006
نوشته ها: 1,184

سطح دانش: 30 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
سابقه در سایت: 72 / 725
قابليت: 394 / 6640
ميزان تجربه: 2%

Thanks: 75
Thanked 768 Times in 401 Posts
قدرت اعتبار: 5 jamshid is on a distinguished road
پیش فرض پاسخ : اجرای برنامه ها بصورت زمانبندی شده توسط Cron و At

چند نکته فراموش کرده بودم بنویسم که الان اضافه میکنم
یک سری علایم در نوشتن ورودی cron استفاده میشود که من سعی میکنم با مثال توضیح بدم(من تو عمرم انشا ننوشتم پس اگه میبینید نگارشم خوب نیست,ببخشید دیگه!!هدفم مهمه)
* برای نادیده گرفتن اون فیلد در نظر گرفته شده,یعنی اگر مثلا در فیلد ساعت بود بدون توجه به این فیلد سر هر ساعت دستور اجرا میشود و یا اگر در فیلد دقیقه بود سر هر دقیقه و ....
, (کاما) در هر فیلد که احتیاج داریم چندین بار دستور در ساعات مختلف اجرا بشود کاربرد دارد مثلا در فیلد دقیقه 15,30 به معنای اجرا در دقیقهای 15 و 30 یا در فیلد ساعت 2,9 به معنای اجرا در ساعتهای 9 و 2 میباشد و....
- برای تعیین یک بازه زمانی مثلا در فیلد روزهای ماه اگر بیخواهیم بین روزهای 8 تا 15 دهم ماه دستور اجرا بشود بدین صورت مینویسیم 15-8 و....
سه نشانه بالا برای استفاده در فیلدهای 5-1 در نظر گرفته شده ولی نشانه زیر برای فیلد شماره 7
% در فیلد 7 برای نشان دادن خروجی در خط بعدی کاربرد دارد مثلا
کد:
echo %reza %persianadmins %behroozi
به جای نمایش بصورت reza persianadmins behroozi بدین ترتیب نمایش داده میشود
کد:
rezapersianadminsbehroozi
در at در صورتی که بخواهیم پس از پایان یافتن job ایمیل به کاربر ارسال شود از m- استفاده میکنیم
__________________
یادت نره
View jamshid's Photo Album jamshid آفلاين است   پاسخ با نقل قول
پاسخ

برچسب ها
cron

ابزارهای موضوع

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

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال


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

موضوع نویسنده موضوع انجمن پاسخ ها آخرين نوشته
برنامه ریزی و مدیریت استراتژیک jamshid موارد دیگر نیروی زمینی 0 Wednesday 18 July 2007 08:14 PM
معرفي برنامه Nmap Scaner king-cmpu آموزش ها و مفاهیم پایه 0 Wednesday 11 April 2007 10:56 PM
نصب نرم افزار در لینوکس atn_1366 مباحث لینوکس (Linux) 0 Wednesday 23 August 2006 02:23 AM
مفاهیم پایه*ای لینوکس atn_1366 مباحث لینوکس (Linux) 0 Wednesday 23 August 2006 02:15 AM
افزایش امنیت به میزان 80 درصد AKBAR H.Y ترفند های امنیتی 3 Saturday 3 June 2006 08:08 PM


اکنون ساعت 10:58 AM برپایه ساعت جهانی (GMT - گرینویچ) +4.5 می باشد.


Powered by vBulletin
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.

Skin developed by: ParsDVB


نقل مطالب سايت با ذکر منبع (http://drdvb.com) و نام نويسنده مجاز است. مسئوليت پستها بر عهده نويسنده آن است و سايت parsdvb به هيچ عنوان در قبال نوشته‌های ديگران مسئوليتی ندارد.
 

تمامي قوانين اين سايت از جمهوري اسلامي ايران پيروي مي کند و هرگونه مطالب مخالف قوانين ايران و بنر يا لينک مستهجن در اين سايت جايي ندارد

website monitoring service check web page

    

100
Search 2

parsdvb satdw skynet skynet جدید skystar3 tps.bin vplug vplug جدید vpnمجانی zeeaflam آموزش لب گرفتن استارست اموزش لب گرفتن انتخاب رشته مجازي ترانه ی مادری ثبت نام فيات ثبت نام فیات حسین استیری دانلود نرم افزار ویروس ساز دانلود ويروس ساز رضایا ساسي مانكن ساسی مانکن سریال ترانه ی مادری عکس دختر عکس لب عکس لب گرفتن فركانس شبكه هاي استاني فركانس ماهواره فرکانس فرکانس شبکه های استانی فرکانس ماهواره فرکانسهای ماهواره فيات فيات سينا فیات فیات سینا لب لب گرفتن مجله تپش منصور حیدری مولتی ویژن همسر خسرو شكيبايي همسر خسرو شکیبایی پخش افتتاحیه المپیک پخش المپیک پخش زنده ماهواره پوریا شکیبایی کانالهای پخش المپیک یاسر محمودی ... powered by Search 2
Google
جستجو در گوگل جستجو درانجمنهای آموزشی پارس