Назад | Перейти на главную страницу

Не удается запустить демон Net-SNMP из systemd (но он работает из командной строки)

Когда я запускаю Net-SNMP из systemd, сообщения об ошибке нет, но демон не запускается:

% sudo systemctl start snmpd
%

Когда я запускаю его из командной строки, он запускает:

% sudo /usr/sbin/snmpd

и ответы на запросы SNMP.

Если я добавлю флаги отладки (-LSdd), я вижу, что демон, запущенный systemd, будет убит сразу после:

Apr  7 15:37:50 localhost snmpd[1298]: NET-SNMP version 5.7.2
Apr  7 15:37:50 localhost snmpd[1298]: Received TERM or STOP signal...  shutting down...

Служебный файл является файлом по умолчанию для пакета Arch Linux:

[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/sbin/snmpd 
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Если я добавлю RemainAfterExit = yes в служебный файл, snmpd будет работать, но машина больше не запускается должным образом (например, без DHCP-клиента)

В системе установлена ​​последняя версия Arch Linux, версия пакета:

Name           : net-snmp
Version        : 5.7.2-3

По-видимому, для этой самой ошибки существует старый отчет об ошибке Arch Linux: https://bugs.archlinux.org/task/32258?string=snmp&project=1&type%5B0%5D=&sev%5B0%5D=&pri%5B0%5D=&due%5B0%5D=&reported%5B0%5D=&cat% 5B0% 5D = & status% 5B0% 5D = открытый & процент% 5B0% 5D = & open = & dev = & closed = & duedatefrom = & duedateto = & changedfrom = & changedto = & openfrom = & opento = & closedfrom = & closedto =

Проблема исходит от вилки snmpd во время запуска.

Мой служебный файл (для Exherbo) заставляет snmpd не использовать fork() (-f) и запустите службу с помощью Type=simple.

Type=forking это хороший способ для поведения snmpd по умолчанию, но он неполный.

Настоятельно рекомендуется указать PIDFile когда используешь Type=forking потому что systemd не всегда может знать, какой процесс отслеживать после выхода первого процесса.

Просто добавьте это:

Type=forking
PIDFile=/var/run/snmpd.pid
ExecStart=/usr/sbin/snmpd -p /var/run/snmpd.pid

Это изменение также исправит ExecReload.