TAHA
06-28-2010, 11:02 PM
anacron را میتوان برای اجرای دستورات بصورت دوره ای استفاده کرد که این فواصل به روز تعیین می شوند.برخلاف cron , تصور نمی کند که دستگاه ۲۴ ساعت بطور مستمر روشن است.از این رو آن را میتوان در دستگاههایی که ۲۴ ساعت روشن نیستند برای کنترل jobهای روزانه هفتگی و ماهانه که بطور معمول با cron صورت میگیرد استفاده کرد.
بنابراین درanacronموضوع اصلی اجرا شدن jobهاست نه اجرا شدن اونها سر ساعت و دقیقه تعیین شده همانند cron
برای استفاده از anacron می بایست بسته ی مربوط نصب و سپس سرویس anacron را اجرا کرد
apt-get install anacron
/etc/init.d/anacron stop/start/restart
تنظیم کردن وظایف anacron :
(tasks)وظایف anacron در فایل etc/anacrontab/ لیست شده است.هر خط در این فایل تنظیمات مربوط به یک وظیفه و بدین ترتیب نوشته شده اند :
Period Delay Job-identifier Command
period :
عدد روزهایی که باید بین اجرای دستورات طی بشود مثلا ۹ یعنی دستور هر از ۹ روز یکبار اجرا میشود یا ۷ برای اجرای هفتگی است.
delay :
برای هر anacron , job بررسی میکند که آیا این دستور در (n(n=periodروز گذشته اجرا شده است یا نه.اگر نه anacron اجرا میکند job's shell command , بعد از اینکه برای تعداد دقیقه هایی که در delay مشخص شده صبر کرد.
Job-identifer :
شناسه ایست که باید بین تمامی کاربرها واحد باشد .این بدین معناست که کابرها نمی توانند از اسمی که قبلا توسط خودشان یا دیگران اتفاده شده بهره برنند زیرا بر روی فایل timestamp واقع در*/var/spool/anacron/ دو باره نوشته می شود و خلل در کار job پیشین بوجو میآید یا ممکن است با خطای عدم دسترسی مواجه و anacron اجرا نشود.
برای جلوگیری از هرگونه بروز خطا توصیه میشود قبل از هر کار نام فایل های موجود در دایرکتوری */var/spool/anacron/ بررسی شود.
command :
دستوراتی که خواهان اجرای اون هستید.
وقتی anacron یک job را برای دفعه اول اجرا میکند فایلی همنام با job-identifer را در /var/spool/anacron/ میسازد که محتوای فایل تاریخ اجرای job است (نه ساعت).اصطلاحه به این فایل timestamp گفته میشود. بعد از اجرای مجدد این job دوباره با تاریخ بازنویسی می شود.این محتوای یکی از این فایل هاست :
۲۰۰۷۰۳۲۲
پس فایل timestamp آخرین تاریخ اجرای job را ثبت میکند در این فرمت
"yyyymmdd"
anacrontab پیش فرض :
# /etc/anacrontab: configuration file for anacron
# See anacron(۸) and anacrontab(۵) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
۱ ۵ cron.daily nice run-parts –report /etc/cron.daily
۷ ۱۰ cron.weekly nice run-parts –report /etc/cron.weekly
@monthly ۱۵ cron.monthly nice run-parts –report /etc/cron.monthly
متغیرهای محیطی همچون SHELL و PATH را در بالای فایل etc/anacrontab/ میتوانید تنظیم کنید,چنانکه در cron هم تنظیم میکریدم.
برای period میتوانیم هم از اعداد برای نشان دادن دوره ی اجرای دستور استفاده کنیم هم از نشانه هایی مانند زیر
@daily
@weekly
@monthly
مثال :
@daily ۱ Hi.reza echo "hi,how are u today?" >> /reza/hi
در این مثال هر روز با تاخییر یک دقیقه ای جمله ی hi,how are u today? به انتهای فایل reza/hi/ افزوده میشود
کاربر عادی در حالت پیش فرض قادر بعه استفاده از anacron نیست به یک دلیل ساده , چونکه اجازه ساخت فایل timestamp را در دایرکتوری var/spool/anacron/ ندارد
برای حل این مشکل بدون اینکه مشکل جدیدتری بوجود آید بدین ترتیب عمل میکنیم :
۱- یک گروه میسازیم و کاربرها را به آن اضافه میکنیم
برای انجام اینکار از groupadd یا addgroup میتوانید استفاده کنید همچنین مستقما در فایل etc/group/ در ضورتیکه میدانید چکاری انجام میدهید
groupadd anacron
or
addgroup anacron
حالا شما یک گروه بدون کاربر دارین که باید کاربران مورد نظرتون را به این گروه اضافه نمایید
adduser reza anacron
۲-مجوز مالکیت var/spool/anacron/ را تغییر میدهیم
برای تغییر ماکیت حتما باید با کاربر root وارد شده باشید
chown root.anacron /var/spool/anacron
chmod g+w /var/spool/anacron
خوب حالا شما عضو گروه anacron هستید و مجوز نوشتن را در دایرکتوری مربوطه دارید
۳-برای ادامه کار باید فایل anacron خودتون رو درست کنید
فایل anacrontab را به یک جایی در دایرکتوری خانه خودتان مثلا HOME/etc/anacrontab/ کپی کنید و طبق آموزش های بالا فایل را تنظیم کنید
۴- anacron یک daemon نیست و فقط هنگام بالا اومدن سیستم برای کاربر root اجرا میشود پس باید برای خودتان هم اجرا کنید
بدین ترتیب عمل میکنیم echo anacron -t $HOME/etc/anacrontab >> .bashrc
echo anacron -t $HOME/etc/anacrontab >> .bash_profile
بنابراین درanacronموضوع اصلی اجرا شدن jobهاست نه اجرا شدن اونها سر ساعت و دقیقه تعیین شده همانند cron
برای استفاده از anacron می بایست بسته ی مربوط نصب و سپس سرویس anacron را اجرا کرد
apt-get install anacron
/etc/init.d/anacron stop/start/restart
تنظیم کردن وظایف anacron :
(tasks)وظایف anacron در فایل etc/anacrontab/ لیست شده است.هر خط در این فایل تنظیمات مربوط به یک وظیفه و بدین ترتیب نوشته شده اند :
Period Delay Job-identifier Command
period :
عدد روزهایی که باید بین اجرای دستورات طی بشود مثلا ۹ یعنی دستور هر از ۹ روز یکبار اجرا میشود یا ۷ برای اجرای هفتگی است.
delay :
برای هر anacron , job بررسی میکند که آیا این دستور در (n(n=periodروز گذشته اجرا شده است یا نه.اگر نه anacron اجرا میکند job's shell command , بعد از اینکه برای تعداد دقیقه هایی که در delay مشخص شده صبر کرد.
Job-identifer :
شناسه ایست که باید بین تمامی کاربرها واحد باشد .این بدین معناست که کابرها نمی توانند از اسمی که قبلا توسط خودشان یا دیگران اتفاده شده بهره برنند زیرا بر روی فایل timestamp واقع در*/var/spool/anacron/ دو باره نوشته می شود و خلل در کار job پیشین بوجو میآید یا ممکن است با خطای عدم دسترسی مواجه و anacron اجرا نشود.
برای جلوگیری از هرگونه بروز خطا توصیه میشود قبل از هر کار نام فایل های موجود در دایرکتوری */var/spool/anacron/ بررسی شود.
command :
دستوراتی که خواهان اجرای اون هستید.
وقتی anacron یک job را برای دفعه اول اجرا میکند فایلی همنام با job-identifer را در /var/spool/anacron/ میسازد که محتوای فایل تاریخ اجرای job است (نه ساعت).اصطلاحه به این فایل timestamp گفته میشود. بعد از اجرای مجدد این job دوباره با تاریخ بازنویسی می شود.این محتوای یکی از این فایل هاست :
۲۰۰۷۰۳۲۲
پس فایل timestamp آخرین تاریخ اجرای job را ثبت میکند در این فرمت
"yyyymmdd"
anacrontab پیش فرض :
# /etc/anacrontab: configuration file for anacron
# See anacron(۸) and anacrontab(۵) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
۱ ۵ cron.daily nice run-parts –report /etc/cron.daily
۷ ۱۰ cron.weekly nice run-parts –report /etc/cron.weekly
@monthly ۱۵ cron.monthly nice run-parts –report /etc/cron.monthly
متغیرهای محیطی همچون SHELL و PATH را در بالای فایل etc/anacrontab/ میتوانید تنظیم کنید,چنانکه در cron هم تنظیم میکریدم.
برای period میتوانیم هم از اعداد برای نشان دادن دوره ی اجرای دستور استفاده کنیم هم از نشانه هایی مانند زیر
@daily
@weekly
@monthly
مثال :
@daily ۱ Hi.reza echo "hi,how are u today?" >> /reza/hi
در این مثال هر روز با تاخییر یک دقیقه ای جمله ی hi,how are u today? به انتهای فایل reza/hi/ افزوده میشود
کاربر عادی در حالت پیش فرض قادر بعه استفاده از anacron نیست به یک دلیل ساده , چونکه اجازه ساخت فایل timestamp را در دایرکتوری var/spool/anacron/ ندارد
برای حل این مشکل بدون اینکه مشکل جدیدتری بوجود آید بدین ترتیب عمل میکنیم :
۱- یک گروه میسازیم و کاربرها را به آن اضافه میکنیم
برای انجام اینکار از groupadd یا addgroup میتوانید استفاده کنید همچنین مستقما در فایل etc/group/ در ضورتیکه میدانید چکاری انجام میدهید
groupadd anacron
or
addgroup anacron
حالا شما یک گروه بدون کاربر دارین که باید کاربران مورد نظرتون را به این گروه اضافه نمایید
adduser reza anacron
۲-مجوز مالکیت var/spool/anacron/ را تغییر میدهیم
برای تغییر ماکیت حتما باید با کاربر root وارد شده باشید
chown root.anacron /var/spool/anacron
chmod g+w /var/spool/anacron
خوب حالا شما عضو گروه anacron هستید و مجوز نوشتن را در دایرکتوری مربوطه دارید
۳-برای ادامه کار باید فایل anacron خودتون رو درست کنید
فایل anacrontab را به یک جایی در دایرکتوری خانه خودتان مثلا HOME/etc/anacrontab/ کپی کنید و طبق آموزش های بالا فایل را تنظیم کنید
۴- anacron یک daemon نیست و فقط هنگام بالا اومدن سیستم برای کاربر root اجرا میشود پس باید برای خودتان هم اجرا کنید
بدین ترتیب عمل میکنیم echo anacron -t $HOME/etc/anacrontab >> .bashrc
echo anacron -t $HOME/etc/anacrontab >> .bash_profile