bor*_*yer 5 arch-linux net-snmp systemd
当我从 systemd 启动 Net-SNMP 时,没有错误消息但守护进程没有运行:
% sudo systemctl start snmpd
%
Run Code Online (Sandbox Code Playgroud)
当我从命令行启动它时,它运行:
% sudo /usr/sbin/snmpd
Run Code Online (Sandbox Code Playgroud)
以及对 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...
Run Code Online (Sandbox Code Playgroud)
服务文件是 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
Run Code Online (Sandbox Code Playgroud)
如果我在服务文件中添加 RemainAfterExit=yes,snmpd 工作但机器不再正常启动(例如没有 DHCP 客户端)
系统为最新的 Arch Linux,软件包版本为:
Name : net-snmp
Version : 5.7.2-3
Run Code Online (Sandbox Code Playgroud)
对于这个错误,显然有一个旧的 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=open&percent%5B0%5D=&opened=&dev=&closed=&duedatefrom=&duedateto=&changedfrom=&changedto=&openedfromclosed&from=openedto= &关闭到=
小智 6
问题出在启动时snmpd的fork。
我的服务文件(用于 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
Run Code Online (Sandbox Code Playgroud)
此更改也将修复ExecReload
。
归档时间: |
|
查看次数: |
2539 次 |
最近记录: |