我已经将xinetd配置为在端口5667上建立连接时启动NSCA。我可以通过命令行以root身份启动xinetd,一切都可以正常工作:
/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid我可以向自己发送一条测试NSCA消息,/var/log/messages显示NSCA守护进程启动、写入nagios.cmd管道等。
但是,当由systemctl start xinetd运行时,我的测试消息失败,并显示“收到初始化数据包之前已关闭服务器连接”。无论以哪种方式运行,xinetd服务在ps -ef | grep xinetd中都是一样的。我不认为这是用户或权限问题,因为它应该以root用户身份运行。
没有太多的运气让NSCA或XINETD记录任何相关的信息,为什么它试图旋转NSCA守护进程,但立即退出...
有关xinetd的nsca文件,请参阅下面的内容
service nsca
{
flags = REUSE
socket_type = stream
wait = no
user = root
group = root
server = /usr/sbin/nsca
server_args = -c /usr/local/nagios/etc/nsca.cfg --inetd
log_on_failure += USERID
disable = no
only_from = <list of allowed hosts>
instances = UNLIMITED
per_source = UNLIMITED
cps = 5000 0
}发布于 2020-12-04 05:11:34
解决方案:我了解到,当systemd启动一个进程时,它处于一个全新的环境中。因此,xinetd运行的任何需要环境变量的东西都需要在xinetd的环境文件( /lib/systemd/system/xinetd.service中称为“EnvironmentFile”的字段)中传递这些环境变量。对于位于/etc/sysconfig/xinetd的我来说,为了找到我需要的变量,在手动运行xinetd的bash窗口中,'env‘会显示出所有的变量。将它们都复制到/etc/sysconfig/xinetd中,然后'systemctl restart xinetd‘,一切都正常了。然后,通过消除过程确定我缺少的envvar是: LD_LIBRARY_PATH=:/usr/local/libmcrypt/lib
https://stackoverflow.com/questions/64973326
复制相似问题