【問題描述】
在CentOS6及其之前的版本,可以使用service + chkconfig 命令,來實現服務的開機自啟動;
但在CentOS7版本系統上,之前的命令和配置都無效了。
【思路分析】
在CentOS7版本系統上,配置文件的路徑和命令都已經發生改變,需要重新進行配置。
【解決方案】
本文還是以Eureka服務為例,來說明在CentOS7系統中如何設置該服務的開機自啟動。
1.在任意目錄下,創建一個啟動服務的shell腳本文件( 名字可以隨意取,這里就以eurek.sh為例說明 );
注意:腳本文件不要在 /etc/init.d 目錄下,如果該目錄下面有就刪除掉,否則可能會產生沖突導致自啟動無效。
文件的內容如下: 僅供大家參考(你們寫的啟動服務的腳本要根據你們服務的實際命令和路徑來寫)
#!/bin/bash
# chkconfig:2345 10 90
# description: eureka service ...
start(){
echo "-----------准備啟動Eureka服務----------"
# 進入到eureka的安裝目錄:
cd /opt/eureka/
# 設置一下 linux系統的JAVA環境變量和Path路徑:
export JAVA_HOME=/usr/lib/jvm/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 在后台啟動 eureka服務:
nohup java -jar com.xxxx-xxx-xxxxxx-0.0.1-SNAPSHOT.jar > nohup.out &
echo "-----------完成啟動Eureka服務------------"
}
case $1 in
start):
start
;;
stop):
echo "--------------------stop...-------------------"
;;
esac
exit 0
說明:1) shell腳本編寫完成后,請在機器上執行一下,確認該腳本是可以正常啟動eureka的jar包服務的.
2) 啟動后, 可以通過 ps -ef|grep java(或服務) 命令來查看需要啟動的java進程(或服務)是否已經正常啟動.
2. 在 /usr/lib/systemd/system 目錄下面創建一個xxx.service的文件;
注意:xxx.service文件不要放在 /etc/systemd/system 目錄下,如果該目錄下面有就刪除,否則可能會產生沖突。
文件的內容如下: 僅供參考
[Unit]
Description=The eureka.jar service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/eureka/eureka.sh start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/opt/eureka/eureka.sh stop
PrivateTmp=True
[Install]
WantedBy=multi-user.target
3. 使用systemctl enable xxx.service 命令,把服務添加到linux系統的自啟動服務列表中去;
4. 使用systemctl status xxx.service 命令,查看是否添加成功。