Bacula守护进程无法停止或重新启动

前言:我已经解决了这个问题,并提出这个问题来分享我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脚本就像魅力一样。