Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:создание_скрипта_автозапуска [2009/05/25 14:31] |
wiki:создание_скрипта_автозапуска [2014/11/22 11:07] (текущий) [Выполнение скрипта при включении/отключении сети] |
||
---|---|---|---|
Строка 7: | Строка 7: | ||
<code>#!/bin/sh</code> | <code>#!/bin/sh</code> | ||
- | Данная строка указывает какую командную оболочку необходимо использовать. Дальше свои команды. | + | Данная строка указывает, какую командную оболочку необходимо использовать. Дальше свои команды. |
Сохраним его под оригинальным названием (чтоб не совпадал с уже существующими) в каталоге /usr/sbin/. | Сохраним его под оригинальным названием (чтоб не совпадал с уже существующими) в каталоге /usr/sbin/. | ||
- | Чтобы скрипт запускался при загрузке необходимо прописать его в файле /etc/rc.local до строчки exit 0. Если у вас не существует данного файла создайте его и вставьте в него следующее содержимое: | + | Чтобы скрипт запускался при загрузке, необходимо прописать его в файле /etc/rc.local до строчки exit 0. Если у вас не существует данного файла, создайте его и вставьте в него следующее содержимое: |
<code>#!/bin/sh -e | <code>#!/bin/sh -e | ||
#Здесь вставляем строку с указанием вашего скрипта. | #Здесь вставляем строку с указанием вашего скрипта. | ||
/usr/sbin/mescripts | /usr/sbin/mescripts | ||
exit 0</code> | exit 0</code> | ||
+ | |||
+ | ===== Немного более сложный способ ===== | ||
+ | |||
+ | Позволяет задать последовательность загрузки и поведение скрипта при разных runlevel'ах. | ||
+ | |||
+ | Изучаем ''/etc/init.d/skeleton'', на его основе создаем скрипт ''/etc/init.d/my_script'', которым будет запускаться/останавливаться наше приложение. | ||
+ | |||
+ | В этих директориях лежат скрипты остановки сервисов: | ||
+ | /etc/rc0.d/ /etc/rc1.d/ /etc/rc6.d/ | ||
+ | в этих — скрипты запуска сервисов: | ||
+ | /etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/ | ||
+ | |||
+ | Изучаем их на предмет последовательности (чем меньше первая цифра в начале скрипта, тем раньше запускается/останавливается приложение). Это может быть критично, если ваше приложение будет зависит от каких-то сервисов. | ||
+ | |||
+ | После того, как определились со скриптом запуска и очередностью, выполняем следующее : | ||
+ | <code>sudo update-rc.d my_script start 70 2 3 4 5 . stop 20 0 1 6 .</code> | ||
+ | Здесь я определил, что мой скриптик должен запускаться попозже остальных(70), и останавливаться пораньше(20). Цифры 2 3 4 5 0 1 6 означают уровни загрузки. | ||
+ | |||
+ | Если что-то не понравилось — все можно удалить | ||
+ | <code>sudo update-rc.d -f my_script remove</code> | ||
+ | |||
+ | Подробности в ''man update-rc.d''. | ||
+ | |||
+ | ====== Выполнение скрипта при включении/отключении сети ====== | ||
+ | |||
+ | Есть директория ''/etc/network/'' с поддиректориями ''if-down.d'', ''if-pre-up.d'', ''if-post-down.d'', ''if-up.d''. Если разместить скрипт в одной из этих поддиректорий, то он будет выполняться соответственно при выключении, перед включением, после выключения или при включении сети. | ||
+ | |||
+ | Другой способ — указать в файле ''/etc/network/interfaces'' одну из следующих директив: ''up'', ''pre-up'', ''post-up'', ''down'', ''pre-down'', ''post-down''. Например, строка | ||
+ | <code>post-up /path/to/script.sh</code> | ||
+ | после включения сети выполнит скрипт //script.sh//. Подробнее можно почитать в ''man interfaces''. | ||
+ | |||
+ | В любом случае на скрипт должны быть установлены права, разрешающие выполнение, иначе он не сможет запуститься. | ||
+ | |||
+ | ====== Ссылки ====== | ||
+ | * [[http://forum.ubuntu.ru/index.php?topic=5755.msg44237|автозагрузка в ubuntu server ]] — оригинальная статья на форуме | ||
{{tag>Скрипты tips}} | {{tag>Скрипты tips}} |