内存相关命令
free
free 命令的作用是显示系统内存的使用情况。常用选项有:
-h:以人类可读的格式(KB/MB/GB)显示内存大小。-m:以 MB 为单位显示。-s n:每隔 n 秒刷新一次输出。
代码示例如下:
free -h
# 输出示例:
# total used free shared buff/cache available
# Mem: 15G 3.2G 9.8G 180M 2.0G 11G
# Swap: 16G 0B 16G
其中:
- Mem 是指内存的使用情况
- Swap 是磁盘与内存进行交换的情况
- total 是总内存大小
- used 是已经使用内存的大小,包含共享内存
- free 是未使用内存的大小
- shared 是共享内存的大小
- buff/cache 被buffer和cache使用的物理内存大小。其中(buff 是内核缓存;cache 是页面缓存,用于提高磁盘的读写操作)
- available 还可以被应用程序使用的物理内存大小
vmstat
vmstat 命令的作用是实时报告系统的进程、内存、交换分区、I/O 块和 CPU 活动等关键性能指标。具体可见Linux vmstat命令详解:监控系统资源 - C语言中文网
vmstat 和 top 命令有什么区别?
top提供进程级别的详细信息vmstat提供系统整体资源使用情况的概览
/proc/meminfo
/proc/meminfo 中保存了更详细的内存信息,我们可以通过 cat 命令来获取。代码示例如下:
cat /proc/meminfo
# 关键字段:
# MemTotal: 总物理内存
# MemFree: 空闲物理内存
# Buffers: 缓冲区大小
# Cached: 缓存大小
# SwapTotal/SwapFree: 交换空间大小
pmap
pmap 命令会显示进程的内存映射情况。示例如下
pmap 1234 # 查看PID为1234的进程内存映射
磁盘基本概念
扇区
上图是磁盘的结构,可以看到 扇区(Sector) 是每个磁道被扇面切割成的区域,是硬盘数据读/写的最小单元,一般为 512字节。目前计算机的存储设备不一定使用磁盘,但是沿用了扇区这一概念。
block 和 inode
Linux中将文件统统抽象成inode和block,block记录文件实际的数据,inode记录文件的属性、权限、存储内容的block块等数据。
inode与文件是一对一关系,它的大小固定为128bytes,而block与文件是多对一关系,也就是说一个文件可以被存储在多个block中,block的大小一般为1K、2K、4K(在Ext2文件系统中)。每个inode和block都有一个唯一的编号。
Linux 中还有一个 super block(超级块),它记录整个文件系统的信息,包括block与inode的总量、已经使用的inode和block的数量、未使用的inode和block的数量、block与inode的大小、文件系统的挂载时间、最近一次的写入时间、最近一次的磁盘检验时间等。
分区
Linux 中分区类似于Windows中把磁盘分为C、D盘,作用是:
- 方便管理和使用,不同的分区有不同的作用
- 有利于数据的安全,错误操作、重装系统只影响部分分区
- 节约寻找文件的时间,可以只在一个分区寻找,而不是整个磁盘
在 Linux 中分区的存储有两种格式,分别是 MBR 和 GPT。其中 MBR 支持最大 2TB 的磁盘;而 GPT 的磁盘支持几乎没有限制,但是 GPT不适合32位的系统。
挂载
在 Linux 中,挂载磁盘是将新的磁盘设备连接到文件系统的过程,使得该磁盘可用于存储和访问文件。挂载磁盘是一个常见的任务,尤其在添加新硬盘或使用外部存储设备时。
符号链接(软链接)和硬链接
| 硬链接 | 软链接 | |
|---|---|---|
| 本质 | 同一个inode,只是多个名字 | 是不同的文件,其内容指向链接的文件,inode不同 |
| 是否可以跨分区 | 硬链接不行 | 软连接可以 |
| 目录 | 硬链接无法创建目录链接 | 软链接可以 |
| 相互关系 | 硬链接没有主次之分,相互独立 | 软链接依赖于原文件,原文件被删除,软链接即不可用 |
| 链接数 | 硬链接删除增加会影响链接数 | 软链接不会,因为inode不一样 |
| 相对路径 | 硬链接创建时,原始文件路径是相对于当前路径。 | 软链接创建时,原始文件路径是 相对于软链接的路径 |
| 文件类型 | 硬链接的类型与原始文件类型一致 | 软链接则会显示 symbolic link |
| 创建方式 | 硬链接创建:ln [原文件] [硬链接] | 软链接创建:ln -s [原文件] [软链接] |
逻辑卷管理
由于传统的磁盘管理不能对我们的磁盘空间进行动态的管理。就诞生了逻辑卷管理的技术,它最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性
磁盘相关命令
df
df 命令作用是查看文件系统的磁盘使用情况。常用选项有:
-h:以人类可读格式显示。-T:显示文件系统类型。-i:查看 inode 使用情况。
代码示例如下:
df -h
# 输出示例:
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 30G 18G 63% /
# tmpfs 8.0G 0 8.0G 0% /dev/shm
du
du 命令用于查看目录或者文件的磁盘占用大小。常用选项为:
-h:人类可读格式。 -s:只显示总和。 -a:显示所有文件(包括子文件)。
代码示例如下:
du -sh /var/log # 查看/var/log目录总大小
du -h --max-depth=1 /usr # 查看/usr目录下各子目录大小