前言:我已经解决了这个问题,并提出这个问题来分享我find的解决scheme。 请记住,这里所描述的问题可能会(也可能不会)更为通用,不仅适用于Bacula,也适用于其他服务。 这可能也是Debian的具体情况,因为这似乎是包装的问题,但我目前无法在任何其他发行版上进行testing。
问题是:
设置Bacula安装我遇到了一个特殊的文件守护进程:
/etc/init.d/bacula-fd start启动守护进程确定 /etc/init.d/bacula-fd stop无法停止守护进程 /etc/init.d/bacula-fd restart也会失败(PID不会改变),所以新的configuration不适用 /etc/init.d/bacula-fd status返回bacula-fd is not running ... failed! 即使ps aux | grep bacula-fd ps aux | grep bacula-fd显示守护进程实际上正在运行 PID文件存在于configuration为驻留的位置,并且其内容是正确的。
系统是Debian Wheezy,Bacula版本是5.2.6(Wheezy资源库中最新的版本)。
这个问题只存在于Bacula安装的一些机器上,在其他几个机器上工作得很好。
受影响机器上/etc/bacula/bacula-fd.conf中的FileDaemon部分:
FileDaemon {
姓名=(姓名)
FDAddress =(这里是公网IP)
FDport = 13802
WorkingDirectory = / var / lib / bacula
Pid Directory = / var / run / bacula
最多同时工作= 20
}
还有一个来自不受影响的机器:
FileDaemon {
姓名=(姓名)
FDport = 9102
WorkingDirectory = / var / lib / bacula
Pid Directory = / var / run / bacula
最多同时工作= 20
FDAddress = 192.168.1.10
如果我没有得到解决,我不能使用脚本来自动应用configuration更改所有我的Bacula机器上。 什么可能是这种行为的原因,我该如何解决这个问题?
问题部分在configuration文件中,部分在其他地方。 在安装了Bacula的20台机器中,有一些改变了bacula-fd正在监听的默认端口(原因是这样的),这被certificate是问题的根源。 至于/etc/bacula/bacula-fd.conf相关行是这个: FDport = 13802 。
/etc/init.d/bacula-fd的端口是硬编码的(另外被getent services bacula-fd调用返回的值覆盖),并且不会从bacula-fdconfiguration文件中提取。 这不会阻止init.d脚本启动守护进程,但会导致检查其状态,停止并因此重新启动的问题。
为了解决这个问题,我修改了/etc/init.d/bacula-fd改变PORT=9102到正确的端口号: PORT=13802 。 另外我编辑了/etc/services文件,find相关的行并修改它们如下:
bacula-fd 13802 / tcp#Bacula文件守护进程 bacula-fd 13802 / udp
现在/etc/init.d/bacula-fd脚本就像魅力一样。