http://www.joomla3x.ru/joomla3-templates.html - joomla 3 шаблоны

Linux

Заметки о  Linux

Автозапуск в ubuntu

Автор: GAMER вкл. .

Иногда появляется необходимость написать какой нибудь скрипт, который
бы запускался автоматически при загрузки, выключении или перезагрузки
системы. Upstart в Ubuntu Linux (замена стандартного inittab
присутствующий в классических системах Linux) позволяет решать многие
административные задачи. Например вы никогда не задумывались, как же
запускается демон kdm при загрузки системы? В данной статье я
постараюсь ответить на этот вопрос и попробуем написать скрипт
инициализации сами.
В Ubuntu Linux уровни исполнения находятся в директории /etc/initX.d. Где X номер уровня исполнения.
Ниже приведен полный список с описанием

/etc/rc0.d | уровень исполнения 0 | выполняет скрипт при выключении системы
/etc/rc1.d | уровень исполнения 1 | однопользовательский режим (single user mode) аналогичен Safe Mode в Windows.
/etc/rc2.d | уровень исполнения 2 | многопользовательский режим (multiuser mode)
/etc/rc3.d | уровень исполнения 3 | зарезервированно
/etc/rc4.d | уровень исполнения 4 | зарезервированно
/etc/rc5.d | уровень исполнения 5 | зарезервированно
/etc/rc6.d | уровень исполнения 6 | выполнение при при перезагрузки

Основной скрипт исполнения находится в директории /etc/init.d. Если
посмотреть по ls -la одну из дирректорий (/etc/rcX.d) то можно увидеть
что сами скрипты там не присутствуют, имеются только символический
ссылки на них. Например директория /etc/rc0.d (выключение системы):

ali@server:~# sudo ls -la /etc/rc0.d

где:
K - "убить" процесс, 01 - порядковый номер исполнения (в данном случае
демон kde при выключении системы завершается первым) далее идет имя
скрипта.

Теперь посмотрим другую дирректорию rc2.d (multiuser mode):

ali@server:~# ls -la /etc/rc2.d

В данном случае скрипт kdm, который находится в дирректории /etc/init.d
запускается 13-м, об этом свидетельствует наличия буквы S перед
порядком исполнения скрипта (S - start).

В отличии от многих других классический Linux дистрибьютивов
(Slackware), Ubuntu и Debian использует upstart для запуска скриптов
инициализации. Поэтому не удивляйтесь, если в /etc/ не окажется файла
inittab (его заменили скрипты upstart, которые находятся в
/etc/event.d). Upstart это замена демону init, которая контролирует
процессы и задачи во время загрузки, выключения системы и
непосредственно во время работы.

 

Пример основного скрипта, который будет запускать /etc/rc.firewall при включении компьютера.

ali@server:~# sudo vi /etc/init.d/iptables

#!/bin/bash
IPT="/sbin/iptables"
START="/bin/bash"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
NAME="$0"
N="/etc/init.d/$NAME"

if [ ! -f /etc/rc.firewall ]; then
echo "/etc/rc.firewall does not exist"
exit 0
fi

case "$1" in
start|restart)
echo -n "Starting up iptables firewall..."
$START /etc/rc.firewall
echo "done."
;;
stop)
$IPT -t filter -F
$IPT -t filter -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
echo "done."
exit 0;
;;
*)
echo "Usage: $N {start|restart|stop}" >&2
exit 1
;;
esac

exit 0

Думаю тут все понятно. Если параметры скрипту не указаны, он будет
выводить сообщение Usage: $N {start|restart|stop}. При запуске скрипта
с параметром start, iptables будет загружаться. При запуске с
параметром stop все правила будут потираться.

Осталось отредактировать данный скрипт, чтобы он запускался при
загрузки системы, а при перезагрузке или выключении системы, прекращал
свою работу.

Для этого как говорилось выше достаточно создать символические ссылки
на него в /etc/rc0.d (выключении), /etc/rc1.d /etc/rc2.d
(однопользовательский режим и многопользовательский режим) и /etc/rc6.d
(перезагрузка).

ali@server:~# sudo ln -s /etc/init.d/iptables /etc/rc0.d/K20iptables # завершение скрипта при выключении

Вот и все ;-)
На последок, если вы не хотите заморачиваться с утилитой ln создавая
при этом по одной символическую ссылку, можно вопользоваться утилитой
uptade-rc.d либо более удобной sysv-rc-conf.

В основном взято здесь: http://openkazan.info/node/1531