在linux中设置脚本监控正在运行的程序

监听docker容器

  • 基于指令 docker inspect --format '{{.State.Running}}' <docker-name>
#!/bin/bash
# 获取当前执行的时间并格式化
now=`date +"%Y-%m-%d %H:%M:%S"`
# 迭代每一个容器名
for cn in docker_name1 docker_name2 docker_name3
do
  # 查看进程是否存在
  exist=`docker inspect --format '{{.State.Running}}' $cn`
  if ["${exist}" == "false"];then
    docker start $cn
	echo "${now} 重启docker容器, 容器名: $cn" >> ./docker_monitor.log
  fi
done

监听服务器进程

  • 基于指令 ps -ef | grep <app-name> | wc -l
#!/bin/bash
now=`date +"%Y-%m-%d %H:%M:%S"`
for cn in docker_name1 docker_name2 docker_name3
do
  exist=`ps -ef | grep $cn | wc -l`
  if [ $exist -ne 2 ];then
    sh ./script/$cn.sh
    echo "${now} 重启进程 $cn" >> ./monitor.log
  fi
done

通过 crontab 定时执行脚本

  • 创建文件编写定时规则: vi xxx.cron
# 每1分钟执行一次myCommand
* * * * * sh /usr/local/shell/monitor_script.sh
  • 给脚本文件赋值可执行权限
chmod 755 /usr/local/shell/monitor_script.sh
  • 添加到 crontab 中
crontab xxx.cron
# 也可以通过 crontab -e 直接给文件中的内容写入
# 编辑器不同保存的时候要注意
# ctrl + o 选择写入的地方默认直接回车就行了
# ctrl + x 如果没有修改内容直接退出
  • crontab 其他相关参数
# 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 
crontab -u
# 列出某个用户cron服务的详细内容
crontab -l
# 删除没个用户的cron服务
crontab -r
# 编辑某个用户的cron服务
crontab -e
# 每一分钟执行一次
* * * * * sh /usr/local/shell/java_monitor_script.sh

停止java后台服务 api-server-0.0.1-SNAPSHOT.jar cat api_stop.sh

#!/bin/bash
echo "Stop Procedure : api-server-0.0.1-SNAPSHOT.jar"
pid=`ps -ef |grep java|grep api-server-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi

启动java后台服务 api-server-0.0.1-SNAPSHOT.jar cat api_start.sh

echo 'Start the program : api-server-0.0.1-SNAPSHOT.jar'
chmod 777 /data/code/target/api-server-0.0.1-SNAPSHOT.jar
echo '-------Starting-------'
current_date=`date -d "-0 day" "+%Y%m%d"`
echo $current_date
cd /data/code/target/
nohup java -jar /data/code/target/api-server-0.0.1-SNAPSHOT.jar --httpPort=8081 > /data/log/api-server-0.0.1-SNAPSHOT-$current_date.log 2>&1 &
echo 'start success'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值