powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
25 сообщений из 368, страница 2 из 15
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005707
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpмне минимальный конфиг нужен.

Google is your friend:
https://gist.github.com/ryankurte/4f00605ced06613b3b1354d08d25ec5f
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005710
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
демона отличает то, что его "родителем" становится процесс init, который и приглядывает за демоном, и хоронит его, если тот склеил ласты и перешёл в состояние "зомби".

Такие детали и многое другое берет на себя systemd.
В коде ничего такого специально делать не нужно. Остается просто написать функционал самого демона.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005719
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Спс. Класс.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005720
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
systemd, как и SysV-init позволяет demon-инизировать любое приложение.

P.S.
Нет, конечно, полезно уметь обрабатывать разные сигналы, но их и простому приложению полезно уметь обрабатывать.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005721
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
Вот счас и проверю. Нужен fork метод или нет.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005722
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, если проводить параллели с Windows, то линуховый процесс init, это wininit.exe, а линуховый systemd это services.exe.
По умолчанию systemd не призывает демона, а запускает службу (Type=simple) со всеми вытекающими (systemd is a parent process). Чтобы призвать демона, в systemd.unit надо прописать Type=forking (init is a parent process) и код запуска должен делать fork().
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005724
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
systemd, как и SysV-init позволяет demon-инизировать любое приложение.

P.S.
Нет, конечно, полезно уметь обрабатывать разные сигналы, но их и простому приложению полезно уметь обрабатывать.
у меня в Qt проблема.
Там QtService вроде пропала в новых версиях.
Вот и смотрю, как сделать консольное Любое без всякого кода в main
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005725
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Anatoly Moskovsky,
Вот счас и проверю. Нужен fork метод или нет.
Службе не нужен fork(), он нужен демону.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005726
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Там QtService вроде пропала в новых версиях.
Вот и смотрю, как сделать консольное Любое без всякого кода в main
Оно сразу консольное, если ты не закрыл принудительно STDIN, STDOUT, STDERR.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005729
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devСлужбе не нужен fork(), он нужен демону.

Он и демону не нужен, но надо же как-то отвязываться от запускающей консоли...

Флаг forked в systemd вовсе не то, что ты о нём думаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005738
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

rdb_devСлужбе не нужен fork(), он нужен демону.
Он и демону не нужен,Демону нужен! Только так можно породить дочерний процесс из самого себя и сделать его сиротой, чтобы передать на обслуживание процессу init. Кстати, сам systemd является именно демоном.

Dimitry Sibiryakov
но надо же как-то отвязываться от запускающей консоли...
Код: plaintext
1.
2.
3.
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);


Dimitry Sibiryakov
Флаг forked в systemd вовсе не то, что ты о нём думаешь.
Type=forking заставляет systemd порождать дочерний процесс себя самого и тот завершится сразу за завершением кода призыва демона указанного в systemd.service исполняемого бинарного образа.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005743
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devТолько так можно породить дочерний процесс из самого себя и сделать его сиротой, чтобы
передать на обслуживание процессу init.

Да, но как раз это-то и есть необходимый, но побочный эффект отвязки от консоли. Чисто
чтобы при запуске не приходилось указывать запяточку в конце команды и не оказаться
внезапно пристреленным при выходе пользователя.

