我试图通过 ./stop-confluence.sh 停止汇合,但它显示这样的错误:“找到 PID 文件,但未找到匹配的进程。停止中止。”所以我尝试用“kill -9 pid”杀死该进程,但它显示“PID:找不到进程”。谁能告诉我这个过程出了什么问题吗?
您可以列出进程并 grep confluence 并像这样杀死它
ps -ef|grep confluence
,然后使用 pid 杀死它kill -9 2132
要了解发生了什么,您必须了解该进程的初始化脚本。就你而言,它是来自
confluence
的东西。因此,当守护进程或 unix 进程/服务启动时,创建一个 pid 文件来保存 pid(进程 ID)是一种流行的方法/设计。这就是您在 ps
输出中看到的数字。
现在由于某些错误原因,当进程/守护进程死亡或退出时,它会将pid文件留在系统中。因此,当您尝试停止服务时,它会抛出异常:
PID file found but no matching process was found. Stop aborted.
理想情况下,当进程退出时,pid 文件必须被它删除。
最后关于如何解决这个问题,没有单一的方法可以解决它。您必须查看服务启动时执行的初始化脚本。找出服务终止的原因(除非有人故意终止它)。如果停止服务后留下 pid 文件,则问题出在 init 脚本上。你需要修复它。
希望这有帮助!
在我的例子中,失败的原因是
中的第二个启动脚本/etc/init.d/
在原始脚本完成后尝试第二次启动 Jira。
$ sudo ll /etc/init.d/ | grep jira
-rwxr-xr-x 1 root root 261 * * * jira
-rwxr-xr-x 1 root root 261 * * * jira1
我已通过执行禁用了“jira1”启动脚本的执行
$ sudo chmod -x /etc/init.d/jira1
$ sudo ll /etc/init.d/ |grep jira
-rwxr-xr-x 1 root root 261 * * * jira
-rw-r--r-- 1 root root 261 * * * jira1
这样第二个实例就不会在服务器启动时启动。您也可以删除第二个启动脚本,但请在进行任何破坏性操作之前先对其进行备份。