平时在 Linux 里运行 jar 包时总得用 java -jar xx.jar 挺麻烦的,于是搞个 sh 脚…
平时在 Linux 里运行 jar 包时总得用 java -jar xx.jar 挺麻烦的,于是搞个 sh 脚本去启动重启 jar 包。
sh 脚本需要实现四个功能:启动、停止、重启、查看状态。
以下是脚本代码:
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
82
83
84
85
86
87
88
89
|
| | #!/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 "------------------------ 执行重启 ------------------------" |
| | stop |
| | start |
| | ;; |
| | 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
最后执行脚本进行测试