Создание run-parts для cron'a


Скрипт run-parts позволяет избежать прямого редактирования
файла /etc/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

Приводим /opt/etc/crontab к следующему виду

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin
MAILTO=""
HOME=/

# Syntax for lines is : minute hour day month dayofweek command #

*/5 * * * * admin run-parts /opt/etc/cron.5mins
01 * * * * admin run-parts /opt/etc/cron.hourly
02 4 * * * admin run-parts /opt/etc/cron.daily
22 4 * * 0 admin run-parts /opt/etc/cron.weekly
42 4 1 * * admin run-parts /opt/etc/cron.monthly

И создаем сам запускающий скрипт:

$ nano /opt/bin/run-parts

#!/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

Не забываем:

flashfs save && flashfs commit && flashfs enable && reboot