Чи існує "стандартний" спосіб зробити демона в Debian?


17

Мені потрібно створити демон із програми в Debian. Чи є в Debian такий стандартний інструмент, як "upstart" в Ubuntu? Мені потрібні лише команди start-stop, щоб запустити програму як демон із деякими параметрами та pid-файлом та вбити її за допомогою pid-файлу.

Я подивився на init.d, але, здається, вони призначені для запуску під час завантаження. Я хочу розпочати свій демон вручну.


2
Зауважте, що це змінилося для debian jessie, який перейшов за замовчуванням з sysvinit на systemd.
Жуль

Debian jessie має певну форму зворотної сумісності, принаймні, використовуючи / usr / bin / service - якщо немає конфігурації для запуску (/etc/init/{service}.conf) і є конфігурація sysvinit (/ etc / init). d / {service}), тоді / usr / bin / service буде взаємодіяти з /etc/init.d/{service}, як і раніше, під sysvinit.
Кевін

Відповіді:


18

Ви можете створити свій демон вручну за /etc/init.d/skeletonфайлом на Debian.

Ви можете використовувати /usr/bin/serviceдля запуску $ sudo service yourdaemon startта зупинки $ sudo service yourdaemon stopсвого демона.

Поки ви не зв’яжете свій скрипт ні з одним із /etc/rc?.dкаталогів, він не запуститься при запуску.

З іншого боку, ви можете переглянути демонтоли , які не є стандартними для debian, але мають деякі цікаві особливості.


Спасибі. Здається, у мене немає /usr/bin/serviceв моїй системі (це Debian Lenny), але я можу запускати сценарії безпосередньо з /etc/init.d/myservice start.
Kuroki Kaze

3
Ви можете використовувати , sudo invoke-rc.d yourservice startа також
chmeee

не знав цього. Thx
chiggsy

3

Debian (і Ubuntu) мають програму-помічник, start-stop-daemonяка використовується у сценаріях init. У нього є досить багато варіантів для запуску та відстеження демонів. Ви можете просто написати обгортку навколо нього, наприклад

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file 
       ;;
esac

3
Я б віддав перевагу /etc/init.d/skeleton, запропонованому вище, тому що він також включає частини INIT INFO, яка допомагає при
переході на

2

Щоб правильно демонізувати процес для Debian, вам потрібно буде виконати кілька кроків, включаючи відсторонення від контролюючого процесу, скидання IO та створення файлу ідентифікатора процесу для відтворення. Ви можете замість цього використовувати щось на зразок програми демон із однойменного пакету, щоб зробити це для вас. Якщо це саме ви хотіли зробити, відповідь можна знайти тут на StackOverflow: /programming/3095566/linux-daemonize

Команда upstart більше схожа на команду invoke-rc.d Debian або команду служби з пакету sysvinit-utils. Вони очікують відпрацювання сценаріїв init у /etc/init.d. У Debian стандартно створювати одну з програм для вашого пакету і використовувати її для запуску програми старт-стоп-демон, як ви можете бачити в прикладі /etc/init.d/skeleton.

Тільки тому, що ви створюєте /etc/init.d/myservice сценарій, це не означає, що він повинен запускатися автоматично. Ви можете налаштувати рівні запуску, на яких він зупиняється, і автоматично запускається за допомогою такого інструменту, як update-rc.d. Це більш докладно описано в " Відключити послугу" від запуску на всіх рівнях запуску?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.