定时清除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的执行日志了。