Відповіді:
У 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 , а потім двозначним номером, який визначає порядок запуску цих сценаріїв, а потім ім'я. Він буде викликаний параметром "стоп", але ви можете проігнорувати це для простого сценарію зупинки.
Для запуску подивіться на це .
Для вимкнення створіть посилання / скопіюйте свій скрипт в одну з папок /etc/rcX.d, де X - рівень запуску, на якому ви хочете його виконати. 0 - це рівень запуску для Debian, я вважаю.
Найпростіше - це змінити існуючі сценарії, працює в моїй системі, використовується для звуків :)
/etc/init.d/rc.local
, додавання вашого sh в кінці файлу, перед:/etc/init.d/halt
, додайте ваш sh на початку файлу, відразу після первинних коментарів (він буде виконаний перед фактичною командою shutdown, що викликається цим файлом сценарію/etc/init.d/reboot
З часів Дебіана Джессі, стару init
програму замінили systemd
!
Перевірте самі. Виконати: ls -l /sbin/init
і подивитися, на що він вказує. У наші дні це вказує на systemd
( /sbin/init -> /lib/systemd/systemd
), нову та кращу програму ініціалізації.
Тож ХОЗЕН І ІНШІ ВІДПОВІДИ ТУТ НЕ ЗАРЕЖЕНО !!!
* Хоча ви все ще можете встановити сценарії старим способом за допомогою інструментів System-V, загалом це не дуже добре.
man systemd.service
каже: *
Якщо сервіс запитується під певним іменем, але файл конфігурації одиниці не знайдено, systemd шукає сценарій init SysV з тим самим іменем ... і динамічно створює сервісний блок із цього сценарію. Це корисно для сумісності з SysV. Зауважте, що ця сумісність досить всебічна, але не на 100%.
Це простіше, ніж ти думаєш. (-:
Ось новий і бажаний метод встановлення програм завантаження або відключення.
З systemd
вами першим хочемо створити блок файл . Файл одиниці - це переважно декларації, а не код.
Тоді ви скористаєтесь systemctl
командою для включення або запуску цього блоку.
systemd
робить велику роботу для вас, полегшуючи, наприклад, критичну програму автоматично перезапустити, якщо вона виходить з ладу або вбита іншим чином. Крім того, він вимикає вашу програму, де і коли вона повинна бути за замовчуванням без зайвих робіт з вашого боку.
Почніть дізнаватися systemd
тут:
З Debian і в інших місцях і т.д. і т.п. .
Сторінки, що починаються з:
man systemd.unit
- Про файли одиниць взагалі
man systemd.service
- Про файли сервісних одиниць, наприклад демони та програми одноразового запуску.
man systemctl
- Інтерфейс користувача командного рядка
man journalctl
- Перегляд журналу того, що зроблено systemd
man systemd
- Про саму програму init
Існує також безліч інших типів файлів одиниць, наприклад
man systemd.target
- для груп та загальних синхронізованих цілей.
Після того, як ви засвоїли основи вище, тоді виконайте man -k systemd
пошук, щоб знайти інші пов’язані сторінки.
Що б ви не робили, на Debian не використовуйте нічого з цього :
update-rc.d
- встановіть та видаліть посилання на скрипт у стилі System-Vsysv-rc-conf
- Конфігурація рівня запуску для посилань сценарію init як SysVrunlevel
- Друкувати попередній та поточний рівень запуску SysVBUM
- B oot U p M anager - графічний редактор програмного рівняsystemadm
- Графічний інтерфейс для системного менеджера та системного менеджера Цей одиничний файл запускає демон NoIP.com під час завантаження, і вимикає його при закритті.
Цей демон час від часу надсилає мою поточну IP-адресу для оновлення бази даних провайдера DDNS ( D ynamic 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