Linux開機自啟應用&開機執行腳本&監聽端口應用掛掉了執行啟動腳本


linux開機自啟

背景

目前要部署一個spring boot框架的jar包,實現開機啟動項目或者應用掛掉了 執行啟動腳本
在root目錄下有一個啟動項目的腳本: app_start.sh
app_start.sh 里面內容是:

nohup java -jar xxx.jar>/dev/null 2>&1 &

linux執行 sh /root/app_start.sh 可以后台啟動xxx.jar應用
需要對app_start腳本和 xxx.jar包 需要設置可執行權限(重要):

chmod +x /root/app_start.sh
chmod +x /root/ xxx.jar

一、開機自定義執行命令(腳本)(/etc/rc.d/rc.local)

簡介

/etc/rc.d/rc.local 用於添加開機啟動命令
/etc/rc.local是/etc/rc.d/rc.local的軟連接
軟連接相當於windows的快捷鍵

下圖是linux服務器的啟動流程,由此可知/etc/rc.d/rc.local文件是開機的時候會執行
image

配置開機執行

第一步:/etc/rc.local文件添加啟動命令

vi /etc/rc.local

image

第二步:設置/etc/rc.d/rc.local 文件的可執行權限(重要)

文件不設置可執行權限,第一步配置的啟動命令不會執行;

chmod +x /etc/rc.d/rc.local

第三步:重啟服務器;查看應用是否啟動成功

reboot

二、定時任務crontab

簡介

Linux crontab是用來定期執行程序的命令。
當安裝完成操作系統之后,默認便會啟動此任務調度命令。
crond 命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
注意:新創建的 cron 任務,不會馬上執行,至少要過 2 分鍾后才可以,當然你可以重啟 cron 來馬上執行。

1、cron是服務名稱;
2、crond是后台進程;
3、crontab是計划任務表;

由上面的簡介就知道crontab,是linux系統開機默認會啟動的定時任務,並且每分鍾會定期檢查是否有要執行的工作;
這樣我們就能定時的執行一個腳本,每10分鍾、每半個小時的執行一次腳本;

開機自啟&判斷應用沒啟動,執行啟動腳本

我們可以每10分鍾、每半個小時 執行一次啟動腳本的命令(命令如下),來保證應用始終是啟動的,當然第一次 執行命令應用啟動完成了,后面在執行啟動命令的時候 報端口占用的異常,但是不影響已經啟動的應用,所以也能滿足了開機自啟的需求。

sh /root/app_start.sh 

基於此我們可以寫一個判斷腳本,判斷 自啟應用的端口是否被占用了,端口沒被占用才執行啟動腳本,避免無效的執行 啟動應用腳本命令(sh /root/app_start.sh )

假如啟動應用腳本命令(sh /root/app_start.sh )的應用端口是 9999,那么可以有一個/root/task_start.sh的腳本
/root/task_start.sh 腳本命令如下:

#!/bin/sh

tomcat=`netstat -an | grep ":9999" | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`

if [ $tomcat -eq 0 ];then
  #如果端口沒有占用的話要怎么怎么樣
  sh /root/app_start.sh 
fi

這樣就根據業務需求 每10分鍾、半個小時執行一次命令 sh /root/task_start.sh
來判斷應用的端口如果沒有被占用,端口不存在說明應用沒有運行,執行啟動項目的命令(sh /root/app_start.sh )

crontab 添加周期性執行腳本

crontab命令

crontab [-u username]    //省略用戶表表示操作當前用戶的crontab
    -e      (編輯工作表)
    -l      (列出工作表里的命令)

crontab時間格式實例

  • 每分鍾執行一次
* * * * * sh /root/task_start.sh
  • 每10分鍾執行一次
*/10 * * * * sh /root/task_start.sh
  • 每個小時執行一次
0 */1 * * * sh /root/task_start.sh

編輯周期性執行腳本

新增 每10分鍾執行啟動腳本

crontab -e

image

驗證定時任務 是否新增完成

  • crontab -l 命令
    image

  • Linux 查看定時器Crontab日志
    查看命令如下

tail -f /var/log/cron

最后驗證應用是否自啟

首先:可以手動關閉應用,10分鍾后看應用是否還在啟用中(首次驗證可以把定時任務改成每分鍾執行,來快速驗證一下)
最后:重啟服務器,查看應用是否在運行
reboot

完畢~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM