在清理 buffer 和 cache 之前,调用 sync 命令是一个好习惯。sync 会将文件系统缓冲区中的数据强制写入磁盘,确保数据的一致性,避免数据丢失的风险。以下是改进后的脚本,增加了多个 sync 语句:
1、脚本内容:
#!/bin/bash
# 检查是否以 root 用户运行
if [ "$EUID" -ne 0 ]; then
echo "请以 root 用户运行此脚本"
exit 1
fi
# 调用 sync 确保数据写入磁盘
echo "正在同步文件系统缓冲区..."
sync
sync
sync
# 清理 pagecache, dentries 和 inodes
echo "正在清理 Buffer/Cache..."
echo 3 > /proc/sys/vm/drop_caches
# 输出清理完成信息
echo "Buffer/Cache 已清理"
2、使用方法:
将上述脚本保存为 clear_cache.sh。
3、赋予脚本执行权限:
chmod +x clear_cache.sh
4、以 root 用户运行脚本:
sudo ./clear_cache.sh
5、注意事项:
多次调用 sync 是为了确保所有数据都写入磁盘,尽管通常情况下一次 sync 就足够了,但在某些情况下(例如系统负载较高时),多次调用可以更保险。
清理缓存后,系统可能会暂时变慢,因为内核需要重新加载数据到缓存中。
6、配置定时任务:
如果你需要定期清理缓存,可以将此脚本添加到 cron 任务中。例如,每天凌晨 3 点清理一次:
0 3 * * * /path/to/clear_cache.sh
7、说明
echo 1 > /proc/sys/vm/drop_caches:仅清理 pagecache。
echo 2 > /proc/sys/vm/drop_caches:仅清理 dentries 和 inodes。
echo 3 > /proc/sys/vm/drop_caches:清理 pagecache、dentries 和 inodes。