название в значительной степени подводит итог.
Как добавить startup.sh и shutdown.sh моего серверного приложения в последовательность запуска и завершения работы ОС Debian?
В Debian должны быть размещены сценарии загрузки и завершения работы служб и приложений /etc/init.d/
.
Debian предоставляет пример сценария, /etc/init.d/skeleton
который вы можете изменить по своему вкусу для вашего конкретного приложения.
Как только это на месте, звоните:
# update-rc.d YOURAPP defaults
Чтобы Debian добавил /etc/rc?.d/
символические ссылки для вас.
Если вы предпочитаете меню или графический интерфейс, взгляните на пакет sysv-rc-conf
или ksysv
.
Вы можете вызвать свой скрипт из /etc/rc.local до строки, которая говорит о выходе 0
Что касается закрытия вашего приложения, я бы предложил поместить скрипт в /etc/rc0.d . Вам нужно назвать его заглавной буквой K , а затем двухзначным номером, который указывает порядок выполнения этих скриптов, а затем именем. Он будет вызываться с параметром «stop», но вы можете проигнорировать это для простого сценария остановки.
Для запуска взгляните на это .
Для выключения создайте ссылку / скопируйте ваш скрипт в одну из папок /etc/rcX.d, где X - это уровень запуска, на котором вы хотите, чтобы он выполнялся. 0, я верю, это уровень завершения работы Debian.
источник
Самый простой - изменить существующие скрипты, работает в моей системе, используется для звуков :)
/etc/init.d/rc.local
, добавьте ваш sh в конце файла, перед: (он будет выполнен прямо перед «экраном» входа)/etc/init.d/halt
, добавление вашей sh в начале файла, сразу после начальных комментариев (это будет выполнено перед фактической командой выключения, которая вызывается этим файлом скрипта/etc/init.d/reboot
источник
Начиная с Debian Jessie, старая
init
программа была заменена наsystemd
!Проверьте это сами. Запустите:
ls -l /sbin/init
и посмотрите, на что он указывает. В эти дни это указывает наsystemd
(/sbin/init -> /lib/systemd/systemd
), более новую и лучшую программу инициализации.ТАК ЧТО ВЫБРАННЫЕ И ДРУГИЕ ОТВЕТЫ ЗДЕСЬ СЕЙЧАС УСТАРЕЛИ !!!
* Хотя вы по-прежнему можете устанавливать сценарии по-старому с помощью инструментов System-V, в целом это не очень хорошая идея.
man systemd.service
говорит: *Для более новых систем Debian (например, Jessie, Stretch, Buster и т. Д.)
Это проще, чем вы думаете. (-:
Вот новый и предпочтительный способ установки программ загрузки или завершения работы.
С
systemd
вами первым хотим создать блок файл . Единичный файл - это в основном объявления, а не код.Затем вы будете использовать
systemctl
команду, чтобы включить или запустить этот модуль.systemd
выполняет большую часть работы за вас, упрощая, например, автоматический запуск критически важной программы в случае сбоя или иного уничтожения. Также он закрывает вашу программу, где и когда она должна по умолчанию, без дополнительной работы с вашей стороны.Начните узнавать
systemd
здесь:Из Debian и в других местах и т. Д. И т . П.
Справочные страницы для начала:
man systemd.unit
- О файлах модуля в целом.man systemd.service
- О файлах модуля обслуживания, например, демонах и программах одиночного запуска.man systemctl
- Интерфейс пользователя командной строкиman journalctl
- Просмотр журнала того, что сделал systemdman systemd
- о самой программе инициализацииЕсть также множество других типов файлов модулей, например
man systemd.target
- для групп и общих синхронизированных целей.После того, как вы освоили основы, приведенные выше, перейдите к разделу,
man -k systemd
чтобы найти другие связанные справочные страницы.Что бы вы ни делали, в Debian не используйте ничего из этого :
update-rc.d
- установить и удалить ссылки сценария инициализации в стиле System-Vsysv-rc-conf
- Конфигурация на уровне выполнения для SysV, как ссылки сценариев инициализацииrunlevel
- Печать предыдущего и текущего уровня запуска SysVBUM
- B oot U p M anager - графический редактор уровней запускаsystemadm
- Графический интерфейс для системного и системного менеджера systemd(кстати, автор сказал мне по электронной почте, что он слишком сломан).
ПРИМЕР:
Этот файл модуля запускает демон NoIP.com при загрузке и выключает его при завершении работы.
Этот демон, время от времени, посылает свой текущий IP - адрес , чтобы обновить мой DDNS ( D инамической DNS ( D omain N AME S ERVER)) базы данных провайдера, при этом сохраняя свое доменное имя , указывающий на моем компьютере , где он путешествует.
Этот модуль находится в моей системе в этом файле настроек:
/etc/systemd/system/noip2.service
Вот что находится в файле модуля:
Запустите файл модуля вручную (например, для тестирования):
$ sudo systemctl start noip2
.$ sudo systemctl restart noip2
.$ sudo systemctl stop noip2
.Сконфигурируйте систему для автоматического запуска файла модуля при запуске или завершении работы:
$ sudo systemctl enable noip2
.$ sudo systemctl disable noip2
.Посмотреть журнал
$ sudo journalctl -u noip2
источник