گنو/لینوکس

چگونه Cron را در لینوکس تنظیم کنیم؟

نوشته شده توسط اروند طباطبایی

Cron job برنامه‌ای برای زمان بندی اجرای دستورات در فاصله های زمانی معین است.مثلا وقتی می‌خواهید یک دستور یا اسکریپت را چند بار در یک زمان خاص( مثلاً هر جمعه) اجرا کنید می‌توانید از Cron job استفاده کنید. این نرم‌افزار یکی از بهترین و مفید ترین نرم‌افزار های سیستم عامل های گنو/لینوکس و شبه یونیکس است. وقتی سرویس Cron در پس زمینه سیستم عامل اجرا می شود، محتویات فایلetc/crontab/ و دایرکتوری های /*.etc/cron/ و همچنین /var/spool/cron/ را چک می کند.

 

دستورات crontab

crontab دستوری است که برای نصب و حذف و لیست کردن جدول ها(فایل های تنظیم cron) و راهبری دیمن cron به کار می رود. هر کاربر می‌تواند جدول های خود را داشته باشد، این فایل‌ها را می‌توانید در var/spool/cron/crontab/ پیدا کنید.بهتر است این فایل‌ها را دستی ویرایش نکنید و از دستور crontab برای تنظیم این سیستم و جدول هایتان استفاده کنید.

 

انواع فایل‌های تنظیم فایل‌های تنظیم

انواع مختلفی از فایل‌های تنظیم Cron وجود دارد.

نوع اول فایل‌هایی هستند که توسط سرویس های سیستم عامل و برنامه‌های مهم که به دسترسی روت نیاز دارند به کار می روند. در این فایل‌ها فیلد ششم(در پایین مثال‌هایی از این فایل‌ها آورده ایم) نام کاربری است که دستور با دسترسی آن جرا خواهد شد. این فیلد به cron اجازه می‌دهد تا دستورات و اسکریپت ها را با دسترسی هر کاربری اجرا کند.

نوع دوم فایل‌ها، فایل‌های تنظیمی هستند که کاربران آن‌ها را با دستور crontab ایجاد می‌کنند و البته مخصوص همان کاربر هستند و دستورات یا اسکریپت هایی که قرار است اجرا کند با دسترسی همان کاربر اجرا خواهد شد. در این فایل‌ها فیلد ششم دستوری است که باید اجرا شود.

 

چگونه می‌توانم cron job های خود را بسازم؟

برای اینکه فایل crontab خود را ویرایش کنید، دستور زیر را در خط فرمان خود اجرا کنید:

$ crontab -e

سینتکس crontab (توضیح فیلد ها)

دو نمونه سینتکس:

۱ ۲ ۳ ۴ ۵ /path/to/command adg1 arg2

۱ ۲ ۳ ۴ ۵ /root/ntp_sync.sh

۱ : دقیقه(۵۹-۰)

۲: ساعت(۲۳-۰)

۳: روز(۳۱-۰)

۴: ماه(۱۲-۰) ماه شماره دوازده دسامبر است!

۵: روز چندم هفته(۷-۰) هفت یا صفر برابر یکشنبه است.

Path/to/command/ آدرس اسکریپت یا دستوری است که می‌خواهید اجرا کنید.

مثال ساده فایل crontab

## run backupscript 5 minutes 1 time ##

*/۵ * * * * /root/backupscript.sh

## Run backupscript daily on 1:00 am ##

۰ ۱ * * * /root/backupscript.sh

## Run backup script monthly on the 1st of month 3:15 am ##

۱۵ ۳ ۱ * * /root/backupscript.sh

چگونه از عملگر ها استفاده کنم؟

Asterisk(*) : این عملگر تمام مقدار های ممکن را در فیلد اعمال می کند، برای مثال اگر این علامت را در فیلد ساعت بگذاریم، در‌واقع گفته‌ایم «هر ساعت» یا اگر در فیلد ماه اعمال شود، برابر است با «هر ماه»

Comma(,) : این علامت لیستی از مقادیر خواهد ساخت. برای مثال: “۱,۲,۳”

Dash(-) : این علامت یک رنج مقدار را تعیین می کند.

Seperator(/) : این علامت برای تعیین این که مثلا هر دو ساعت یک بار اسکریپت اجرا شود به کار می رود. مثلا “۲/* ” به معنای هر دو ساعت است.

استفاده از عبارات معین برای صرفه جویی در وقت

در پنج فیلد اول می‌توانید از هشت عبارت معین استفاده کنید. استفاده از این عبارات نه تنها در وقت شما صرفه جویی می‌کند بلکه فایل‌های crontab تان رو خواناتر می کند.

reboot@ یعنی یک بار هنگام شروع سیستم
yearly@ هر سال یک بار (“* ۱ ۱ ۰ ۰”)
annually@ مانند مورد قبل
monthly@ هر ماه یک بار (“* * ۱ ۰ ۰”)
weekly@ هر هفته یک بار (“۰ * * ۰ ۰”)
daily@ هر روز یک بار (“* * * ۰ ۰”)
midnight@ مانند مورد قبل
hourly@ هر ساعت یک بار (“* * * * ۰”)
#### Run ntpdate command every hour ####

@hourly /path/to/ntpdate

اطلاعات بیشتر درباره etc/crontab/ و دایرکتوری های* /etc/cron.d/

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

فایل etc/crontab/

محتویات این فایل معمولاً شبیه چنین چیزی است:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
۰۱ * * * * root run-parts /etc/cron.hourly
۰۲ ۴ * * * root run-parts /etc/cron.daily
۲۲ ۴ * * ۰ root run-parts /etc/cron.weekly
۴۲ ۴ ۱ * * root run-parts /etc/cron.monthly

ابتدا محیط اجرای برنامه‌ها مشخص شده است.اگر این خط حذف شود، cron از پوسته ی پیشفرض استفاده خواهد کرد(که sh است).اگر مقدار PATH حذف شود، از مقدار پیشفرض استفاده نمی‌شود و هر بار باید از آدرس‌های کامل استفاده کنیم. اگر مقدار HOME حذف شود، cron از دایرکتوری home کاربر استفاده خواهد کرد.

به علاوه cron فایل‌های درون دایرکتوری /etc/cron.d/ را هم می خواند.همانطور که گفته شد معمولاً دیمن های سیستم مانند sysstat فایل‌های cronjab خود را در این دایرکتوری قرار می دهند.اگر کاربر روت باشید شما هم می‌توانید از این دایرکتوری استفاده کنید و اسکریپت های خود را اینجا بگذارید. قسمت run-parts در فایل etc/crontab/ اسکریپت های درون دایرکتوری های معرفی شده را اجرا می کند.

تهیه ی نسخه ی پشتیبان

# crontab -l > /path/to/file

# crontab -u user -l > /path/to/file

 

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه