背景介紹:
當部署Java服務的時候,一般採用容器運行,比如tomcat,或者直接使用Java命令行運行,比如Java -jar xxx.jar;
需要做成開機啓動服務的時候,一般也使用腳本,然後添加到/etc/rc.local文件中,這裏介紹將Java服務直接註冊到系統服務,使用systemctl來進行管理,簡單、方便、快捷!下面就舉個例子:
#java 文件爲abc.jar
#java 文件路徑爲/opt/abc.jar
#java 文件運行命令爲:java -jar /opt/abc.jar
#啓動腳本start-java.sh
#!/bin/bash
#Java環境變量
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#啓動Java服務,將日誌重定向到文件
java -jar /opt/abc.jar > /opt/abc.log &
#將進程號寫入文件
echo $! > /var/run/abc.pid
#停止服務的腳本stop-java.sh
#!/bin/bash
#獲取進程號
PID=$(cat /var/run/abc.pid)
#殺死進程
kill -9 $PID
#註冊服務/usr/lib/systemd/system/java.service
[Unit]
Description=java
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/start-java.sh
ExecStop=/opt/stop-java.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#######################################
systemctl daemon-reload
systemctl start java
systemctl enable java
systemctl stop java
此文僅供參考,如有不足之處,歡迎大佬指正!