00.05.Linux系统自动清理缓存脚本及定时任务配置

问题描述

在系统中,随着内存的持续使用,可能会造成内存压力。为了优化内存使用,可以编写脚本定期清理缓存。以下是自动清理缓存脚本的编写及定时任务设置过程。

解决方法
步骤 1:编写自动清理缓存脚本
  1. 使用vim编辑器编写freemem.sh脚本:
    #! /bin/sh
    # 当前已使用内存大小
    used=`free -m | awk 'NR==2' | awk '{print \$3}'`
    # 当前剩余的内存大小
    free=`free -m | awk 'NR==2' | awk '{print \$4}'`
    echo "===========================" >> /var/log/mem.log
    date >> /var/log/mem.log
    echo "Memory usage before | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log
    # 判断剩余内存是否小于或等于2048MB
    if [ $free -le 2048 ] ; then
        sync && echo 1 > /proc/sys/vm/drop_caches
        sync && echo 2 > /proc/sys/vm/drop_caches
        sync && echo 3 > /proc/sys/vm/drop_caches
        used_ok=`free -m | awk 'NR==2' | awk '{print \$3}'`
        free_ok=`free -m | awk 'NR==2' | awk '{print \$4}'`
        echo "Memory usage after | [Use:${used_ok}MB][Free:${free_ok}MB]" >> /var/log/mem.log
        # 返回操作信息
        echo "OK" >> /var/log/mem.log
    else
        echo "Not required" >> /var/log/mem.log
    fi
    exit 1
    
###### 步骤 2:授予脚本执行权限
2. 授予脚本执行权限,确保脚本可以运行:
    `chmod 755 freemem.sh`
3. 确保权限已设置成功:
    `ls -l freemem.sh # 输出类似: -rwxr-xr-x 1 root root 874 Dec 3 11:41 freemem.sh`
###### 步骤 3:设置定时任务
4. 使用`crontab`编辑定时任务,确保每天晚上23:00执行清理脚本:
    `crontab -e`
    然后在定时任务配置中添加如下行:
    `0 23 * * * root /home/user/freemem.sh 65 >> /home/user/freemem_log.txt`
5. 保存并退出编辑器。
###### 步骤 4:查询已设置的定时任务
6. 使用以下命令查看当前用户的定时任务:
    `crontab -l`
###### 步骤 5:常用命令管理`crond`服务
7. 以下是常用的`crond`服务命令:
    - 启动`crond`服务:
        `systemctl status crond.service`
    - 停止`crond`服务:
        `systemctl stop crond.service`
    - 重启`crond`服务:
        `systemctl restart crond.service`
    - 重新载入`crond`配置:
        `systemctl reload crond.service`
    - 设置`crond`服务开机自启动:
        `systemctl enable crond.service`
    - 查看`crond`是否设置为自启动:
        `systemctl list-unit-files | grep crond`
##### 注意事项
通过以上步骤,可以实现自动清理内存缓存的脚本,并通过`cron`设置定时任务来自动执行。此外,了解`crond`服务的基本管理命令,有助于在系统中管理定时任务。
posted @ 2019-12-05 10:36  雾里看浮光(南知意)  阅读(950)  评论(0)    收藏  举报