در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch

سلام و وقت بخیر. بعضی اوقات میخواهیم که یک کار در زمان مشخص انجام شود و یا برنامه ای سر زمان بندی خاص اجرا شود. به این کار automate کردن یک برنامه یا کار گقته میشود. ابزار های مختلفی برای این کار که هر ابزار ویژگی خاص خود را دارد، وجود دارد.

1- استفاده از cron

2- استفاده از at

3- استفاده از Anacron

4- استفاده از batch

System Cron Jobs

هم کاربران عادی سیستم میتوانند برنامه ای تنظیم کنند تا دستورات و کارهایشان طبق یک زمان بندی انجام شود، و هم مدیر سیستم میتواند کارهای سیستم را زمان بندی کند. مدیر سیستم با استفاده از فایل etccrontab و مسیر etccron.d که فایل های درون آن طبق فرمت crontab اجرا میشوند، کارهای سیستم را زمان بندی میکند. 4 پوشه مهم دیگر هم در etc وجود دارد به نام های cron.daily و cron.weekly و cron.monthly و cron.hourly که اسکریپت های داخل آنها در زمان های مشخص شده اجرا میشوند.

فایل crontab را باز کنید و به محتویات درون آن دقت کنید.

[root@centos6 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

[root@centos6 ~]# 

این فایل 7 ستون دارد که هر کدام معنی خاصی دارد. ستون اول دقیقه را مشخص میکند. مثلا اگر 5 باشد یعنی 5 دقیقه از سر ساعت گذشته. ستون دوم ساعت را مشخص میکند. مثلا 20 یعنی ساعت 8 شب. ستون سوم روز را مشخص میکند. مثلا 10 یعنی روز دهم از ماه. ستون چهارم هم ماه را مشخص میکند. مثلا 2 باشد یعنی فوریه. ستون پنجم هم هم روز هفته را مشخص میکند. روز های هفته از دوشنبه شروع میشوند. به معنی همه است. مثلا اگر ستون ماه بود یعنی هر ماه. ستون بعدی نام کاربری است که این برنامه را اجرا میکند. ستون آخر هم مسیر فایلی است که میخواهیم اجرا شود.

برای کاربران عادی فایل های cron در مسیر varspoolcroncrontabs قرار دارند. کاربر با دستور crontab -e میتواند یک job جدید درست کند. بعد از وارد کردن دستور صفحه ای مانند vim باز میشود. این صفحه خالی باید با فرمت فایل crontab پر شود ولی 6 ستون دارد نه 7 تا. دیگه نام کاربر لازم نیست. چون مشخص دیگه. هر کاربر این دستور رو بزنه مشخص برای کی داره نوشته میشه. مثلا اطلاعات زیر رو وارد میکنیم.

*/5 8-16 8 8 1 ls /tmp

ستون اول 2 تا کاراکتر رو ترکیب کردم یعنی هر 5 دقیقه. اگه 5 خالی میذاشتم فقط سر 5 دقیقه از ساعت گذشته اجرا میشد. این خاصیت رو با استفاده از * ایجاد کردم. ستون بعدی یعنی از ساعن 8 صبح تا 4 بعد از ظهر. ستون بعدی یه ستاره گذاشتم یعنی هر روز از ماه . ستون بعدش هم ستاره یعنی هر ماه. ستون بعدش هم 1 یعنی روز اول هفته یعنی دوشنیه. پس هر 5 دقیقیه ساعت 8 تا 16 روز دوشنبه توی کل سال این برنامه اجرا میشه. حالا آدرس برنامه ندادم. گفتم واسه مسیر tmp/ دستور ls رو اجرا کن.

با دستور crontab و سویچ l- لیست job ها رو میبینید و با سویچ r- میتونید پاکشون کنید.

[mohammad@centos6 ~]$ crontab -l
*/5 8-16 * * 1 ls /tmp
[mohammad@centos6 ~]$ crontab -r
[mohammad@centos6 ~]$ crontab -l
no crontab for mohammad
[mohammad@centos6 ~]$ 

میتونید دستوراتی که میخواین اجرا بشن رو توی یک فایل بنویسید و آدرسشو در ستون آخر وارد کنید، که معمولا همین کار رو میکنن.

برای مثال اگر بخوام از سیستم backup بگیرم میشه بصورت زیر انجامش داد.

[root@centos6 ~]# cd /etc/cron.d/
[root@centos6 cron.d]# vim daily-backup
[root@centos6 cron.d]# cat daily-backup
30 20 * * 1-5 root /root/backup.sh
[root@centos6 cron.d]# ls
0hourly  daily-backup  raid-check  sysstat
[root@centos6 cron.d]# 
[root@centos6 cron.d]# 

توی فایل backup.sh دستورات مربوط به پشتیبان گیری نوشته میشه. حالا این مثال فقط با دسترسی کاربر ارشد بود. با کاربر معمولی میتونید دستورات رو توی یه فایل مثلا در home directory خودتون ذخیره کنید و بعدش با دستور crontab و سویچ e- زمان بندی دلخواهتون رو تنظیم کنید و در ستون آخر آدرس اون فایل برنامتون رو بدید.

Anacron

دیدیم که با cron میتوان طبق یک زمان بندی دستورانی را اجرا کرد. اما اگر سیستم خاموش شود، دیگر سیستمی برای چک کردن کارهایی که باید انجام میشد ولی انجام نشده ، وجود ندارد و سیستم تا زمان مقرر بعدی صبر میکند تا دوباره طبق زمان بعدی کار ها را انجام دهد. در صورتی که با Anacron میتوان مشخص کرد که چند دقیقه بعد از روشن شدن سیستم بررسی کند چه تعداد از کار هایی که باید انجام میشد، انجام شده یا نشده.

فایل کانفیگ Anacron در مسیر زیر وجود دارد.

[root@centos6 ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly
[root@centos6 ~]# 

ستون اول period نام دارد. اگر عدد 1 باشد ینی هر روز، اگر عدد 7 باشد یعنی هقتگی و اگر 30 باشد یعنی ماهانه. میتوان از کلماتی مثل monthly@ هم استفاده کرد. سوت دوم delay نام دارد یعنی چند دقیقه بعد از روشن شدن سیستم صبر کند. ستون سوم job identifier است. این ستون اصطلاحا آدرس فایل timestamp را مشخص میکند که در مسیر varspool قرار دارد. برای هر job این فایل باید یکتا باشد. درون این فایل های timestamp رشته ای وجود دارد که نشان میدهد آخرین بار چه موقع job انجام شده. ستون چهارم هم مسیر فایل که باید اجرا شود را مشخص میکند.

[root@centos6 ~]# ls /var/spool/anacron/
cron.daily  cron.monthly  cron.weekly
[root@centos6 ~]# cat /var/spool/anacron/cron.daily 
20160826
[root@centos6 ~]# cat /var/spool/anacron/cron.monthly 
20160727
[root@centos6 ~]# cat /var/spool/anacron/cron.weekly 
20160825
[root@centos6 ~]#

برای مثال اگر خط زیر را در anacrontab وارد کنیم یعنی هر هفته برنامه ای که بهت دادم رو اجرا کن و اگر سیستم خاموش بود و اجرا نشد 15 دقیقه بعد از روشن شدن سیستم چک کن ببین اجرا شده یا نه اگر اجرا نشذه بود همین الان اجراش کن.

7       15      test.daily      /home/mohammad/backup.sh

خوب حالا اگه سیستم روشن باشه چی ؟؟ کی باید این برنامه اجرا بشه ؟؟

[root@centos6 ~]# grep START /etc/anacrontab
START_HOURS_RANGE=3-22
[root@centos6 ~]# 

اینکه کی برنامه اجرا بشه توسط متغیر بالا در فایل کانفیگ anacron مشخص میشه. معنی این خط میشه از 3 بامداد تا 10 شب. میتونید زمان دلخواه خودتون رو بهش بدبد. شکل زیر رو از یه سایت خارجی پیدا کردم. تفاوت cron و Anacron رو گفته. خیلی قشنگ نوشته. فک نمیکنم احتیاج به ترجمه و یا توضیح اضافه من باشه.

آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch

At و Batch

این دو دستور خیلی جالبن. بصورت پیش فرض at نصب نیست. ( واسه من که نبود ) با دستور yum install at نصبش کنید. کار کردن با این 2 تا دستور خیلی راحته. فقط مینویسید at سپس زمان مورد نظر. بعدش شکل prompt عوض میشه و میتونید دستورات رو وارد کنید. آخرش هم با کنترل d خارج میشه. با دستور atq لیست job هایی که قراره اجرا بشه رو میشه دید. اون عدد اولش شماره شناسایی اون job هستش. اولش هیچی توی job نبود. بعدش یه خط دستور نوشتم. واسه دستور at حتی چیزی مثل at noon tomorrow هم قابل قبوله. با دستور atrm و شماره job میتونید پاکش کنید.

[root@centos6 ~]# 
[root@centos6 ~]# atq
[root@centos6 ~]# at 11 am tomorrow
at> ls /etc/ > ~/file_at
at> <EOT>
job 1 at 2016-08-27 11:00
[root@centos6 ~]# atq
1	2016-08-27 11:00 a root
[root@centos6 ~]# at 3 pm 23 dec
at> rm -rf ~/sile.txt
at> <EOT>
job 2 at 2016-12-23 15:00
[root@centos6 ~]# atq
2	2016-12-23 15:00 a root
1	2016-08-27 11:00 a root
[root@centos6 ~]# atrm 1
[root@centos6 ~]# atrm 2
[root@centos6 ~]# atq
[root@centos6 ~]# 
[root@centos6 ~]# 

دستور batch هم دقیقا مث at میمونه فقط با یک تفاوت. زمانی اجرا میشه که load average سیستم کمتر از 0.8 باشه. برای دستور batch دیگه زمان و تاریخ مشخص نمیکنیم. به محض اینکه load average سیستم کمتر از 0.8 بشه دستورات اجرا میشن.

[root@centos6 ~]# batch
at> ls /boot > ~/boot_file
at> <EOT>
job 3 at 2016-08-26 21:26
[root@centos6 ~]# atq
[root@centos6 ~]# 
[root@centos6 ~]# cat ~/boot_file
config-2.6.32-279.el6.i686
efi
elf-memtest86+-4.10
grub
initramfs-2.6.32-279.el6.i686.img
lost+found
memtest86+-4.10
symvers-2.6.32-279.el6.i686.gz
System.map-2.6.32-279.el6.i686
vmlinuz-2.6.32-279.el6.i686
[root@centos6 ~]# 
[root@centos6 ~]# 
[root@centos6 ~]# uptime
 21:27:49 up 1 day,  1:16,  3 users,  load average: 0.00, 0.00, 0.00
[root@centos6 ~]# 
[root@centos6 ~]# 

با توضیحاتی که گفتیم دستورات بالا کاملا واضحن !! چون تقریبا ، تقریبا که نه ، دقیقا انگار هیچ لودی روی سیستم من نیست، دستوری که به batch دادم اجرا شد بلافاصله. دستورات batch هم مثل at با atq و atrm مدیریت میشن.

ضمیمه

در حالت عادی هر کسی میتونه برای خودش از دستورات at و cron استفاده کنه. برای اینکه این دستورات رو برای کاربران محدود کنیم میتونیم 2 دسته فایل به اسم های زیر درست کنیم.

/etc/cron.allow or /etc/at.allow

/etc/cron.deny or /etc/at.deny

اگر فایل های نوع اول رو درست کنیم، فقط کسانی که اسمشون توی لیسته میتونن از دستورات استفاده کنن و بقیه نمیتونن.

اگر فایل های نوع دوم رو درست کنیم، فقط کسانی که اسمشون توی لیسته نمیتونن از دستورات استفاده کنن و بقیه میتونن.

بسیار خوب. این بخش هم به پایان رسید. اولش میخواستم این 4 تا package رو تو 4 قسمت بگم ولی گغتم تو یه قسمت جمش کنم بهتره. امیدوارم خسته نشده باشید و مفید بوده باشه. اگر نظری، پیشنهادی یا انتقادی دارید کامنت بذارید یا پیام خصوصی بفرستید، خوشحال میشم. تا قسمت بعدی.

نویسنده : سید محمد باقر موسوی

منبع : جزیره لینوکس و سیستم های متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#دوره_آموزشی_linux_فارسی #نوشتن_shell_script_در_لینوکس #آموزش_لینوکس_فارسی #آموزش_linux_مقدماتی #آموزش_shell_scripting #آموزش_دستورات_مقدماتی_لینوکس #آموزش_shell_scripting_در_لینوکس #دوره_آموزشی_shell_scripting_در_لینوکس #نوشتن_یک_shell_script_ساده
عنوان
1 آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها رایگان
2 آموزش لینوکس : مدیریت سیستم قسمت 2 : Shell سفارشی : تنظیمات Shell رایگان
3 آموزش لینوکس : مدیریت سیستم : قسمت 3 : Shell سفارشی : Aliases رایگان
4 آموزش لینوکس : مدیریت سیستم : قسمت 4: Shell سفارشی: Login Scripts رایگان
5 آموزش لینوکس : مدیریت سیستم : قسمت 5 : ایجاد اسکریپت رایگان
6 آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input رایگان
7 آموزش لینوکس : مدیریت سیستم : قسمت 6 : IF Statement رایگان
8 آموزش لینوکس : مدیریت سیستم : قسمت 7 : Case Statement رایگان
9 آموزش لینوکس : مدیریت سیستم : قسمت 8 : Loops رایگان
10 آموزش لینوکس : مدیریت سیستم : قسمت 9 : Managing Users رایگان
11 آموزش لینوکس : مدیریت سیستم : قسمت 10 : Managing Groups رایگان
12 آموزش لینوکس : مدیریت سیستم : قسمت 11 : ارتباط با اکتیودایرکتوری رایگان
13 آموزش لینوکس : مدیریت سیستم : قسمت 12 : OpenLDAP رایگان
14 آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch رایگان
15 آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....