使用crontab配合shell脚本定时清理缓存
Linux服务器用一段时间就会出现buff/cache内存占用过多的情况,导致free空闲内存变得非常少,严重影响使用;
这个时候就可以用如下命令去清除一下cache内存
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
每一次都自己敲一遍着实麻烦,不如设置一个定时清理的脚本
首先切换到root账户 su root
找一个目录,然后创建脚本文件 vi cleanCache.sh
添加如下内容
#!/bin/sh
LOG_PATH="/var/log"
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "==============开始清理缓存=============" >> $LOG_PATH/mem.log
date >> $LOG_PATH/mem.log
echo "Memory usage before | [Use:${used}MB][Free:${free}MB]" >> $LOG_PATH/mem.log
if [ $free -le 600 ] ; then
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
used_ok=`free -m | awk 'NR==2' | awk '{print $3}'`
free_ok=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "Memory usage after | [Use:${used_ok}MB][Free:${free_ok}MB]" >> $LOG_PATH/mem.log
echo "OK" >> $LOG_PATH/mem.log
else
echo "Not required" >> $LOG_PATH/mem.log
fi
exit 1
通过如下命令测试脚本是否正常运行
chmod 777 cleanCache.sh
./cleanCache.sh
下面开始设置自动定期清理
crontab -e
1.Ctrl+O 写入
2.出现“FIile name to Write...”,输入Enter
3.Ctrl+x 保存输出
在末尾添加如下内容:
* */3 * * * ./home/HwHiAiUser/cleanCache.sh #每三小时执行cleanCache脚本
*/1 * * * * echo "Good morning" >> /home/HwHiAiUser/test.txt #每分钟输出日志到test.txt
*/1 * * * * /home/HwHiAiUser/test.sh
test.sh内容
#!/bin/bash
echo "nihao" >> /home/HwHiAiUser/1.txt
保存后提示crontab: installing new crontab
即生效
然后输入如下指令可以查看是否成功
crontab -l
到此就大功告成了。
使用crontab配合shell脚本定时检测拉起服务
1、新建脚本check_nginx.sh
#!/bin/bash
APP_NAME="nginx: master"
BIN_PATH="/usr/local/nginx/sbin"
#检测方法
checkStatus() {
pid=$(ps -ef |grep "$APP_NAME" |grep -v "grep" |awk '{print $2}');
#datetime=`date +%Y-%m-%d,%H:%m:%s`
datetime=`date`
if [ -z "${pid}" ]; then
echo "$datetime ---- 开始启动服务$APP_NAME"
cd $BIN_PATH
./nginx
else
echo "$datetime ---- 项目$APP_NAME已经启动,进程pid是${pid}!"
fi
}
checkStatus
脚本授权:
chmod a+x /usr/local/check/check_nginx.sh
2、建立定时任务
crontab -e
#新建定时任务,每分钟检测一次Nginx的状态,如果Nginx没有启动,就执行启动命令
* * * * * /usr/local/check/check_nginx.sh >> /var/log/check_nginx.log
3、查看定时任务
crontab -l
查看日志
tail -200f /var/log/check_nginx.log
网友评论