И нет, закрытие хэндлов тут никак не помогает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005744
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Anatoly Moskovsky, если проводить параллели с Windows
Не надо проводить таких параллелей: сервисы Windows - совершенно отдельный класс приложений, со своими правилами. Сервисы *nix, в основном, обычные приложения.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005745
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Демону нужен!
Я бы вам поверил, если бы не работал с сервисами из "обычных" приложений.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005747
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Type=forking заставляет systemd порождать дочерний процесс себя самого
... пропускать этап "демонизации" процесса-сервиса.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005749
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Да, но как раз это-то и есть необходимый, но побочный эффект отвязки от консоли. Чисто
чтобы при запуске не приходилось указывать запяточку в конце команды и не оказаться
внезапно пристреленным при выходе пользователя.
Ты попутал с сессией (setsid()).
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005751
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
rdb_dev
Type=forking заставляет systemd порождать дочерний процесс себя самого
... пропускать этап "демонизации" процесса-сервиса.
У systemd нет никакого "процесса демонизации". По умолчанию systemd запускает службы, а демонами становятся только сироты, попцы которым подтирает процесс init и для управления такими процессами, процессу systemd необходимо указать pid-файл.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005754
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
rdb_dev
Демону нужен!
Я бы вам поверил, если бы не работал с сервисами из "обычных" приложений.
Что вы подразумевается под понятием "работать с сервисами из обычных приложений"? Сервисы, это и есть обычные приложения, и демоны тоже - обычные приложения, и взаимодействовать им никто не запрещает.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005757
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
По умолчанию systemd запускает службы, а демонами становятся только сироты, попцы которым подтирает процесс init и для управления такими процессами, процессу systemd необходимо указать pid-файл.
Огорчу я тебя до невозможности
Код: plaintext
1.
2.
3.
4.
#Type=forking
#ExecStart=/opt/firebird/bin/fbguard
Type=simple
ExecStart=/opt/firebird/bin/fb_smp_server
Restart=on-failure

В обоих случаях никакой PID-файл для systemd не нужен. Он даже "вреден".
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005758
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Сервисы, это и есть обычные приложения, и демоны тоже - обычные приложения
Вот это и подразумеваю.
Что кардинально отличается от винды, где сервис - специальный класс приложений, работающих "по специальным правилам".
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005762
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, в данном случае для fbguard pid-файл не нужен, так как предполагается, что демон fbguard берёт на себя роль демона systemd, чтобы контролировать падения службы fb_smp_server и перезапускать её, что естественно подразумевает не меньшую стабильность работы fbguard в сравнении с systemd, поэтому последнему не указывается pid-файл fbguard и systemd благополучно забывает об fbguard по принципу "выстрелил и забыл", а при Type=simple в запуске fb_smp_server pid-файл не нужен, потому что родительский процесс (systemd) и так знает идентификатор процесса СЛУЖБЫ (не демона) fb_smp_server, так как является его родителем.
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005765
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
PetroNotC Sharp
Там QtService вроде пропала в новых версиях.
Вот и смотрю, как сделать консольное Любое без всякого кода в main
Оно сразу консольное, если ты не закрыл принудительно STDIN, STDOUT, STDERR.
как сделать консольное Демоном!
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005767
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
PetroNotC Sharp
Anatoly Moskovsky,
Вот счас и проверю. Нужен fork метод или нет.
Службе не нужен fork(), он нужен демону.
в чем разница? Может слово сервис добавим? Контекст топика только линукс
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005769
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,
Вот это помоги осмыслить.

Демоны нового стиля
Современные сервисы для Linux должны быть реализованы как демоны нового стиля.
Это упрощает наблюдение и управление во время выполнения и
упрощает их выполнение.

Для разработки демона нового стиля ни один из шагов инициализации
рекомендуется для демонов SysV. Инициализация нового стиля
такие системы, как systemd, делают их все избыточными. Более того, поскольку
некоторые из этих шагов мешают мониторингу процесса,
...
Рейтинг: 0 / 0
Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
    #40005771
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
rdb_dev
Службе не нужен fork(), он нужен демону.
в чем разница?
Перечитай все сообщения в этой ветке.

PetroNotC Sharp
Может слово сервис добавим? Контекст топика только линукс
Нет, не будем добавлять слово "service"! <daemon_name>.service это вообще текстовый файл ( man systemd.service ).
Сделай обычное приложение, пни его как сервис и не насилуй моск!
...
Рейтинг: 0 / 0
25 сообщений из 368, страница 2 из 15
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как по новому пишется демон? systemd вместо init.d? fork() не нужен?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]