这是我第一次使用systemd并且对某些事情有点不确定.
我已经设置了一个服务(用于在tomcat下运行的geoserver):
[Unit]
Description=Geoserver
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/geoserver/bin/startup-optis.sh
ExecStop=/usr/local/geoserver/bin/shutdown-optis.sh
User=geoserver
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
启动脚本执行exec来运行java/tomcat.从命令行启动服务似乎有效:
sudo systemctl start geoserver
Run Code Online (Sandbox Code Playgroud)
但是命令直到我ctrl-c才返回,这对我来说似乎不对.之后java进程仍在运行并且正常运行.我不愿重新启动盒子来测试这个,以防这会在init期间导致问题并且它是一台远程机器,让别人解决它会很痛苦.
我已将 Tomcat 配置为在 CentOS 7.2 上使用 Systemd 作为服务运行。我可以毫无问题地启动 Tomcat:
sudo systemctl start tomcat
Run Code Online (Sandbox Code Playgroud)
我可以访问启动画面、管理器应用程序,甚至部署应用程序。然后我关闭Tomcat:
sudo systemctl stop tomcat
Run Code Online (Sandbox Code Playgroud)
我没有看到任何错误。但后来我检查了状态:
sudo systemctl status tomcat
? tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2016-10-30 17:27:19 UTC; 2s ago
Process: 10833 ExecStop=/bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 10785 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 10795 (code=exited, status=143)
Oct 30 17:26:31 java2016 systemd[1]: Starting Apache Tomcat Web Application Container...
Oct 30 17:26:31 …Run Code Online (Sandbox Code Playgroud)