当尝试将上下文代理作为系统服务启动时,找不到Pidfile



当我尝试将我的独立实例升级到新版本时,我经常遇到这个问题,手动创建pid文件很容易解决。但是在安装新版本0.14.0的时候,我已经做了我所知道的一切,甚至是一个干净的安装,这个"步骤"不起作用。也许新的更新应该通过yum update命令提供。

[root@~]# /etc/init.d/contextBroker start
Starting...
contextBroker is stopped
Starting contextBroker...                         cat: /var/log/contextBroker/contextBroker.pid: No such file or directory
pidfile not found                                          [FAILED]

当我在FG(contextBroker -fg)中运行它时,它工作得很好,这是我使用的方法。

这是我的curl localhost:1026/version输出:

<orion>
  <version>0.14.0</version>
  <uptime>0 d, 0 h, 1 m, 59 s</uptime>
  <git_hash>5e3d210e4b15fa9ebbfa07c93dd41f8b41697d0e</git_hash>
  <compile_time>nodate</compile_time>
  <compiled_by>fermin</compiled_by>
  <compiled_in>centollo</compiled_in>
</orion>

另外这是我的MD5校验和输出:

[root@~]# md5sum /usr/bin/contextBroker
d3f24c4670a9d25a22c8877c3cdcc2b4  /usr/bin/contextBroker

我怎么解决这个问题?

似乎由于任何原因(例如在某些更新中)PID文件不存在或其内容与内存中运行的进程的实际PID不一致,/etc/init.d/contextBroker服务脚本可能无法停止代理。

因此,您可以应用以下过程:
  1. 检查是否有一个已存在的contextBroker进程正在运行。
  2. /etc/init.d/contextBroker stop/etc/init.d/contextBroker restart之后进程不停止
  3. 获取进程的PID(提示:使用ps ax | grep contextBroker),然后在该PID上使用kill

终止该进程后,/etc/init.d/contextBroker start应该会再次工作。

感谢Massimiliano Nigrelli在他的团队帮助调试这个问题。

卸载并重新安装ContextBroker就像一个魅力!

最新更新