Запуск демона на perl

Як то раз виникла необхідність запустити perl-скрипт в режимі демона. Навіщо мені це було потрібно - вже інша історія, а ось як це відбувалося хочу поділитися.

Так як не особливо люблю «винаходити велосипеди», насамперед вирішив «погуглити». Варто зазначити що прикладів реалізації знайшлося небагато, переважна більшість яких описувало прототип tcp-сервера з використанням IO :: Socket або Socket. + Розгалуження за допомогою fork (). Подібний варіант perl-демона не зовсім підходив, і мене зачепило цікавість.
. тут має бути опис довгих годин пошуку «моменту істини», які я опускаю. Рішення виявилося досить простим.

Крок № 1. Код самого perl-демона.

Даний приклад можна цілком взяти за болванку для Ваших цілей. Плюс в тому що виконувати код можна хоч щосекунди, на відміну від cron. Запускати можна в ручну, тільки не забудьте про права на виконання і додати в консолі, що б демон запустився в фоновому режимі. Наприклад: / home / full / path / exec-daemon
Їдемо далі.

Крок № 2. Автозапуск perl-демона при завантаженні системи.

Тут все стандартно і просто - /etc/rc.d Зазначу що експерименти проводилися на Ubuntu 10.04. і можливо деякі елементи можуть відрізнятися. В папку /etc/init.d/ кладемо shell-скрипт для запуску нашого демона:

Зверніть увагу сюди: PID = `ps afx | awk '/ exec-daemon $ / ' `Я пішов таким шляхом, щоб при запуску perl-демона не дивитися pid і lock - файли. т. е. Дивимося відразу в процесах, і далі якщо є pid лаємося, або запускаємо.

Далі створюємо символічні посилання в папки rc0.d - rcS.d, опціонально куди побажаєте, але мінімум в rc3.d. Тут правда є нюанс: назва посилання повинно починатися з S або K, що означає запуск або зупинка відповідно; після повинно йти число від 0 до 100, яке означає порядок запуску вашого процесу. А вже потім назву вашого shell-скрипта.

Наприклад @ S91exec-daemon, (для новачків: собака з'явитися автоматично при створенні символічного посилання. Ctrl + x + s) Все! Перевантажуємося, робимо в консолі ps afx і шукаємо там нашого демона.

Схожі статті