干货 | 系统润滑,定时清理内存了解一下

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/O4dC8OjO7ZL6/article/details/81199257

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

640?wx_fmt=png

前言

  • 内存总是不够用?

  • 缓存总是被占用?

  • 无法实时释放缓存?

这都不是事,看完本文让你的linux服务器时刻保持强劲动力!!!

首先需要了解两个东西“定时任务”与“内存释放”

定时任务

命令:crontab

命令相关参数:

  • -e (修改用户定时任务)

  • -l (列出用户的定时任务)

  • -r (删除用户定时任务)

  • -i (删除定时任务前通知用户)

定时任务设置参数

基本格式 :

640?wx_fmt=png

示例1

640?wx_fmt=png

示例2

640?wx_fmt=png

内存释放

命令:

用于linux系统 (RedHat CentOS CGSL ubuntu)

640?wx_fmt=png

  • sync 做同步,将所有未写的系统缓冲区写到磁盘中,以确保文件系统的完整性,否则在释放缓存的过程中,可能会丢失未保存的文件

  • 1 释放页缓存

  • 2 释放dentries和inodes

  • 3 释放所有缓存

实际操作

步骤:

  1. 编写内存释放的脚本

root用户下编写脚本

640?wx_fmt=png

2.设置crontab

root用户下执行crontab -e命令

640?wx_fmt=png

查看设置情况

 
  
  1. [root@ems001 home]# crontab -l

  2. */1 * * * * /home/clean_mem.sh

  3. [root@ems001 home]#

需要注意的是我们通过root用户执行的crontab命令,则该定时任务的规则仅适用于root用户,所以脚本的属组为root用户

3.查看定时任务的执行情况

定时任务的执行日志记录在/var/log/cron中

 
   
  1. [root@ems001 home]# cd /var/log/

  2. [root@ems001 log]# tail -f cron

  3. Jul 24 10:37:01 ems001 CROND[19842]: (root) CMD (/home/clean_mem.sh)

  4. Jul 24 10:38:02 ems001 CROND[19850]: (root) CMD (/home/clean_mem.sh)

  5. Jul 24 10:39:01 ems001 CROND[19854]: (root) CMD (/home/clean_mem.sh)

  6. Jul 24 10:40:01 ems001 CROND[19862]: (root) CMD (/home/clean_mem.sh)

查看内存释放情况

 
   
  1. [root@ems001 home]# free

  2.         total       used       free     shared    buffers     cached

  3. Mem:      24554900    5807180   18747720      16232       1276    1827572

  4. -/+ buffers/cache:    3978332   20576568

  5. Swap:     18874364          0   18874364

  6. [root@ems001 home]# free

  7.         total       used       free     shared    buffers     cached

  8. Mem:      24554900    4980332   19574568      16232       1300     999016

  9. -/+ buffers/cache:    3980016   20574884

  10. Swap:     18874364          0   18874364

两次对比可以看出释放了1G的内存

这样一个自动清理内存的设置就完成了

4.删除定时任务

640?wx_fmt=png

结语

  • 通过定时任务来执行脚本的方法其实还有很多,比如直接使用crond服务,或者使用 at time

    如crond服务,如果用的任务不是以hourly monthly weekly方式执行的,则可以直接在/etc/cron.d目录中创建一个定时任务格式的脚本

  • 另外需要注意的很多人会存在疑惑的,使用 crontab -e 与 直接编辑 /etc/crontab有什么区别

    做系统级配置我们会直接配置 /etc/crontab,用户级的则用 crontab -e,一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。

关于定时清理内存的方法,并不是所有服务器都适用,对于某些需要持续申请内存的服务来说,不断释放内存可能会造成处理速度降低,所以使用时还需要考虑自身服务特性来进行设置

640?wx_fmt=png

猜你喜欢

转载自blog.csdn.net/O4dC8OjO7ZL6/article/details/81199257