Настройка домашнего сервера Linux (Часть 4)
Startup-scripts
В файл pre-boot:vi /usr/local/sbin/pre-bootПоместить содержимое:
#! /bin/shВ следующий файл поместить содержимое, что позволит оставить файловую систему чистой:
vi /usr/local/sbin/pre-mountС этим содержимым:
#! /bin/sh swapon -a for i in `awk '/ext3/{print($1)}' /etc/fstab` ; do if [ -b $i ] ; then grep -q $i /proc/mounts || e2fsck -p $i 2>&1 | logger -t e2fsck else logger -t fstab "$i is not attached" fi done
pre-mount выполнит команду e2fsck если это необходимо. Однако это может занять значительное количество времени. Можно оставить pre-mount пустым, чтобы не допустить этого, но файловая система должна проверяться время от времени во избежания ошибок.
В файл post-mount:
vi /usr/local/sbin/post-mountПоместить содержимое:
#! /bin/sh /opt/etc/init.d/rc.unslung startВ файл pre-shutdown, который выполняется перед выключением:
vi /usr/local/sbin/pre-shutdownПоместить содержимое:
#! /bin/sh /opt/etc/init.d/rc.unslung stop sleep 10s for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do mount -oremount,ro $i done swapoff -a sleep 1sЭтот сценарий останавливает все запущенные службы, а так же помечает все разделы как доступные только для чтения. Что бы предотвратить потери данных при выключении питания.
Теперь нужно пометить файлы как выполняемые:
chmod +x /usr/local/sbin/*Далее выполнить перезагрузку:
flashfs save && flashfs commit && flashfs enable && rebootПосле проверяем командой df раздел swap и разделы с данными. Если все так, то продолжаем.
Далее нужно создать папку etc для хранения конфигурационных файлов и init.d внури etc для автоматического старта сервисов, так же создать файл rc.unslung который будет автоматически запускать сервисы при запуске системы.
mkdir /opt/etc mkdir /opt/etc/init.d vi /opt/etc/init.d/rc.unslungСодержимое:
#! /bin/sh # Start/stop all init scripts in /opt/etc/init.d # starting them in numerical order and # stopping them in reverse numerical order # if [ $# -ne 1 ]; then printf "Usage: $0 {start|stop}\n" >&2 exit 1 fi daemons=`echo $(/usr/bin/dirname $0)/S??*` [ $1 = "stop" ] && daemons=`echo $daemons | /usr/bin/tr " " "\n" | /usr/bin/sort -r` for i in $daemons; do # Ignore dangling symlinks (if any). [ ! -f "$i" ] && continue # Write to syslog logger -t rc.unslung "$1 service $i" case "$i" in *.sh) # Source shell script for speed. ( trap - INT QUIT TSTP set $1 . $i ) ;; *) # No sh extension, so fork subprocess. $i $1 ;; esac doneСделать выполняемым файл:
chmod +x /opt/etc/init.d/rc.unslung
Прочли: 5372 | Изменено: 08 июля 2011 | Добавлено: 24 апреля 2011 | На главную