我已经为我的linux服务器实现了一个仪表板servlet。我想在此仪表板中添加“重新启动主服务”选项。基本上,仪表板只使用java中的ProcessBuilder对象运行bash脚本。 我的主要服务只是tomcat和postgresql。当我想重启postgresql时,我也要重启tomcat,因为如果不这样做,现有的数据库连接就会中止,即使重新启动postgresql,tomcat也无法访问我的数据库。
因此我使用简单的脚本来停止服务:
main_services_restart.sh:
#!/bin/bash
sudo service tomcat stop
sudo service postgresql stop
sudo service postgresql start
sudo service tomcat start
如果我手动运行,一切进展顺利。但是因为我从tomcat仪表板运行它,当它调用脚本时,脚本将停止tomcat服务,因此脚本本身也会停止,因此tomcat不会重新启动。
我尝试创建不同的脚本来分离主脚本,如下所示:
sudo -b nohup /home/me/scripts/main_services_restart.sh
甚至:
sudo /home/me/scripts/main_services_restart.sh & disown
但这不是从tomcat中分离脚本。如何从tomcat的ProcessBuilder中完全分离脚本?