snmpd
Ubuntu 18.04 上的软件包(安装有apt-get
)没有注册 pid 文件,/var/run
尽管/etc/default/snmpd
读取:
export MIBS=
SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -p /run/snmpd.pid'
通过查看正在运行的进程,ps -axu
我发现它没有-p
定义参数:
Debian-+ 393 0.1 0.1 74052 12548 ? Ss Jun12 8:22 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
在 Ubuntu 16.04 上,配置大致相同:
export MIBS=
SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p /run/snmpd.pid'
并且ps -axu
确实显示了-p
参数并且确实/var/run/snmpd.pid
生成了一个文件:
snmp 1253 0.0 0.0 66364 6856 ? S Jun12 4:25 /usr/sbin/snmpd -Lsd -Lf /dev/null -u snmp -g snmp -I -smux mteTrigger mteTriggerConf -p /run/snmpd.pid
/var/log/syslog
知道为什么会发生这种情况吗?在snmpd 重新启动时,我找不到任何具体信息。
答案1
snmpd.service 文件位于/lib/systemd/system/snmpd.service
。其中缺少参数-p PIDFILE
。
看起来这是一个已知问题,将在以后的版本中修复:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=878828
答案2
我无法重现您的问题,但我确信它与 systemd 有关。在 Ubuntu 18 中,所有服务均由 systemd 运行,并在/etc/systemd/system/snmpd.service
此文件的某处应该有如下部分:
...
[Service]
EnvironmentFile=-/etc/default/snmpd
ExecStart=/usr/sbin/snmpd $SNMPDOPTS
...
也许该变量$SNMPDOPTS
在该文件中被覆盖、更改或未使用。