ما میتوانیم به وسیله Cron job یک برنامه یا دستوری را در یک نقطه از زمان اجرا نماییم (به طور خودکار) ، حالا آن برنامه ما میتواند یک شل اسکریپتی باشد که مثلا سرور را ریبوت کند یا اصلا به جای آن برنامه یک دستور را قرار بدهیم ، مثلا” هر ۷ روز یک بار دستور date که نمایانگر ساعت و. تاریخ هست، اجرا شود … تمامی این ها توسط Cron انجام میشود. سرویس Cron همیشه در Background و به طور دائم اجرا میشود. فایل های من که از جنس Cron است در آدرس /etc/cron.d قرار دارد ، برای فهمیدن این آدرس در سرور خود دستور زیر را در SSH وارد نمایید:

ls -la cron*

سرویس Cron همیشه آدرس های /etc/cron.d و /var/spool/cron/ را بررسی میکند.

نحوه نصب و ایجاد Cronjobs :

crontab -e

نحوه استفاده ازCronjobs :

1 2 3 4 5 /path/to/command arg1 arg2

یا

۱ ۲ ۳ ۴ ۵ /root/script.sh

توضیحات:

۱: دقیقه (۰-۵۹)
۲: ساعت(۰-۲۳)
۳: روز(۰-۳۱)
۴: ماه(۰-۱۲ [۱۲ == December])

5: روز از هفته(۰-۷ )
دستور: /path/to/command – اسکریپت یا دستوری که باید اجرا شود
نمایش تمامیه Crontab jobs :

crontab -l
crontab -u username -l

پاک کردن CronTab Jobs:

crontab -r
crontab -r -u username

محتویات یک فایل /etc/crontab :

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

توضیحات دایرکتوری ها


/etc/crontab file.

تمامی اسکریپت هایی که میخواهیم اجرا شوند در اینجا میگذاریم و نام آنها هم در/etc/cron.d/قرار میگرد

/etc/cron.daily/

تمامی اسکریپت هایی که فقط یک بار در روز اجرا میشوند


/etc/cron.hourly/

تمامی اسکریپت هایی که هر فقط هر ساعت یک بار اجرا میشوند


/etc/cron.monthly/

تمامی اسکریپت هایی که در ماه یک بار اجرا میشوند


/etc/cron.weekly/

تمامی اسکریپت هایی که در هفته یک بار اجرا میشوند

چگونه از این دایرکتوری ها برای اجرای اسکریپت هایمان استفاده کنیم؟

ما میخواهیم اسکریپتی با نام clean.cache که cache را پاک میکند را هر ۱۰ روز یکبار اجرا شود. فایل این اسکریپت را در /etc/cron.daliy/ قرار میدهیم

پس ما یک فایل با این آدرس داریم: /etc/cron.daily/clean.cache که محتویات آن هم به شرح زیر است :

#!/bin/bash
# A sample shell script to clean cached file from lighttpd web server
CROOT=”/tmp/cachelighttpd/”
DAYS=10
LUSER=”lighttpd”
LGROUP=”lighttpd”

# start cleaning
/usr/bin/find ${CROOT} -type f -mtime +${DAYS} | xargs -r /bin/rm

# if directory deleted by some other script just get it back
if [ ! -d $CROOT ]
then
/bin/mkdir -p $CROOT
/bin/chown ${LUSER}:${LGROUP} ${CROOT}
fi

نحوه پشتیبان گیری از Cronjob های ایجاد شده :

crontab -l > /backup/cron/cronjobs.bakup
crontab -u username -l > /backup/cron/cronjobs_username.bakup

Hai trovato utile questa risposta? 104 Utenti hanno trovato utile questa risposta (310 Voti)