Featured image of post sh启动jar包的shell脚本

sh启动jar包的shell脚本

平时在 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

最后执行脚本进行测试

sh 启动 jar 包的 shell 脚本

转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
使用 Hugo 构建
主题 StackJimmy 设计