平時在 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
。
最後,執行腳本進行測試。
