Добавил два пакета, которые понравятся любителям порядка на роутере.
loadwatch. Позволяет выполнять определённый процесс только в том случае, если система не сильно нагружена. Если загрузка системы превышает определённые пределы, то процесс приостанавливается до прихода системы в норму.
Пример: резервное копирование /opt в случае простоя системы:
Code:
$ loadwatch -d 10 -h 0.5 -l 0.2 -- /opt/usr/sbin/backup_opt.sh
При этом loadwatch запускает дочерний процесс:
Code:
685 ? S 0:00 dropbear
25684 ? Ss 0:01 \_ dropbear
25685 pts/2 Ss+ 0:00 | \_ -sh
26532 pts/2 S+ 0:00 | \_ loadwatch -d 10 -h 0.5 -l 0.2 -- /opt/usr/sbin/backup_opt.sh
26533 pts/2 T 0:00 | \_ loadwatch -d 10 -h 0.5 -l 0.2 -- /opt/usr/sbin/backup_opt.sh
26534 pts/2 T 0:00 | \_ /bin/sh /opt/usr/sbin/backup_opt.sh
26536 pts/2 T 0:00 | \_ tar -cvzf /tmp/mnt/STORE/backup/optg.20120814.160137.tgz /tmp/mnt/ENTWARE
26537 pts/2 T 0:00 | \_ gzip -f
И посылает ему попеременно сигналы SIGSTOP/SIGCONT при необходимости. В примере loadwatch контролирует загрузку системы каждые 10 секунд и когда system load становится больше 0,5 он "притормаживает" дочерний процесс до того момента, пока system load не понизится до 0,2. Выглядит в работе это так:
Code:
...tar: removing leading '/' from member names
tmp/mnt/ENTWARE/sbin/
tmp/mnt/ENTWARE/sbin/mke2fs
Tue Aug 14 16:01:38 2012: load too high, stopping.
Tue Aug 14 16:04:09 2012: load low, continuing.
tmp/mnt/ENTWARE/sbin/hciconfig
tmp/mnt/ENTWARE/sbin/hcid
tmp/mnt/ENTWARE/sbin/mkfs.ext2
...
Originally Posted by
MercuryV
incron работает отлично, пробовал на конфигах nginx (перечитывать при изменении). Понравилось весьма, теперь хочется и inotify-tools тоже.
inotify-tools. Утилита, позволяющая использовать в скриптах слежение за изменениями в файловой системы. Пример отсюда:
Code:
$ cat ./inotify-watchdog.sh
#!/bin/sh
inotifywait -mrq -e close_write -e moved_to -e create --format \
"%w%f" /var | while read "FILE"
do
if [ -d "$FILE" ]; then
echo directory "$FILE" has changed!
elif [ -f "$FILE" ]; then
echo file "$FILE" has changed!
fi
done
Скрипт "кричит" об изменениях в директории /var. Вместо "крика" вставляйте нужные вам действия, например, перезапуск демонов при изменении конфигов или синхронизация каталогов. Имея в репозитории DropboxAPI, можете написать своего собственного клиента Dropbox для роутера.
Code:
$ inotify-watchdog.sh
file /var/log.samba has changed!
directory /var/run/test has changed!