Não é possível iniciar o daemon Net-SNMP a partir do systemd (mas funciona a partir da linha de comando)

2

Quando inicio o Net-SNMP a partir do systemd, não há mensagem de erro, mas o daemon não é executado:

% sudo systemctl start snmpd
%

Quando eu inicio a partir da linha de comando, ele é executado:

% sudo /usr/sbin/snmpd

e respostas a consultas SNMP.

Se eu adicionar os sinalizadores de depuração (-LSdd), vejo que o daemon iniciado pelo systemd é eliminado imediatamente após:

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...

O arquivo de serviço é o padrão do pacote 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

Se eu adicionar RemainAfterExit = yes no arquivo de serviço, o snmpd funcionará, mas a máquina não iniciará mais corretamente (nenhum cliente DHCP, por exemplo)

O sistema é um Arch Linux atualizado, a versão do pacote é:

Name           : net-snmp
Version        : 5.7.2-3

Existe um antigo relatório de bug do Arch Linux aparentemente para este mesmo bug: link

    
por bortzmeyer 07.04.2013 / 15:43

1 resposta

4

O problema vem do fork do snmpd durante o início.

Meu arquivo de serviço (para Exherbo) força o snmpd a não usar fork() ( -f ) e executar o serviço com Type=simple .

Type=forking é o bom caminho para o comportamento padrão do snmpd, mas está incompleto.

É altamente recomendado especificar PIDFile ao usar Type=forking porque o systemd nem sempre é capaz de saber qual processo monitorar após o primeiro processo sair.

Basta adicionar isto:

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

Essa alteração também corrigirá ExecReload .

    
por 07.04.2013 / 18:41