美文网首页Linux
让Linux系统保持活力的优化脚本

让Linux系统保持活力的优化脚本

作者: 刘小白DOER | 来源:发表于2021-02-20 00:00 被阅读0次

        笔者从生产系统上和网络资料上总结出几种优化脚本,脚本从磁盘和内存方面入手,让Linux系统保持活力。特别是第三种清理缓存释放内存,可以结合笔者以前的文章-Linux健康检查脚本health-check-script来做进一步的包装,特别是在做大量数据备份之后,完成自动检测和清理工作。

    1、定期清理过期数据或日志

        下面的delete_data函数中的三条命令可以完成目录下所有文件、log文件和log.gz文件按过期时间清理。

    delete_data()

    {

        delete_time=$1

        #清理目录下所有过期文件

        find /home/pi/log/ -mtime +$delete_time -exec rm -r {} \;

        #清理目录下.log过期文件

        find /home/pi/log/  -mtime +$delete_time -name '*.log' -exec rm -r {} \;

        #清理目录下.log.gz过期文件

        find /home/pi/log/  -mtime +$delete_time -name '*.log.gz' -exec rm -r {} \;

    }

    2、将目录下日志或数据文件压缩打包

    2.1目录下文件单独压缩打包

    #将/home/pi/log/目录下的.log文件打包成.gz文件,

    find /home/pi/log/  -name '*.log' -exec gzip -f {} \;

    运行测试,默认gzip 会删除源文件,并生成xx.gz文件。

    zcat  filename.gz  可以直接查看文件内容。gunzip –c filename.gz  可以解压缩并保留源文件,但是解压后显示在标准输出上,没有解压后文件。gunzip -cv filename.gz > filename ,可以保留源文件和压缩后文件,-v是显示进度。压缩保留源文件是 gzip  -cv filename > filename.gz 。

    2.2目录下文件以前一起打包压缩

        gzip无法压缩文件夹,仅用于压缩单个文件,要压缩文件夹,应该使用tar + gzip ,即是tar -z。

    #将log目录下的文件打包并以时间命令,打包后以 gzip 压缩

    tar -zcvf  $(date +%Y%m%d%H%M%S)log.tar.gz log/

    tar -ztvf log.tar.gz可以查看包内有哪些文件。

    tar -zxvf 20210219143137log.tar.gz         解压缩到当前目录

    tar  -zxvf  20210219143137log.tar.gz  -C  log2/  将包解压到log2目录下。

    3、定期清理缓存

        频繁的文件访问(特别是数据备份后)会导致系统的Cache使用量大增。sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。

        这里我们来看一下 buff/cache的作用。

        buffer指Linux内存的缓冲区缓存Buffer cache,cache指Linux内存中的页面缓存Page cache。

        Cache(Page cache,页面缓存):主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有read/write操作的时候。

        Buffer(Buffer cache,缓冲区缓存):主要是针对块设备进行缓存的,比如当我们对一个文件进行写操作的时候,page cache的内容会被改变,而buffer cache则可以用来将page标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。这样,内核在后续执行脏数据的回写(writeback)时,就不用将整个page写回,而只需要写回修改的部分即可。

        Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。怎么手动清除呢?修改/proc/sys/vm/drop_caches 的值。看看英语说明:

    to free pagecache, use echo 1 > /proc/sys/vm/drop_caches;

    to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;

    to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.

        即3可以释放所有类型的缓存。

      同时为了防止数据丢失,命令sync 将脏页的内容写回硬盘,但可能伴随着系统磁盘IO飙高。

      运行free -m命令,再运行下面的脚本中的命令,发现 buff/cache减少了21M。

    clear_ buffcache.sh:

    #!/bin/bash

    #运行 sync 将脏页的内容写回硬盘,防止数据丢失

    /usr/bin/sudo /usr/bin/sync

    #

    /usr/bin/sudo /sbin/sysctl vm.drop_caches=3

    相关文章

      网友评论

        本文标题:让Linux系统保持活力的优化脚本

        本文链接:https://www.haomeiwen.com/subject/hcjzxltx.html