原因
在ubuntu上运行python脚本 该脚本需要读取配置文件 而且配置文件要求能够远程更新
方法
1.使用sshpass 远程将文件上传至目标服务器
sshpass -p [password] scp [file] [username]@[target host]:path/
2.在目标服务期内运行脚本 定期检查文件是否改动 若有改动则重启脚本 读取配置文件
- 注释:
- md5sum命令用来得到配置文件[yaml]的md5 用来判断该文件是否被改动
md5sum $yaml|cut -d ' ' -f1
- ps的命令用来获取正在运行的python服务pid
ps -ef |grep "python service.py" | grep -v grep | awk '{print $2}'
- kill -9命令根据pid 强制结束使用老版本配置文件的服务
kill -9 $pid
- 结束服务后 启动python脚本 读取新的配置文件
python service.py &
- 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