身为一个小白,要学习的还有很多,文章有什么问题还请大佬指教
写这个脚本的初衷是因为,在管理服务器的过程中发现,很多服务器跑着跑着,进程多,内存就高了,导致服务器卡,服务也跟着卡。想要减轻工作量,减少手动清理的次数,所以写了这个脚本。脚本可以通过监控内存大小定期清理内存来控制内存,可根据需求设定内存阈值,高于一定值就会清理内存,如果没有超过就不会清理。
1.vim jiaoben.sh 创建脚本文件
2.写入一下代码
if [ `free -m | grep Mem | awk '{print $4}'` -lt 5000 ];
then
echo "内存需要清理"
sync
echo 3 > /proc/sys/vm/drop_caches
i=$?
if [ $i==0 ];
then
echo "内存清理完毕"
else
echo "内存清理失败"
fi
else
echo "内存状况健康"
fi
其中
if [ `free -m | grep Mem | awk '{print $4}'` -lt 5000 ];
是截取可用内存容量,5000代表剩余内存,或者说是可用内存为5000M,这个数值可以根据服务器配置情况做修改。
sync是将内存写入磁盘,防止内存丢失
仅清除页面缓存(PageCache)
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:清除目录项和inode
echo 2 > /proc/sys/vm/drop_caches
To free pagecache,dentries and inodes:清除页面缓存,目录项和inode
echo 3 > /proc/sys/vm/drop_caches
3. chmod +x jiaoben.sh
给脚本文件增加执行权限
4.接下来,crontab -e
写入
* */5 * * * /root/jiaoben.sh >/dev/null 2>&1
其中,* */5 * * *代表5小时执行一次,jiaoben.sh请根据自己的脚本文件名修改一下
/root/jiaoben.sh是脚本的路径,根据情况修改。
最后crontab -l查看一下定时任务是否保存,大功告成!!!