jenkins--構建傳輸jar包后啟動java服務
jenkins--構建傳輸jar包后啟動java服務
目標:針對單體java服務
前置條件:jdk1.8 日志切割cronolog
創建server.sh腳本文件
#! /bin/bash
JAR_PATH="/data/forwarder" # 文件目錄
JAR_FILE="ruoyi-admin.jar" # 文件名
LOG_PATH="/data/forwarder/logs" #cronolog 日志切割路徑
LOG_FILE="$LOG_PATH/console-%Y-%m-%d.out" #cronolog 日志切割生成文件
# 停止 Java 服務
echo "Stopping Java service..."
PID=$(ps -ef | grep $JAR_FILE | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
kill $PID
fi
sleep 5
# 啟動 Java 服務
echo "Starting Java service..."
source /etc/profile #jenkins默認是用非登錄模式來執行shell命令,所有沒有加載環境變量配置文件。
nohup java -jar $JAR_PATH/$JAR_FILE 2>&1 | cronolog $LOG_FILE >> /dev/null 2>&1 &
#/dev/null 中,這是一個特殊的文件,它會將所有數據直接丟棄。
停止java服務
輸出 "Stopping Java service..." 字符串。
使用 ps -ef 命令列出當前系統上所有進程的詳細信息。
使用 grep 命令過濾出包含 $JAR_FILE 字符串的進程。
使用 grep -v grep 命令將過濾出來的進程中排除包含 "grep" 字符串的進程(即過濾掉 grep $JAR_FILE 這條命令本身)。
使用 awk '{print $2}' 命令提取非grep進程的 PID。
如果 PID 存在,則使用 kill 命令殺死該進程。
為了確保進程已經停止,等待 5 秒鐘。
2>&1、>>、最后一個& 的作用
2>&1 是將標準錯誤輸出(stderr)重定向到標準輸出(stdout),也就是說,它將標準錯誤輸出的內容和標準輸出合并為一個流,一起輸出到管道中或者輸出到文件。
>> 是將輸出重定向到指定文件的末尾,并在不覆蓋已有內容的情況下將輸出內容追加到該文件中。
最后一個 & 表示將進程放到后臺執行,在命令行中使用 & 可以讓該命令在后臺運行,控制臺可以繼續輸入其他命令,而不必等待該命令執行完成。如果該命令是一個長時間運行的進程并且需要在后臺持續運行,則需要使用 nohup 命令來使進程在退出 shell 后仍然運行。
jenkins調用腳本
文件全路徑 sh /data/forwarder/ruoyi-admin.jar

cronolog 查看
進入日志目錄/data/forwarder/logs

tail -f -n 500 console-2023-05-25.out #實時查看日志文件最近500條記錄

浙公網安備 33010602011771號