脚本内容
现在越来越多的程序都用docker容器来管理了,不过依旧有很多的程序,是直接在linux上使用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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| #!/bin/bash
jar_path='/home/pro-mall/ex-pro.jar'
JVM_OPTS="-Dspring.profiles.active=prod"
JVM_OPTS_DEBUG="-Dspring.profiles.active=prod -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=10000,suspend=n"
function start(){ PID=`ps -ef |grep java|grep $jar_path|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then echo -e "\033[0;31m 程序 $jar_path 正在运行中,请先停止! \033[0m" else if [[ ! -f "$jar_path" ]]; then echo -e "\033[0;31m $jar_path 不存在,无法操作命令! \033[0m" else nohup java -jar $JVM_OPTS $jar_path > /dev/null 2>&1 & echo -e "\033[0;34m 启动 $jar_path 成功!\033[0m" fi fi }
function debug(){ PID=`ps -ef |grep java|grep $jar_path|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then echo -e "\033[0;31m 程序 $jar_path 正在运行中,请先停止! \033[0m" else if [[ ! -f "$jar_path" ]]; then echo -e "\033[0;31m $jar_path 不存在,无法操作命令! \033[0m" else nohup java -jar $JVM_OPTS_DEBUG $jar_path > /dev/null 2>&1 & echo -e "\033[0;34m Debug模式 启动 $jar_path 成功!端口:10000 \033[0m" fi fi }
function stop(){ PID=`ps -ef |grep java|grep $jar_path|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then kill -9 $PID echo -e "\033[0;34m $jar_path 已停止 \033[0m" else echo -e "\033[0;31m 程序 $jar_path 未启动,不能操作! \033[0m" fi }
function restart(){ stop sleep 2 start }
function status() { PID=`ps -ef |grep java|grep $jar_path|grep -v grep|wc -l` if [ $PID != 0 ];then echo -e "\033[0;34m 程序 $jar_path 正在运行中 \033[0m" PID_NUM=`ps -ef |grep java|grep $jar_path|grep -v grep|awk '{print $2}'` echo -e "\033[0;34m 程序对应的PID: $PID_NUM \033[0m" else echo -e "\033[0;31m 程序 $jar_path 没有运行! \033[0m" fi }
function find_help(){ echo -e "\033[0;31m 请输入正确的操作命令! \033[0m" echo -e "\033[0;34m 命令参数:{start|stop|restart|status|debug} \033[0m" echo -e "\033[0;34m 用法: \033[0m" echo -e "\033[0;34m start 启动应用程序 \033[0m" echo -e "\033[0;34m stop 停止应用程序 \033[0m" echo -e "\033[0;34m restart 重启应用程序 \033[0m" echo -e "\033[0;34m status 查看应用程序运行状态和PID \033[0m" echo -e "\033[0;34m debug Debug模式启动应用程序 \033[0m" exit 1 }
if [ "$1" = "" ];then find_help; exit 1 fi
case $1 in start) start;; stop) stop;; restart) restart;; status) status;; debug) debug;; *) find_help;; esac
|
设置别名
通常情况,我们运行一个脚本,需要使用“sh + 脚本路径 + 参数”的方式,管理起来可能不太方便,所以我们一般会给他设置一个别名来管理。
语法:
了解了alias命令的语法后,我们直接执行就好了吗?不是的,如果直接执行,那么在你关闭ssh终端后重新连接,命令就失效啦。
我们需要将这个命令追加到~/.bashrc文件中,才能保证命令不会失效。
我们来试试吧,示例:
1 2 3 4 5
| chmod 777 /home/pro-mall/c.sh
echo "alias mall=/home/pro-mall/c.sh" >> ~/.bashrc
source ~/.bashrc
|
设置好别名后的使用方法,如:
1 2 3 4
| mall start mall stop mall debug ...
|