当前位置:   article > 正文

【脚本shell】shell脚本实现守护进程_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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

方案二:

#! /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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/639491
推荐阅读
相关标签
  

闽ICP备14008679号