[内容] 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) 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

[内容] Ansible 条件判断 when

注意:

在使用 Ansible 魔法变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

案例一:判断某 1 个变量是否是 1 个固定值

# vim test.yml

添加以下内容:

......
when: "'test' in group_names"
......


补充:
1) 这里以在 test.yml 中, test 为服务器的所属组为条件判断为例
2) group_names 在这里是魔法变量

案例二:判断某 1 个变量是否和另 1 个变量的值相等

# vim test.yml

添加以下内容:

......
when: inventory_hostname in groups.test
......


补充:
1) 这里以在 test.yml 中,服务器名在 test 组中为条件判断为例
2) inventory_hostname 和 groups.test 在这里都是魔法变量

案例三:判断某 1 个变量是否小于或等于 1 个值

# vim test.yml

添加以下内容:

......
when: ansible_distribution_version is version("7.6","le")
......


补充:
1) 这里以在 test.yml 中,系统的版本是否小于或等于 7.6 为条件判断为例
2) inventory_hostname 和 groups.test 在这里都是魔法变量

案例四:判断某 1 个变量是否大于 1 个值

# vim test.yml

添加以下内容:

......
when: ansible_distribution_version is version("7.6","gt")
......


补充:
1) 这里以在 test.yml 中,系统的版本是否大于 7.6 为条件判断为例
2) inventory_hostname 和 groups.test 在这里都是魔法变量

[步骤] Linux 切换用户时图形变量的保持

步骤一:显示当前用户的图形变量

$ echo $DISPLAY
localhost:10.0

(补充:这里的图形变量参数是 localhost:10.0)

步骤二:切换到其他用户

$ su - root

(补充:这里以切换到 root 用户为例)

步骤三:使用上一个用户的图形变量

# export DISPLAY=localhost:10.0

(补充:这里以将图像变量设置为刚才看到的 localhost:10.0 为例)

步骤四:使用图形程序

# xclock

(补充:这里以使用 xclock 图形程序为例)

[命令] Linux 命令 route (管理临时路由表)

案例一:添加某 1 个 IP 地址的路由表

# route add -host 192.168.2.1 dev eth0 gw 192.168.1.1

(补充:这里以指向 192.168.2.1 IP 地址的流量需要通过 eth0 网卡和 192.168.1.1 网关 IP 地址为例)

案例二:删除某 1 个 IP 地址的路由表

2.1 删除某 1 个 IP 地址的路由表

# route del -host 192.168.2.1

(补充:这里删除 192.168.2.1 IP 地址的路由表为例)

2.2 删除某 1 个 IP 地址且指定网关和网卡的路由表

# route del -host 192.168.2.1 -gateway dev eth0 192.168.1.1

(补充:这里以删除指向 192.168.2.1 IP 地址的流量需要通过 eth0 网卡和 192.168.1.1 网关 IP 地址的路由为例)

案例三:添加某 1 个网段的路由表

# route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 网关 IP 地址为例)

案例四:删除某 1 个网段的路由表

4.1 删除某 1 个网段的路由表

# route del -net 192.168.2.0/24

(补充:这里删除 192.168.2.0/24 网段的路由表为例)

4.2 删除某 1 个 IP 地址且指定网关的路由表

# route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

(补充:这里以删除指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 网关 IP 地址的路由表为例)

案例五:显示现有的路由表

# route -n