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

重启脚本
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
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值