shell脚本实现: 自动识别文件改动 并重启相关服务

原因

在ubuntu上运行python脚本 该脚本需要读取配置文件 而且配置文件要求能够远程更新

方法

1.使用sshpass 远程将文件上传至目标服务器
sshpass -p [password] scp [file] [username]@[target host]:path/

2.在目标服务期内运行脚本 定期检查文件是否改动 若有改动则重启脚本 读取配置文件

  • 注释:
  1. md5sum命令用来得到配置文件[yaml]的md5 用来判断该文件是否被改动
md5sum $yaml|cut -d ' ' -f1
  1. ps的命令用来获取正在运行的python服务pid
ps -ef |grep "python service.py" | grep -v grep | awk '{print $2}'
  1. kill -9命令根据pid 强制结束使用老版本配置文件的服务
kill -9 $pid
  1. 结束服务后 启动python脚本 读取新的配置文件
python service.py &
  1. sleep命令 设置间隔检查配置的时间 单位秒
sleep 600

完整如下:

#!/bin/bash
function pystart() {
  pid=$(ps -ef |grep "python service.py" | grep -v grep | awk '{print $2}')
  echo "stopping..." $pid

  if [ $pid ];then
         kill -9 $pid
  fi

  python service.py &

  new=$(ps -ef |grep "python service.py" | grep -v grep | awk '{print $2}')
  echo "running..." $new

}

old=$(md5sum $yaml|cut -d ' ' -f1)
while :
do
        md5=$(md5sum $yaml|cut -d ' ' -f1)
        echo $md5
        if [ "$old" != "$md5" ]; then
                echo "change!"
                old=$md5
                pystart
        fi
        sleep 600
done
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值