自动化释放linux服务器内存脚本

脚本说明

使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。

脚本用到sync系统命令
sync的作用:sync 是一个 Linux 系统命令,用于将文件系统缓存中的数据强制写入磁盘。
在你执行reboot、poweroff、shutdown命令时,系统会默认执行此命令。以防止数据丢失。

脚本

#!/bin/sh
# 脚本名称:FreeMemory.sh
# 脚本功能:当内存占用达到一个阀值时,自动执行释放内存的脚本。
# 作者:北国大人 from 优快云
# 创建时间:202471日
# 最后修改时间:2025331日
# 使用方法:crontab 设置定时任务
# 参数说明:阀值设置85%
# 依赖项:crontab shell
# 日志记录:/var/freememory/FreeMemoryLog.txt
# 示例用法:0 0 * * * /root/FreeMemory.sh 85>>/var/freememory/FreeMemoryLog.txt
# 注意事项:释放内存的风险较低,无须担心,但是严禁频繁执行此操作


# 获取内存信息
total=$(free -m | grep Mem | awk '{print $2}')
used=$(free -m | grep Mem | awk '{print $3}')

# 计算内存使用率
rate=$(($used * 100 / $total))

# 获取当前时间
time=$(date)

echo "############ $time ###############"

# $1 是传递给脚本的参数,表示内存使用率的阈值
if [ $rate -gt $1 ]; then
    echo "rate=$rate    内存使用率超过阈值,开始释放内存!"
    sync
    sleep 10
    echo 1 > /proc/sys/vm/drop_caches
    echo "内存释放成功!"
    used2=$(free -m | grep Mem | awk '{print $3}')
    shifangle=$(($used - $used2))
    echo "内存释放了$shifangle G"
else
    echo "rate=$rate  内存使用率正常"
fi

设置定时任务,每天执行一次即可

#每天执行一次,仅当内存占用达到85%时,才执行此操作。
crontab-e
0 0 * * * /root/FreeMemory.sh 85 >>/var/freememory/FreeMemoryLog.txt

echo 1:如果你只想清理页缓存,保留目录项和 inode,可以使用这个选项。
echo 2:如果你只想清理目录项dentries和 inode,保留页缓存,可以使用这个选项。
echo 3:如果你希望彻底清理所有缓存,可以使用这个选项。

注意事项

性能影响:清理缓存可能会导致系统性能短期下降,因为缓存被清空后,系统需要重新加载数据(会过滤掉无用的)。
谨慎使用:严禁频繁使用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北国大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值