Rootop 服务器运维与web架构

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

| 暂无评论

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

出现这个问题,一般是apache服务运行的账户对nagios.cmd没有权限。所以导致报错。
常见的解决办法是直接修改nagios.cmd的文件权限,直接改为777,问题即可解决。
但是在下次重新启动nagios服务时,此文件权限会又会变为原先的权限。
prw-rw—-. 1 nagios nagios 0 May 9 23:13 nagios.cmd

解决办法1:
修改apache的运行账户为nagios账户。这个nagios账户就是运行nagios服务的账户,一般我们会用”nagios”用户来运行。
但是这样可能会对apache有某种程度影响。如果是本机单纯跑nagios监控那就无所谓了。
解决办法2:
将naigos的运行账户改为apache的运行账户。
上面两种方法总结一句话就是apache和nagios的运行账户必须是同一个

由于实际环境限制,它俩又不能用同一个账户,我采用下面方法。
解决方法3:
在nagios启动脚本上下手。
[root@localhost ~]# vi /etc/rc.d/init.d/nagios #截取其中一部分

case "$1" in

 start)
 echo -n "Starting nagios:"
 $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
 if [ $? -eq 0 ]; then
 su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
 rm -f $NagiosCommandFile
 touch $NagiosRunFile
 chown $NagiosUser:$NagiosGroup $NagiosRunFile
 $NagiosBin -d $NagiosCfgFile
 if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
 echo " done."
 chmod 777 /usr/local/nagios/var/rw/nagios.cmd
 exit 0
 else
 echo "CONFIG ERROR! Start aborted. Check your Nagios configuration."
 exit 1
 fi
 ;;

在 echo ” done.”(13行)下面添加一句chmod 777 /usr/local/nagios/var/rw/nagios.cmd
目的就是为了启动nagios的时候顺便执行一下修改权限。
另外还需要修改restart)部分 (重启nagios),这里第三种方式我认为最方便。
这样一来支持执行 service nagios start/restart 时就可以自动修改文件权限。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/2567.html

作者:Venus

服务器运维与性能优化

发表回复