[内容] Linux 内存机制

内容一:Linux 显示内存的命令

# free -m

内容二:Linux 内存机制

1) total 内存的总大小
2) used 正在被使用的内存大小
3) free 没有被使用的内存大小
4) shared 正在被多个进程共享的内存大小
5) buffers 内存中被系统分配但是还没有被使用的 buffers 大小。这些数据暂时存储在内存中,当下次再此使用时可以在内存中被快速调用。buffers (buffer page) 代表块设备 (硬盘等设备) 所占用的缓存页,对应从硬盘中直接获取的数据,处于内存和硬盘之间,由内核使用 (当 free 状态的内存不够时,它会自动释放出来,也可以手动释放出来)
6) cached 内存中被系统分配但是还没有被使用的 cached 大小。这些数据暂时存储在内容中,当下次再此使用时可以在内存中被快速调用。cached (cache page) 代表普通文件数据 (硬盘里的数据) 所占用的缓存页,对应 vfs 页缓冲层的数据,处于内存和 CPU (处理器) 之间,由应用程序使用 (当 free 状态的内存不够时,它会自动释放出来,也可以手动释放出来)
7) -buffers/cached = used – buffers – cached,也就是真实的内存使用量
8) +buffers/cached = free + buffers + cached,也就是真实的内存剩余量
9) available = free + buffers + cached,也就是真实的内存剩余量


补充:释放处于 buffers 和 cached 状态内存的方法

1) 释放 page cache:

# echo 1 > /proc/sys/vm/drop_caches

2) 释放 dentries 和 inodes:

# echo 2 > /proc/sys/vm/drop_caches

3) 同时释放 pagecache、dentries 和 inodes:

# echo 3 > /proc/sys/vm/drop_caches

[工具] Shell 检测服务器 CPU 占用率并报警写入日志

介绍

基本信息

名称:检测服务器 CPU 占用率并报警写入日志
作用:检测服务器 CPU 占用率并报警写入日志

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 将此脚本添加到周期性计划任务里
4. 如果 CPU 占用率超过了报警值则将报警信息写入 /var/log/message

脚本分割线里的变量

cputhreshold=95 #CPU 报警的占比值

脚本

#!/bin/bash

####################### Separator ########################
cputhreshold=95
####################### Separator ########################

cpumonitor() {
cpu=`top -n 1 -b | grep Cpu | awk -F, '{print $1}'| awk -F: '{print $2}'| awk '{print $1}'`

if [ `echo "$cpu > $1"|bc` -ne 0 ]
then
        logger "CPU_Alarm CPU until $cpu"
fi
}

cpumonitor $cputhreshold

[步骤] Linux 脚本的管理 (通过 systemd 实现)

步骤一:创建要被管理的脚本

# vim /root/12456.sh

创建以下内容:

#!/bin/bash
for i in {1..5}
do
echo $i
done

(补充:这里以创建 /etc/root/for.sh 脚本为例)

步骤二:创建 systemctl 的管理文件

# vim /etc/systemd/system/12456.service

创建以下内容:

[Unit]
Description=12345
After=default.target

[Service]
Type=oneshot
ExecStart=/root/12456.sh

[Install]
WantedBy=default.target

(补充:这里以创建 /etc/systemd/system/12456.service 来管理 ExecStart=/root/12456.sh 为例)

步骤三:加载刚刚创建的 systemctl 管理文件

# systemctl daemon-reload

步骤四:给 systemctl 的管理文件添加执行权限

# chmod u+x /etc/systemd/system/12456.service

步骤五:通过 systemd 管理脚本

5.1 启动脚本

# systemctl start 12456.service

5.2 关闭脚本

# systemctl stop 12456.service

5.3 重启脚本

# systemctl restart 12456.service

5.4 让脚本开机自启

# systemctl enable 12456.service