Ответы:
В 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
говорит: *
Если служба запрашивается под определенным именем, но файл конфигурации модуля не найден, systemd ищет сценарий инициализации SysV с тем же именем ... и динамически создает модуль службы из этого сценария. Это полезно для совместимости с SysV. Обратите внимание, что эта совместимость довольно полная, но не на 100%.
Это проще, чем вы думаете. (-:
Вот новый и предпочтительный способ установки программ загрузки или завершения работы.
С systemd
вами первым хотим создать блок файл . Единичный файл - это в основном объявления, а не код.
Затем вы будете использовать systemctl
команду, чтобы включить или запустить этот модуль.
systemd
выполняет большую часть работы за вас, упрощая, например, автоматический запуск критически важной программы в случае сбоя или иного уничтожения. Также он закрывает вашу программу, где и когда она должна по умолчанию, без дополнительной работы с вашей стороны.
Начните узнавать systemd
здесь:
Из Debian и в других местах и т. Д. И т . П.
Справочные страницы для начала:
man systemd.unit
- О файлах модуля в целом.
man systemd.service
- О файлах модуля обслуживания, например, демонах и программах одиночного запуска.
man systemctl
- Интерфейс пользователя командной строки
man journalctl
- Просмотр журнала того, что сделал systemd
man 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
Вот что находится в файле модуля:
# Comments can only go at the beginning of the line!
[Unit]
Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST
[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking
# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2
# Be in no hurry to start this. Max nice is +19.
Nice=15
# If it dies for any reason, then restart it
Restart=always
[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target
Запустите файл модуля вручную (например, для тестирования):
$ sudo systemctl start noip2
. $ sudo systemctl restart noip2
. $ sudo systemctl stop noip2
. Сконфигурируйте систему для автоматического запуска файла модуля при запуске или завершении работы:
$ sudo systemctl enable noip2
. $ sudo systemctl disable noip2
.Посмотреть журнал
$ sudo journalctl -u noip2