Java 进程终止后,PostgreSQL无法运行

Java 进程终止后,PostgreSQL无法运行,java,linux,postgresql,shell,centos6,Java,Linux,Postgresql,Shell,Centos6,我正在用Java开发一个安装程序,它假设在Centos 6 Linux操作系统中自动安装PostgreSQL 9.4.5 另外,安装(Java代码)负责为postgres创建新的系统用户,然后注册并启动PostgreSQL服务作为postgres服务: `service "pgsql_service_name" start` `服务“pgsql\u服务\u名称”启动` 我注意到,如果使用以下方法终止此进程:kill-9“pgsql\u pid”则在删除postmaster.pid文件或重新启动系

我正在用Java开发一个安装程序,它假设在Centos 6 Linux操作系统中自动安装PostgreSQL 9.4.5
另外,安装(Java代码)负责为postgres创建新的系统用户,然后注册并启动PostgreSQL服务作为postgres服务:

`service "pgsql_service_name" start` `服务“pgsql\u服务\u名称”启动` 我注意到,如果使用以下方法终止此进程:
kill-9“pgsql\u pid”

则在删除
postmaster.pid文件或
重新启动系统之前,它将无法使用
服务“pgsql\u service\u name”启动进行恢复

现在,有趣的部分是后来发生的事情:在删除postmaster.pid文件后,我再次使用Linux shell中的
service“pgsql\u service\u name”start启动了Postgres服务,只是这次我再次使用
kill-9“pgsql\u pid”
,使用相同的
service“pgsql\u service\u name”终止了进程start
命令已成功从shell运行,并自动覆盖
postmaster.pid
文件

为什么您认为从Java代码(安装程序)启动进程和从LinuxShell终止(或运行回)进程之间会出现不一致的情况?
有没有比在第一次出现此问题时删除`postmaster.pid`文件更好的解决方案?

这就是为什么在执行kill-9之前,您应该始终执行正常的kill-9。这允许进程正确关闭。为什么要使用
kill
?要停止postgres服务器,请不要使用kill命令,但
service postgresql stop
我并不是故意使用kill来停止进程,这实际上是一个在安装程序中查找错误的测试。我只是希望我的机器能够处理这种情况。这就是为什么你应该在执行kill-9之前执行正常的kill-9。这允许进程正确关闭。为什么要使用
kill
?要停止postgres服务器,请不要使用kill命令,但
service postgresql stop
我并不是故意使用kill来停止进程,这实际上是一个在安装程序中查找错误的测试。我只是希望我的机器能够处理这种情况。