我正在用Java开发一个安装程序,它假设在Centos 6 Linux OS中自动安装PostgreSQL 9.4.5。
此外,安装(Java代码)负责为postgres创建新的系统用户,然后注册并启动PostgreSQL服务作为postgres服务:
`service "pgsql_service_name" start`
我注意到如果使用以下方法杀死此进程:
kill -9 "pgsql_pid"
它无法使用service "pgsql_service_name" start
直到删除postmaster.pid
文件或reboot
系统。
service "pgsql_service_name" start
启动了Postgres服务,但这次我杀了使用kill -9 "pgsql_pid"
再次处理,相同的service "pgsql_service_name" start
命令已成功从shell运行并自动覆盖postmaster.pid
文件。
为什么你认为从Java代码(安装程序)启动进程与从Linux shell中删除(或运行它)之间的这种不一致?
当出现此问题时,有没有比第一次删除`postmaster.pid`文件更好的解决方案?