【脚本shell】shell脚本实现守护进程

1.前言

在实际的Linux App开发中,编写一个程序,在系统后台运行中,难免会因各种原因导致程序意外退出。为了确保程序平稳长时间运行,开发者会实时监控后台程序运行情况。这种背景下,需要开发者定时守护进程,确保正常运行。本期我们采用shell脚本两种简单的方式,向各位演示守护进程的原理。

2.示例

方案一:

# #! 不是注释符,而是指定脚本由哪个解释器来执行,
# #! 后面有一个空格,空格后面为解释器的全路径且必须正确。
#! /bin/sh

while true ; do
    sleep 8
# ps aux --> a 为显示其他用户启动的进程;
#            u 为显示启动进程的用户名与时间;
#            x 为显示系统属于自己的进程;
# grep -v 指定文本 --> 输出不包含指定文本的那一行文本信息
# wc -l --> 输出文件中的行数(-l --> 输出换行符统计数)
# 整数比较:-lt -> 小于,-le -> 小于等于,-gt -> 大于,-ge -> 大于等于,-eq ->等于,-ne -> 不等于
# 0 -> 标准输入,1 -> 标准输出,2 - > 标准错误信息输出
# /dev/null --> Linux的特殊文件,它就像无底洞,所有重定向到它的信息数据都会消失!
# 2 > /dev/null --> 重定向 stderr 到 /dev/null,1 >& 2 --> 重定向 stdout 到 stderr
    PRO_NOW=$(ps aux|grep program | grep -v grep | wc -l)
    if [ $PRO_NOW = 0 ]; then
        cd  /mnt/qflash
       ./program 2>/dev/null 1>&2 &
    fi
done
# exit 用来结束脚本并返回状态值,0 - 为成功,非零值为错误码,取值范围为0 ~ 255。
exit 0

方案二:

#! /bin/sh

while true
do
   proname=$(ps -ef|grep program|awk '{print $9}'|awk 'NR==2{print}')

   if [ $proname = "program" ]; then
      echo No
   else
      echo yes
      cd /mnt/qflash
      ./program &
  fi
 sleep 5
done
exit(0)

3.加入讨论在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值