描述:
最近遇到使用一个第三方python库,按照第三方库文档的方法释放内存也释放不了,不断消耗内存,最终导致内存溢出,这属于内存无法释放、内存泄露的bug。联系了该库的开发人员说这个问题不好解决,最终只能自己想办法,于是就想到了编写linux脚本定时执行内存检测超出一定内存后系统重启的方法,python项目配置了开机自启
1.编写脚本
使用脚本结合free
命令实现(以内存使用率超过 80% 为例)
1.1创建脚本
切换到要保存的路径下:例如我这里路径: cd /usr/projects/sh_scirpt/
创建一个名为check_memory_and_restart.sh
的脚本
vi check_memory_and_restart.sh
1.2脚本内容
复制以下代码到sh脚本,可以根据情况修改百分比
#!/bin/bash
# 获取内存使用率
memory_usage=$(free | awk 'NR==2{printf "%.2f", ($3/$2)*100}')
# 判断内存使用率是否超过80%
if [ $(echo "$memory_usage > 80.00" | bc) -eq 1 ]; then
reboot
fi
:wq 保存并退出
2.给脚本添加执行权限
chmod +x check_memory_and_restart.sh
3.cron
任务中定期执行
使用crontab -e
命令编辑cron
任务
crontab -e
使用crontab -e后
添加一行
*/5 * * * * /usr/projects/sh_scirpt/check_memory_and_restart.sh
每 5 分钟检查一次内存超过80%就重启系统