Shell 启动、停止、重启jar包服务脚本

1 篇文章 0 订阅

使用该脚本时的注意事项:

1、去掉中文注释,以防乱码造成不必要的错误

2、如果是在windows上利用文本编辑器编辑,如notepad++,需要进行转码,以notepad++为例

#!/bin/sh

# shell样例及解释,使用时请去掉注释,防止乱码

command='java -Xms256m -Xmx1024m -jar ./smart-monitor-api-0.0.1-SNAPSHOT.jar'
log_dir="/home/dev/deploy/zhihui/smart/logs/monitor"
log_file="$log_dir/smart-monitor.log"

# -p:如果目录已经存在,则不会有错误提示。若父目录不存在,将会创建父目录。该选项常用于创建级联目录
mkdir -p $log_dir

start(){
    if [ "$log_file" != "" ]; then
        exec $command  >> "$log_file" 2>&1 &	 
    else
        exec $command &
    fi
}

stop(){  
 #{print $2}:在ps到这个进程后获取进程pid,即下行的22704
 #smart  22704 22616  1 11:27 pts/20   00:05:47 java -jar smart-monitor-api-0.0.1-SNAPSHOT.jar
 #grep -v "grep" :排除掉grep本身搜索进程pid,否则搜索的程序只有一个,但是搜索结果却有两个pid
 ps -ef | grep "$command" |grep -v "grep"| awk '{print $2}' | while read pid   
 do 
    #ps --no-heading $pid | wc -l:通过进程号PID来查找进程是否存在,输出为0表示不存在,输出=1,表示存在,因为进程号不可能重复,所以输出肯定非0即1 
    C_PID=$(ps --no-heading $pid | wc -l)
    echo "CURRENT PID=$pid"
    if [ "$C_PID" == "1" ]; then
        echo "PID=$pid Ready to end"
        kill -9 $pid
        echo "PID=$pid end"
    else
        echo "PID=$pid does not exist"
    fi
 done
}

# ./run.sh start:根据脚本命令参数,确定执行的命令
case "$1" in  
start)  
start  
;;  
stop)  
stop  
;;    
restart)  
stop  
start  
;;  
*)  
printf 'Usage: %s {start|stop|restart}\n' "$prog"  
exit 1  
;;  
esac

shell报错一栏:

Ubuntu系统环境:[: 1: unexpected operator

Ubuntu 默认编译环境是 dash 得换用原始的bash编译 而我编译时候用的命令是 sh If.sh

 

最后用bash If.sh 就好了

 

再或者把 == 换成 = 因为dash判断的相等用 = 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值