Ответы:
В 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