系统资源紧缺?不用担心,Linux命令和Shell脚本帮你搞定

本文讲述了作者在使用AWS免费主机搭建WordPress网站时遇到的数据库连接问题,通过监控发现缓存占用大量内存。文章详细介绍了在Linux系统中清理缓存的方法,包括手动执行`drop_caches`命令,以及创建shell脚本和设置系统定时任务自动定期清理缓存,以缓解服务器资源紧张状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

252c41a838cd97991ff7b8746d5baa9b.jpeg

在之前的文章中介绍了如何申请AWS免费主机使用WordPress搭建自己的个人网站,但是在我使用过程中发现了一个问题,由于陆陆续续安装了好几个插件,偶尔在访问网站时会出现数据库连接出错的异常情况,导致页面无法访问。稍等一会儿刷新页面又可以正常访问了,怀疑是服务器资源紧张导致的。

ce5d3ef4c599f71ddcdf725034c12104.jpeg

登录服务器后使用free -h命令可以查看当前系统的内存使用情况,发现buff/cache占用空间较大,也就是缓存占用了较多空间,导致留给系统运行的空间就变小了,我的免费主机只有1G内存,资源非常有限。

因为缓存可能会占用过多的内存和和磁盘空间,影响系统的性能和稳定性。遇到这种情况,我们可以主动去清理缓存。在Linux系统中可以使用下面的方法来清理系统缓存:

  • 使用sync命令来确保文件系统的完整性,将所有未写的系统缓冲区写到到到磁盘中。
  • 使用echo命令来指定要清除的缓存类型,数字越大表示清除越多。例如:
    • echo 1 > /proc/sys/vm/drop_caches:释放网页缓存。
    • echo 2 > /proc/sys/vm/drop_caches:释放目录项和索引。
    • echo 3 > /proc/sys/vm/drop_caches:释放网页缓存、目录项和索引。
  • 使用sudo命令来提升权限,然后执行上述命令。例如:
  • 方式一:利用管道和tee命令来执行sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
  • 方式二:利用bash命令来执行sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"
  • 方式二:利用sh命令来执行sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

我在控制台命令手动执行了下列命令,发现效果还是挺明显的

sudo bash -c "echo 1 > /proc/sys/vm/drop_caches"
sudo bash -c "echo 2 > /proc/sys/vm/drop_caches"
sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"

在清理缓存前,buff/cache占用321M。

181bb7b9f60c70e0c65b38aaf1173d45.jpeg

清理缓存后,buff/cache占用174M,释放了约150M空间出来。

b7c013283dd6a64015f8da6ef1227aaa.jpeg

既然上述命令管用,那么应该让它能够自动执行,而不需要每次都手动来敲命令。要实现这个效果也挺简单,我们创建一个shell脚本来定期执行。

使用vi cleanCache.sh创建一个脚本文件,脚本内容如下:

#!/bin/bash
echo "开始清除缓存"
#缓存数据写入硬盘,防止数据丢失
sync;sync;sync
#延迟10秒后释放缓存空间
sleep 10
sudo bash -c "echo 1 > /proc/sys/vm/drop_caches"
sudo bash -c "echo 2 > /proc/sys/vm/drop_caches"
sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"
echo "清除缓存结束"

保存脚本文件,使用如下命令给脚本添加执行权限。

chmod +x cleanCache.sh

接下来我们使用如下命令验证脚本的正确性。

./cleanCache.sh

如下图所示脚本文件执行成功。

1fc8c749e563ee6e301c071e965e028c.jpeg

接下来查看当前目录,找到脚本所在的绝对路径。使用pwd命令查看当前文件路径,如下图所示,我的脚本所在的绝对路径是 /home/centos/script/cleanCache.sh

bbb10235b745098337d7cf4672b4261e.jpeg

创建一个系统定时任务,周期性执行清理缓存的脚本。使用下列命令编辑定时任务文件:

crontab -e

在该文件中追加写入如下内容,并保存文件。

*/10 * * * * /home/centos/script/cleanCache.sh

这条命令的意思是每10分钟执行一次脚本。可以使用crontab -l 查看定时任务列表是否保存成功。

还可以使用下列命令查看定时任务的执行记录,如下图所示,我为了测试,设置2分钟执行一次。

sudo cat /var/log/cron | grep cleanCache 1c024a2c5665e16bf200d2fe39dd92f6.jpeg

这样,系统就可以周期性帮我们自动清理缓存啦,一定程度上解决了系统资源紧缺的问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值