воскресенье, 9 января 2011 г.

Настраиваем планировщик заданий cron

cron -  это планировщик задач, использующийся для периодического выполнения заданий в заданное время. Он уже встроен в DD-WRT, но там все сценарии можно вносить только через веб морду, а при использовании  optware нам будет удобнее настроить его запуск и некоторые параметры "под себя"

Отключаем его в вебморде,  заходим в раздел Administration/Management и там выбираем Disable рядом с пунктом Cron, а потом нажимаем Apply Settings


Создаем директорию для crontabs
mkdir /etc/crontabs
и создаем скрипт, который будет загружать cron при запуске роутера
vi /opt/etc/init.d/S10cron
нажимаем [Insert], а потом добавляем туда следующие строки:
source /mnt/root/.profile
kill -9 $(pidof crond)
/opt/usr/sbin/crond

 потом нажимаем [Esc] и ":"  затем "w" и затем "q"  (как работать с редактором vi вы можете прочитать тут)


 Делаем наш скрипт запуска cron при загрузке исполняемым:
chmod a+x /opt/etc/init.d/S10cron

Создаем несколько каталогов, чтобы не редактировать потом каждый раз crontab. Достаточно будет потом поместить скрипт в нужную папку и он будет выполнятся в установленный нами промежуток времени (названия папок говорят сами за себя )

mkdir /opt/etc/cron.5mins
mkdir /opt/etc/cron.hourly
mkdir /opt/etc/cron.daily
mkdir /opt/etc/cron.weekly
mkdir /opt/etc/cron.monthly


создаем скрипт run-parts
vi /opt/bin/run-parts
c таким содержимым:
#!/bin/sh
#
# runparts.sh by macsat@macsat.com
# intended for use with cron
#
# based on rc.unslung by unslung guys :-)
#
if [ -z "$1" ]
then
echo "Usage : $0 "
fi

RUNDIR=$1"/*"

for i in $RUNDIR ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done


и делаем его исполняемым
chmod +x /opt/bin/run-parts
после этого наконец то запускаем cron
/opt/etc/init.d/S10cron
и настраиваем файл заданий  crontabs
crontab -e
нажимаем [Insert], а потом добавляем туда следующие строки:
 */5 * * * *  run-parts /opt/etc/cron.5mins
01 * * * * run-parts /opt/etc/cron.hourly
02 4 * * *  run-parts /opt/etc/cron.daily
22 4 * * 0  run-parts /opt/etc/cron.weekly
42 4 1 * *  run-parts /opt/etc/cron.monthly 


потом нажимаем [Esc] и ":"  затем "w" и затем "q"  (и тут тоже vi :)

посмотреть наше расписание можно командой
crontab -l

Теперь для чистоты эксперимента перезапускаем роутер
reboot
и пользуемся настроенным cron


ЗЫ:  на всякий случай приведу  периодичность запуска скриптов из каждой созданных нами папok:
cron.5mins - каждые 5 минут
cron.hourly - каждый час
cron.daily - ежедневно
cron.weekly - еженедельно
cron.monthly - ежемесячно
 и не забывайте каждый  скрипт, положенный в них делать исполняемым командой chmod a+x

Комментариев нет:

Отправить комментарий