linux监视某一进程并自动重启

该文章介绍了一个用于在Linux系统中重启指定脚本的bash脚本,通过检查进程是否存在来决定是否需要重启。同时,文章也讲解了如何使用crontab命令设置定时任务,以及cron文件的语法,包括时间间隔的表达方式,例如每天、每周或每小时的特定时间执行任务。
摘要由CSDN通过智能技术生成

重启脚本


path=/data     # 启动文件的路径
name=qidong    # 启动的sh文件名字
pid=$(pgrep -f $name)
if [ ! -n "$pid" ]
then 
  echo $(date +"%Y-%m-%d %H:%M:%S") '进程不存在,需要重启,正在重启中'
  cd $path
  nohup sh ./$name &    # 启动命令
else
  echo $(date +"%Y-%m-%d %H:%M:%S") '进程存在' $pid
fi

# 检查是否启动成功
pid2=$(pgrep -f $name)
if[ ! -n "$pid2" ]
then
  echo $(date +"%Y-%m-%d %H:%M:%S") '启动失败'
else
  echo $(date +"%Y-%m-%d %H:%M:%S") '进程正常运行'
fi

其中-n用于判断变量是否为空
!表示取反
pgrep -f XXX匹配包含XXX的进程,并返回进程号,此处也可以用ps -ef | grep XXX | grep -v grep替代,效果是一样的
将重启脚本写进linux的定时中
输入crontab -e开始编辑linux的定时(写入方式与vim相同)
输入crontab -l查看所有的定时
输入crontab -r删除所有的定时

cron文件语法


  分     小时    日       月       星期     命令
  0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

   Minute  Hour   Day    Month   Dayofweek   command
   分钟     小时    天     月        天每星期       命令

 记住几个特殊符号的含义:

     “*”代表取值范围内的数字,
     “/”代表”每”,
     “-”代表从某个数字到某个数字,
     “,”分开几个离散的数字



30     3       10,20     *     *     ls             每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25     8-11    *         *     *     ls             每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15   *       *         *     *     ls             每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30     6       */10      *     *     ls             每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手把手教你学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值