定时清除linux内存buff/cache缓存

1.创建脚本文件            

vim clean.sh

2.在文件中输入以下脚本

#!/bin/bash
#每两小时清除一次内存buff/cache缓存
echo "开始清除缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 10 #延迟10秒
echo 3 > /proc/sys/vm/drop_caches

3.设置脚本权限

chmod +x clean.sh

4.添加任务

> crontab -e   #进入文件输入以下代码,然后保存(按Esc键,再输入:wq 保存文件)
# 每两小时执行一次
0 */2 * * * /opt/clean.sh

5.设置crond启动以及开机自启

systemctl start crond.service
systemctl enable crond.service

6.异常处理

  如果执行脚本报 以下错误:/bin/bash^M: bad interpreter: No such file or directory。

  是因为在windows下创建编辑的shell脚本是dos格式的,而linux却是只能执行格式为unix格式的脚本,所以识别不了。

  通过 cat -A filename 命令查看脚本文件是dos格式还是unix格式,dos格式的文件行尾为^M$ ,unix格式的文件行尾为$。

  可以通过以下方式解决:

     编辑文件: vim filename; 执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

 7.查看crontab运行日志

有时候发现定时任务没有按预期执行,可以能过查看日志发现执行相关的问题。

一般来说 ,crontab的运行日志可以在/var/log/cron.log文件中。

如果没有/var/log/cron.log文件,试一下/var/log/cron

crontab为什么有时候找不到日志?
需要通过配置打开crontab的日志记录功能。

通过以下方式开启crontab的日志记录功能。

sudo vim /etc/rsyslog.d/50-default.conf
cron.* /var/log/cron.log #将cron前面的注释符去掉
#重启rsyslog
#sudo /etc/init.d/rsyslog restart
sudo service rsyslog restart #重启rsyslog
sudo service cron restart #重启cron程度

sudo service crond restart #重启crond。 在有的系统中,定时任务程序名称是crond
打开日志记录功能后,就可以看到相应的crontab的执行日志了。

posted @ 2022-11-29 11:41  XiaoK  阅读(1951)  评论(0编辑  收藏  举报