shell脚本实现程序重启

最近做的ipc端HLS推流不稳定偶尔要宕机,而云服务器又希望能随时连上ipc。在ipc端有没有supervisor这种工具,就需要自己想下怎么然异常退出的程序重启起来。经过查阅网络资料,通过shell即可实现。

#!/bin/sh
help(){
    echo "Usage: $0 <process_name>"
    exit 0
}

# 参数范围检查
if [ "$#" != 1 ]; 
then   
    help
fi   

#检查进程实例是否已经存在
while [ 1 ]; do
    PID=`pgrep ${1}` 
    if [ -z "$PID" ]
    then
        echo "restart process: $1 and date is: `date`"
        exec ./${1} &
    fi  
    #循环检测时间
    sleep 2
Done

一些说明

1 #!/bin/sh
Shell脚本中用#表示注释,相当于C语言的//注释。但如果#位于第一行开头,并且是#!(称为Shebang)则例外,它表示该脚本使用后面指定的解释器/bin/sh解释执行

2.函数定义
shell中函数的定义格式如下:

函数名(){
    command1
    commandN
    [ return value ]
}

用函数时可以向其传递参数。在函数体内部,通过 n 1 2n>=10使 {n}来获取参数。

3 .
echo 打印命令
exit 为退出脚本

4 if [] then else fi 语句
在Shell中用if、then、elif、else、fi这几条命令实现分支控制。

If []
then
    xxx(满足条件执行语句)
else
    Xxx
fi 

如果两条命令写在同一行则需要用; 如果一行只写一条命令就不需要写;号了
:是一个特殊的命令,称为空命令,该命令不做任何事。
代码中实现的功能为:
$#:添加到Shell的参数个数。如果参数不是1即调用 help

5.循环

While[循环条件]
do   
.....
Done 之间为循环内容

6 pgrep
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id
PID=pgrep ${1} 查找参数1传入进程名 并将并赋值给PID
if [ -z “$PID” ]
-z 字符串长度为0 即为真,即pgrep 没有找到参数传入进程名的pid,调用exec重新执行目标程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值