Featured image of post sh啟動jar包的shell腳本

sh啟動jar包的shell腳本

平時在 Linux 裡運行 jar 包時總得用 java -jar xx.jar,這樣挺麻煩的,因此寫了一個 sh 腳本來啟動及重啟 jar 包。

平時在 Linux 裡運行 jar 包時總得用 java -jar xx.jar,這樣挺麻煩的,因此我寫了一個 sh 腳本來啟動、停止、重啟和查看 jar 包的狀態。

以下是腳本的具體代碼:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
# jar 腳本, 包含啟動、重啟、停止的功能

# jvm 參數
jvm_xms=-Xms512m
jvm_xmx=-Xmx512m

# jar 名稱
jar_name=app.jar
# jar 目錄
jar_dir=/root/test

# 進程 id
pid=

# 啟動
start() {
    # 獲取進程 id
    getpid
    # 如果進程 id 存在,且對應的文件夾也存在
    if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
        echo "$jar_name 正在運行,進程 id 是 $pid"
    else
        echo "啟動:$jar_name"
        nohup java -server $jvm_xms $jvm_xmx -jar $jar_dir/$jar_name > /dev/null 2>&1 &
    fi
}

# 停止
stop() {
    # 獲取進程 id
    getpid
    # 如果進程 id 存在,且對應的文件夾也存在
    if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
        # 殺死進程 id
        kill -KILL $pid >/dev/null 2>&1
        # 睡眠 10 秒,單位微秒
        usleep 100000
        echo "$jar_name 已停止"
    else
        echo "$jar_name 未運行"
    fi
}

# 重啟
restart() {
    stop
    start
}

# 進程 id 函數,獲取進程 id
getpid() {
    pid=`ps -ef | grep "$jar_dir/$jar_name" | grep -v grep | awk '{print $2}'`
}

# 啟動參數
case "$1" in
start)
    echo "------------------------ 執行啟動 ------------------------"
    start
    ;;
stop)
    echo "------------------------ 執行停止 ------------------------"
    stop
    ;;
restart)
    echo "------------------------ 執行重啟 ------------------------"
    restart
    ;;
status)
    echo "------------------------ 執行查看 ------------------------"
    getpid
    if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
        echo "$jar_name 正在運行,進程 id 是 $pid"
    else
        echo "$jar_name 已停止"
    fi
    ;;
*)
    echo $"參數提示: $0 {start|stop|restart|status}"
esac

接著將上述腳本保存為 xxxx.sh,並給予腳本執行權限:chmod +x /root/xxxx.sh

最後,執行腳本進行測試。

sh啟動jar包的shell腳本

Licensed under CC BY-NC-SA 4.0
使用 Hugo 建立
主題 StackJimmy 設計