یک مدیر سیستم ممکن است لازم باشد که اقداماتی تکراری را بطور مرتب انجام دهد. ممکن است زمانی برای انجام این اقدامات تکراری نداشته باشد یا اینکه زمان خود را برای انجام سایر کارهای خود از دست بدهد.
برای حل این مشکلات میتوانید از خودکارسازی امور و نوشتن اسکریپت به آنها استفاده کنید. و به سیستم گنو/لینوکس خود بگویید در زمان مشخص کار مشخصی را انجام دهد.
سه ابزار خودکارسازی وجود دارند، میتوانند هر برنامه، دستور یا اسکریپتی را اجرا نمایند. و هر کدام از این ابزارها روشهای خاص خودشان را دارند.
دستور at:
این دستور میتواند برنامه یا دستور موردنظر شما را در ساعت خاصی اجرا کند. و این دستور تنها میتواند دستور داده شده را یکبار اجرا کند. زمان تعیین شده در این دستور میتواند هر زمانی در آینده باشد که میتوانید ساعت ، دقیقه و حتی تعداد روز را نیز تعیین کنید.
از این دستور میتوانید به دو شکل زیر استفاده کنید:
at [-q letter] [-f file] [-mlv] TIME
at -c job [job…]
دستور batch:
عملکرد این دستور مشابه دستور at میباشد با این تفاوت که این دستور بجای زمان خاص، زمانی اجرا خواهد شد که میزان بار سیستم به زیر ۱٫۵ برسد. نحوه استفاده از این دستور به شکل زیر میباشد:
batch [-V] [-q letter] [-f file] [-mv] [TIME]
دستور cron:
در سیستم های سرور که دائما روشن میباشند وظایف خودکار باید با استفاده از نرم افزار cron اجرا شوند. این برنامه هنگام راه اندازی سیستم اجرا شده و هر دقیقه بررسی میکند که چه دستوری را باید اجرا نماید. دستوراتی را که cron اجرا خواهد کرد، در فایل etc/crontab/ تعریف میشوند.
دستوراتی که در etc/crontab/ وجود دارند، عموما برای وظایف سیستمی استفاده میشوند. بصورت پیشفرض سه وظیفه در این فایل تعریف شده است که هرکدام از آنها اسکریپتهای موجود در دایرکتوریهای خاصی را که قرار است بطور روزانه، هفتگی یا ماهانه اجرا شوند، اجرا میکند. امکان تعریف دستورات و اسکریپتها بصورت جداگانه در فایل etc/crontab/ نیز وجود دارد. در زیر محتویات موجود در یک فایل etc/crontab/ را مشاهده میکنید:
# more /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don’t have to run the `crontab’
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts –report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts –repor
t /etc/cron.daily )
47 6 * * ۷ root test -x /usr/sbin/anacron || ( cd / && run-parts –repor
t /etc/cron.weekly )
52 6 ۱ * * root test -x /usr/sbin/anacron || ( cd / && run-parts –repor
t /etc/cron.monthly
علامت ستاره به معنای هر روز، هفته و ماه میباشد. پس از پنج فیلد نخست در هر خط که به ترتیب شامل دقیفه، ساعت، روز در ماه- ماه و روز در هفته میباشند، نام کاربری که دستور توسط آن اجرا خواهد شد نوشته میشود که در مثال بالا کاربر ریشه میباشد. سپس دستور بهمراه تمام آرگومانها و اطلاعات مورد نیازش برای اجرا نوشته میشود. هنگامی که زمان فعلی با زمان هر یک از ورودیهای این فایل یکسان شوند، آن دستور اجرا خواهد شد. جدول زیر نشان دهنده نحوه نگارش زمان در فایلetc/crontab/ میباشد:
مقادیر مجاز |
نام فیلد |
۰ تا ۵۹۰
|
M یا دقیقه
|
۰ تا ۲۳
|
H یا ساعت |
۱ تا ۳۱
|
Dom یا روز در ماه |
۱ تا ۱۲
|
Mon یا ماه |
۰ تا ۷ که عدد صفر نشان دهنده یکشنبه میباشد.
|
Dow یا روز در هفته |
فایل هایی که در شاخه etc/cron.daily/ قرار دارند- بطور روزانه اجرا خواهند شد.در زیر نمونه ای از محتویات این دایرکتوری را مشاهده میکنید:
# ls -l /etc/cron.daily/
total 56
-rwxr-xr-x 1 root root ۳۱۱ Jun 20 ۲۰۱۰ ۰anacron
-rwxr-xr-x 1 root root 15399 Apr 20 ۲۰۱۲ apt
-rwxr-xr-x 1 root root ۳۱۴ Mar 30 ۲۰۱۲ aptitude
-rwxr-xr-x 1 root root ۵۰۲ Mar 31 ۲۰۱۲ bsdmainutils
-rwxr-xr-x 1 root root ۲۵۶ Apr 13 ۲۰۱۲ dpkg
-rwxr-xr-x 1 root root ۳۷۲ Oct ۵ ۲۰۱۱ logrotate
-rwxr-xr-x 1 root root ۱۳۶۵ Mar 31 ۲۰۱۲ man-db
-rwxr-xr-x 1 root root ۶۰۶ Aug 17 ۲۰۱۱ mlocate
-rwxr-xr-x 1 root root ۲۴۹ Apr ۹ ۲۰۱۲ passwd
-rwxr-xr-x 1 root root ۳۸۳ Apr 25 ۲۰۱۲ samba
-rwxr-xr-x 1 root root ۲۹۴۷ Apr ۲ ۲۰۱۲ standard