1、簡介
經常碰到機器斷電之后需要重啟一大堆服務,為了防止這種事情發生,設定開機自啟的腳本十分的重要,我們習慣性的做法就是撰寫一個重啟腳本,然后在 /etc/rc.local 中去完成開機執行,例如下面這樣:
# chmod +x /etc/rc.local
# vi /etc/rc.local
/usr/local/nginx/sbin/nginx
service start tomcat
/usr/local/apache/bin/apachectl start
service mysql star
/home/www/guonei_netprotect.sh

測驗結果,服務都啟動了

停止服務,然后查看埠,重啟系統,查看服務是否自啟動,發現服務已經自啟


2、通過 Crontab 實作
Crontab 可以使用 @reboot 來執行主機啟動之后的命令,首先在命令列輸入:
$ crontab -e
然后添加以下內容:
@reboot /root/script/restart.sh



完成后,這個腳本就可以在重啟的時候自動執行了,
注意 :服務器宕機之后,人工要確定腳本和服務是否啟動正常;或者剛部署服務和腳本時,重啟服務器測驗,
其它的一些進階玩法:
- 在啟動完成后的指定時間內運行腳本
# 在啟動 5 分鐘后運行指定腳本
@reboot sleep 300 && /home/wwwjobs/clean-static-cache.sh
3、通過 Systemd 實作
首先撰寫一個名為 restart 的 Systemd 服務:
$ vim /lib/systemd/system/restart.service
[Unit]
Description=restart
After=default.target
[Service]
ExecStart=/root/script/restart.sh
[Install]
WantedBy=default.target


然后啟用這個 Systemd 服務:
$ systemctl daemon-reload
$ systemctl enable restart.service

完成后,這個服務對應的腳本就可以自動開機自啟了,
nginx開機自啟
通用方式啟動nginx
/usr/local/nginx/sbin/nginx #啟動
/usr/local/nginx/sbin/nginx -s reload #重啟
/usr/local/nginx/sbin/nginx -s quit #關閉nginx
systemd 管理控制啟動模式
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
引數詳解
systemctl restart nginx
systemctl enable nginx
systemctl stop nginx

二進制安裝tomcat 實作systemd管理控制
wget 120.78.77.38/file/jdk-8u231-linux-x64.rpm
wget 120.78.77.38/file/apache-tomcat-9.0.27.tar.gz
rpm -ivh jdk-8u231-linux-x64.rpm #rpm直接安裝jdk
配置環境變數
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
java -version #檢測環境

安裝tomcat
tar -xf apache-tomcat-9.0.27
mv apache-tomcat-9.0.27 /usr/local/tomcat
啟動tomcat
sh /usr/local/tomcat/bin/startup.sh #啟動
sh /usr/local/tomcat/bin/shutdown.sh #關閉
systemd管理控制啟動
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_231-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl restart tomcat #啟動
systemctl enable tomcat #配置自啟
systemctl stop tomcat #停止服務
systemctl status tomcat #檢測狀態
以上兩個實戰nginx和tomcat程式中自帶了啟動停止腳本,如果啟動得程式沒有自帶腳本則需要自己撰寫一個類似得啟動停止腳本
部署jar程式 實作systemd管理控制
實際得專案中會有一些jar程式需要啟動 如果手動啟動則需要輸入一大串命令 停止則需要殺掉行程來停止,很麻煩
舉一個實際啟動得例子切換到jar目錄下
java -jar decode.jar -Dconfig=/usr/local/abc/application.properties
撰寫一個啟動腳本
vim demo.sh
#!/bin/bash
#
source /etc/profile
jarName="abc-web.jar"
workDir="/usr/local/abc"
start(){
cd ${workDir} && java -jar ${jarName} --spring.profiles.active=prod --server.port=9630 >uams.log 2>&1 &
}
stop(){
ps -ef | grep -qP "(?<=-jar)\s+${jarName}" && kill $(ps -ef | grep -P "(?<=-jar)\s+${jarName}" | awk '{print $2}')
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac
撰寫 systemd 組態檔
vim /usr/lib/systemd/system/abc.service
[Unit]
Description=uams server
Wants=network-online.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/usr/local/abc/
ExecStart=/bin/bash uams.sh start
ExecStop=/bin/bash uams.sh stop
ExecReload=/bin/bash uams.sh restart
Restart=on-failure
[Install]
WantedBy=multi-user.target
啟動abc服務
systemctl restart abc #啟動
systemctl enable abc #配置自啟
systemctl stop abc #停止服務
systemctl status abc #檢測狀態
4參考檔案
https://www.google.com
https://tinyurl.com/6ryafefw
https://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/
https://mp.weixin.qq.com/s/nWb7LtxEhUMWwd2y7tmU8Q
最簡明的 Systemd 行程管理教程
https://mp.weixin.qq.com/s/-slVuB9V5q-pmAwevn0aWA
來源:https://blog.csdn.net/weixin_43546282/article/details/113761180
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289805.html
標籤:其他
