系统管理
系统管理是Linux运维工作的核心部分,涉及对系统资源、服务、配置和安全的全面管理。本章介绍的命令工具能够帮助管理员监控系统状态、管理服务、配置网络、维护文件系统以及执行其他关键的系统管理任务。
通过掌握这些命令,您将能够高效地进行系统监控、故障排查、性能优化和日常维护工作,确保Linux系统的稳定运行和安全性。
uname – 显示系统内核信息
uname命令来自英文词组UNIX name的缩写,其功能是查看系统主机名、内核及硬件架构等信息。如果不加任何参数,默认仅显示系统内核名称(相当于-s参数)的作用。
语法格式
uname [选项]选项
| 参数 | 输出内容 | 典型值示例 | 技术细节 |
|---|---|---|---|
-s | 内核名称 | Linux | 对应struct utsname.sysname |
-n | 网络节点主机名 | server01 | 来自gethostname()系统调用 |
-r | 内核发行版本 | 5.15.0-78-generic | 包含ABI兼容性标识 |
-v | 内核构建信息 | #85-Ubuntu SMP ... | 包含编译日期和GCC版本 |
-m | 硬件架构 | x86_64/aarch64 | 对应CPU指令集架构 |
-p | 处理器类型 | Intel(R) Xeon(R) Gold | 可能返回unknown(需root) |
-o | 操作系统名称 | GNU/Linux | GNU扩展参数 |
-a | 所有可用信息 | 综合上述所有参数输出 | 输出顺序:s n r v m p o |
which - 查找命令所在的位置
定位给定命令的可执行文件路径,通过搜索 $PATH 环境变量中的目录顺序查找第一个匹配项
语法格式
which [选项] 命令名...选项
| 选项 | 作用 | 示例 |
|---|---|---|
-a | 显示所有匹配路径(不限于第一个) | which -a python |
--skip-alias | 忽略别名扩展 | which --skip-alias ll |
--skip-functions | 跳过shell函数 | which --skip-functions _git |
--read-alias | 从stdin读取别名(需配合alias命令) | `alias |
-i | 交互模式(部分实现支持) | which -i docker |
- 进程无法捕获或忽略
SIGKILL,可能导致数据丢失。 - 优先尝试
SIGTERM(-15),给进程清理资源的机会。 ill -15(默认) → 优雅终止(推荐优先使用)
type - 查看是外部命令还是内部命令
type 是 Linux 中用于显示命令类型的实用工具,它能够告诉你指定的命令是别名、shell 内置命令、函数还是外部可执行文件。
语法格式
type [选项] 命令名选项
| 选项 | 说明 |
|---|---|
-t | 只显示命令类型(简短输出) |
-p | 如果是外部命令,显示其路径 |
-P | 强制在 PATH 中查找,即使命令是别名或函数 |
-a | 显示所有可能的定义(包括别名、内置命令、外部命令等) |
经典案例
基本用法
bashtype ls # 查看命令类型 type -t cd # 只显示命令类型(简洁模式 type -p python # 查找外部命令的路径 type -a echo # 显示命令的所有可能定义实用技巧
bash# 区分命令是内置还是外部 if [ "$(type -t command)" = "builtin" ]; then echo "This is a shell builtin" fi # 获取可执行文件的完整路径 full_path=$(type -p some_command)
hostnamectl – 显示与设置主机名称
hostnamectl 是 systemd 提供的工具,用于查询和修改 Linux 系统的主机名及相关系统信息。它直接与 systemd-hostnamed 服务交互,无需手动编辑配置文件(如 /etc/hostname 或 /etc/hosts)。
语法格式
hostnamectl [选项] [命令] [主机名]选项
| 选项 | 说明 |
|---|---|
--static | 设置静态主机名(默认,持久化) |
--transient | 设置临时主机名(重启失效) |
--pretty | 设置美观主机名(可含空格/符号) |
--no-ask-password | 执行时不提示输入密码(脚本适用) |
-h 或 --help | 显示帮助信息 |
经典案例
hostnamectl # 查看当前主机信息
hostnamectl set-hostname "new-server" --static # 修改静态主机名(永久生效)NOTE
设置后可以使用bash命令使其立即生效
rpm - 软件包管理工具
RPM(Red Hat Package Manager)是 Red Hat 系列 Linux 发行版(如 RHEL、CentOS、Fedora)的软件包管理工具,用于安装、查询、验证、升级和卸载软件包。
语法格式
rpm [选项] [软件包名/文件]常用选项分类
安装/升级/卸载选项
| 选项 | 说明 |
|---|---|
-i | 安装软件包 |
-U | 升级软件包(如不存在则安装) |
-F | 升级已安装的软件包 |
-e 软件名 | 卸载软件包 |
--nodeps | 忽略依赖关系,强制卸载程序 |
--force | 强制操作。和ivh 配合使用,覆盖系统内的旧的安装信息 |
查询选项
| 选项 | 说明 |
|---|---|
-q | 查询软件包 |
-a | 查询所有已安装的软件包 |
-l 软件名 | 列出软件包中的文件 |
-i 软件名 | 显示软件包信息 |
-f 软件名 | 查询文件属于哪个软件包 |
-c | 列出配置文件 |
验证选项
| 选项 | 说明 |
|---|---|
-V | 验证软件包文件 |
--checksig | 验证软件包签名 |
经典案例
# -v 显示详细信息
# -h 显示进度条
rpm -ivh package.rpm
rpm -e package-name # 卸载软件包
rpm -qa # 查询所有已安装的软件包
rpm -q package-name # 查询特定软件包是否安装
rpm -ql package-name # 列出软件包包含的文件
rpm -qf /usr/bin/rz # 查询文件属于哪个软件包注意事项
- 依赖问题:RPM 不会自动解决依赖关系(建议使用 yum/dnf)
- 安装顺序:多个相互依赖的软件包需按正确顺序安装
- 强制安装:
--force可能破坏系统稳定性 - 签名验证:建议始终验证软件包签名
- 配置文件:升级时旧配置文件会保存为 .rpmsave 文件
yum/dnf软件包管理
yum(Yellowdog Updater Modified)是 RHEL/CentOS 等基于 RPM 的 Linux 发行版的 高级包管理工具,相比 rpm 能 自动解决依赖关系,简化软件安装和管理。
语法格式
yum [选项] [命令] [软件包名/组名/通配符]常用命令
| 操作类型 | 命令 | 功能说明 |
|---|---|---|
| 安装 | install | 安装指定软件包 |
groupinstall | 安装软件包组 | |
| 卸载 | remove | 卸载软件包(保留依赖) |
autoremove | 卸载未使用的依赖 | |
| 更新 | update | 更新所有/指定软件包 |
upgrade | 升级整个系统(CentOS 8+用dnf) | |
| 查询 | list | 列出可用/已安装的包 |
search | 搜索软件包 | |
info | 显示软件包详细信息 | |
provides | 查询命令所属安装包 | |
| 仓库 | repolist | 列出已启用的仓库 |
clean all | 清理缓存(/var/cache/yum) | |
| 历史 | history | 查看操作历史 |
history undo <ID> | 撤销指定操作 |
选项
| 选项 | 作用 |
|---|---|
-y | 自动回答 "yes"(非交互式) |
-q | 静默模式(不显示输出) |
-v | 显示详细过程 |
--nogpg | 跳过 GPG 签名验证 |
经典示例
yum
yum clean all # 清理缓存(释放磁盘空间)
yum makecache # 生成缓存
yum install -y nginx # 安装软件包
yum remove httpd # 卸载软件包(保留依赖)
yum update -y # 更新所有软件包
yum search python3 # 搜索软件包
yum info nginx # 查看软件包信息
## 回滚操作
yum history list # 查看yum操作历史
yum history undo 3 # 撤销ID为3的操作
yum localinstall /path/to/package.rpm # 本地安装 RPM常见问题
报错 "No match for argument" ⇒ 检查包名是否正确或更新仓库:
sudo yum makecache仓库元数据损坏 ⇒ 清理缓存后重建:
bashsudo yum clean all sudo yum makecache替代
yum的dnfCentOS 8+/RHEL 8+ 中,yum是dnf的符号链接,用法基本一致。
alias - 命令别名
在 Shell 会话中创建命令快捷方式,通过字符串替换实现命令简化或增强
语法格式
alias [别名]='原始命令'操作维度
| 操作类型 | 命令示例 | 作用说明 |
|---|---|---|
| 创建别名 | alias ll='ls -alh' | 将ls -alh绑定到ll |
| 查看别名 | alias 或 alias ll | 显示所有/指定别名定义 |
| 删除别名 | unalias ll | 移除指定别名 |
| 持久化存储 | 写入~/.bashrc或~/.zshrc | 实现登录时自动加载 |
clear - 清除屏幕
clear命令来自英文单词,中文译为“清理”,其功能是用于清除终端界面已有内容。执行clear命令后终端界面会向后翻一页,实现了“清除”当前屏幕上已有内容的效果,等同于快捷键“Ctrl+c”的效果
语法格式
clear [参数]选项
| 选型 | 说明 |
|---|---|
--help | 显示帮助信息 |
--vesion | 显示版本信息 |
xargs - 列数据转换为命令行参数
xargs(eXtended ARGuments)用于将标准输入(stdin)的数据转换为命令行参数,并传递给其他命令执行。它解决了管道符 | 无法直接将输入作为参数的问题,常用于批量处理文件、多参数传递等场景。
格式
[输入源] | xargs [选项] [目标命令] [目标命令的选项]输入源:通常来自管道(如
find、grep的输出)或文件。目标命令:默认是
echo(仅显示参数),通常替换为rm、mv、cp等需要参数的命令。
参数
| 参数 | 说明 |
|---|---|
-n NUM | 每次执行命令时传递 NUM 个参数 |
-I {} | 定义替换字符串(如 {}),将输入插入到命令的指定位置 |
-p | 交互式模式,执行前询问用户确认 |
-t | 打印要执行的命令(调试用) |
-0 / --null | 输入项以 \0 分隔(配合 find -print0 处理含空格/特殊字符的文件名) |
-P NUM | 并行执行,启动 NUM 个进程加速任务 |
-d DELIM | 自定义分隔符(默认以空格/Tab/换行分隔输入) |
-s MAX_SIZE | 设置命令行的最大总长度(避免 "Argument list too long" 错误) |
应用场景
# 删除所有 .tmp 文件(先确认列表,再替换为 rm)
find . -name "*.tmp" | xargs rm -f
# 将找到的 .log 文件移动到 backup 目录
find /var/log -name "*.log" | xargs -I {} mv {} ~/backup
find /var/log -name "*.log" | xargs -I @ mv @ ~/backup
find /var/log -name "*.log" | xargs -i -i mv {} ~/backup
# 使用 find -print0 和 xargs -0 安全处理文件名
find . -name "*.txt" -print0 | xargs -0 -I {} cp {} ~/docs
# 每次传递 3 个文件给 tar 命令压缩
find . -type f -name "*.csv" | xargs -n 3 tar -czvf archive.tar.gz
# 使用 4 个进程并行压缩图片
find . -name "*.jpg" | xargs -P 4 -I {} convert {} -resize 50% {}_resized.jpg
# 删除文件前询问用户确认
find . -name "*.bak" | xargs -p rm -f
# 批量重命名文件(比 for 循环更高效)
ls *.txt | xargs -I {} mv {} {}_backup
# 将输入作为中间参数传递
echo "keyword" | xargs -I {} grep {} file1.txt file2.tx
# 批量替换文件后缀
find . -name "*.cfg" | xargs -I {} bash -c 'mv "$0" "${0%.cfg}.md"' {} \;seq - 生成数字序列
生成指定范围内的整数序列,常用于循环操作或生成测试数据。
语法格式
seq [选项] 起始值 步长 结束值
# 简化形式:
seq 结束值 # 生成 1 到 N 的序列
seq 起始值 结束值 # 生成 起始值 到 结束值 的序列
seq 起始值 步长 结束值选项
| 选项 | 作用 | 示例 |
|---|---|---|
-s | 指定分隔符(默认换行) | seq -s " " 3 → 1 2 3 |
-w | 等宽补零(对齐数字位数) | seq -w 8 10 → 08 09 10 |
-f | 格式化输出(类似 printf) | seq -f "num%03g" 3 → num001 num002 num003 |
make - 构建工具
GNU make 是自动化构建工具,通过读取 Makefile 文件自动执行编译、安装等任务。广泛用于 C/C++ 项目,但支持任意文件依赖关系的自动化处理。
语法格式
make [选项] [目标] [宏定义]选项
| 选项 | 作用 |
|---|---|
-f FILE | 指定非默认名称的 Makefile |
-j N | 并行执行任务(N=线程数) |
-n | 只显示命令但不执行(dry-run) |
-B | 强制重建所有目标 |
-C DIR | 先切换到指定目录再执行 |
install | 执行安装目标 |
clean | 执行清理规则 |
--debug | 输出调试信息 |
经典案例
make # 编译默认目标(通常是第一个目标)
make -j4 # 使用4个线程并行编译
make -f build.mk # 指定自定义 Makefile
make CC=clang # 临时使用clang代替默认编译器
make install # 执行安装目标
make clean # 执行清理规则调试技巧
make --debug=v # 详细输出依赖检查过程
make -p # 打印所有内置规则和变量NOTE
💡 扩展知识:现代替代品如 CMake/Meson 会生成 Makefile,但 make 仍是实际执行构建的标准工具。
getent - 统一查询系统数据库
getent 是 Linux 系统中用于统一查询系统数据库的命令
语法格式
getent 数据库类型 [查询键]基本功能
| 数据库类型 | 描述 |
|---|---|
passwd | 用户账户信息(替代 /etc/passwd) |
group | 组信息(替代 /etc/group) |
hosts | 主机名解析(替代 /etc/hosts) |
services | 网络服务列表 |
shadow | 密码哈希(需 root 权限) |
经典案例
getent passwd # 批量查询所有用户等效于 cat /etc/passwd
getent passwd username # 查询用户信息
getent group groupname # 查询组信息
getent hosts www.openeuler.org # 主机名解析
getent services ssh # 查询网络服务
getent --help | grep databases: # 显示支持的数据库类型at - 在指定时间执行一次性任务
at 命令用于在指定时间执行一次性任务,适合安排未来某个时刻运行的作业。任务执行后会从队列中自动删除。
语法格式
at [-V] [-q queue] [-f file] [-mldbv] TIME
at -c job [job...]
atq [-V] [-q queue]
atrm [-V] job [job...]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-f file | 从指定文件读取命令 | at -f script.sh 13:00 |
-m | 任务完成后发送邮件 | at -m now + 1 hour |
-l | 列出待处理任务(同atq) | at -l |
-d job | 删除指定任务(同atrm) | at -d 3 |
-v | 显示任务执行时间 | at -v tomorrow |
-q queue | 指定队列(a-z,A-Z) | at -q b 15:00 |
TIME | 时间格式:HH:MM、noon、midnight等 | at 23:59 |
经典案例
# 明天上午10点执行备份脚本
at 10:00 tomorrow -f /backup/script.sh
# 5分钟后执行命令
echo "shutdown -h now" | at now + 5 minutes
# 查看当前任务队列
atq
1 Fri Aug 20 10:00:00 2023 a user
# 删除编号为2的任务
atrm 2注意事项
- 需要atd服务运行(
systemctl start atd) - 默认输出会通过邮件发送,建议使用
-m选项或重定向输出 - 时间格式支持灵活写法:
- 绝对时间:10:00、23:59
- 相对时间:now + 2 hours
- 特殊时间:noon、teatime(16:00)、tomorrow
- 不同发行版可能需要单独安装at包
- 系统重启后未执行的任务会丢失
crontab - 周期性任务调度守护进程
crontab 是 Linux 系统中用于周期性执行任务的守护进程,通过读取 /etc/crontab 和用户 crontab 文件来调度任务。相比 at 命令,crontab 更适合需要重复执行的任务。
语法格式
crontab [-u user] [-l | -r | -e] [file]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-u user | 指定用户crontab | crontab -u alice -l |
-l | 列出当前crontab内容 | crontab -l |
-r | 清空指定用户crontab,默认root | crontab -r |
-e | 编辑当前crontab | crontab -e |
-f file | 从文件安装crontab | crontab ~/mycron |
-n | 前台运行模式 | crond -n |
-s | 启用SELinux安全上下文 | crond -s |
时间格式说明
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
# 分 时 日 月 周 用户 command- 分钟(0 - 59)
- 小时(0 - 23)
- 日期(1 - 31)
- 月份(1 - 12)
- 星期(0 - 7,0 和 7 都代表周日)
- user-name执行用户,默认root
command是要执行的命令或脚本
时间表达式
*:表示任意值,例如*在分钟字段就意味着每分钟。,:用于分隔多个值,像1,3,5就表示 1、3、5 这几个值。-:用于指定范围,例如1-5代表从 1 到 5 的范围。/:用于指定间隔,例如*/2表示每 2 个单位执行一次。
经典案例
# 每天凌晨3点执行备份脚本
0 3 * * * /usr/local/bin/backup.sh
# 每5分钟检查一次服务状态
*/5 * * * * /usr/bin/systemctl check-service
# 每周一上午9点发送周报
0 9 * * 1 /usr/bin/send-weekly-report
# 每月1号中午12点清理日志
0 12 1 * * /usr/bin/logrotate -f /etc/logrotate.conf
# 每天0点备份代码
0 0 * * * /usr/bin/tar zcf /data/www-$(/usr/bin/date +%F).tar.gz /data/wwwroot/www
# 查看当前用户的crontab
crontab -l
# 编辑crontab(使用默认编辑器)
crontab -e注意事项
- 服务必须保持运行:
systemctl enable --now crond - 环境变量与登录shell不同,建议脚本中使用绝对路径
- 特殊符号说明:
*表示所有有效值,表示多个时间点(1,3,5)-表示范围(1-5)/表示间隔(*/10)
- 系统级crontab位于:
/etc/crontab/etc/cron.d//etc/cron.hourly/等目录
- 日志查看:
grep CRON /var/log/syslog或journalctl -u crond
john - 密码破解工具
john 是一个强大的密码破解工具,支持多种加密算法和哈希类型。它常用于安全审计和密码强度测试。
语法格式
john [选项] [文件]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-w:FILE | 使用指定的单词列表文件 | john -w:wordlist.txt hashfile |
-rules | 启用规则攻击 | john -rules hashfile |
-single | 使用单模式破解 | john -single hashfile |
-incremental | 使用增量模式破解 | john -incremental hashfile |
--show | 显示已破解的密码 | john --show hashfile |
-format:NAME | 指定哈希格式 | john -format:md5crypt hashfile |
-users:[-]LOGINUID[,..] | 只针对特定用户 | john -users:0 hashfile |
-groups:[-]GID[,..] | 只针对特定组 | john -groups:0 hashfile |
-salts:[-]COUNT | 只针对特定数量的盐值 | john -salts:2 hashfile |
经典案例
# 使用单词列表破解哈希文件
john -w:wordlist.txt shadow
# 使用规则攻击破解哈希文件
john -rules shadow
# 显示已破解的密码
john --show shadow
# 使用增量模式破解哈希文件
john -incremental shadow
# 只针对特定用户破解哈希文件
john -users:root shadow注意事项
- 合法性:使用
john进行密码破解时,请确保你有合法权限。未经授权的密码破解是违法行为。 - 性能:密码破解是一个资源密集型任务,建议在性能较好的机器上运行,或者使用分布式破解工具如
John the Ripper的分布式版本。 - 哈希格式:确保指定正确的哈希格式,否则
john可能无法正确识别和破解哈希。 - 单词列表:选择一个高质量的单词列表可以显著提高破解成功率。常用的单词列表包括
rockyou.txt等。 - 日志记录:建议在破解过程中记录日志,以便后续分析和审计。
sh - Bourne Shell 命令解释器
简介
sh 是 Unix/Linux 系统中最基础的 shell 解释器,全称为 Bourne Shell。作为系统默认的命令行解释器,它负责解析用户输入的命令并与操作系统内核交互。现代系统中通常将 sh 符号链接到兼容性更好的 shell(如 bash 或 dash)。
语法格式
sh [选项] [脚本文件] [参数]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-c 命令 | 执行指定字符串命令 | sh -c "ls -l" |
-n | 检查脚本语法不执行 | sh -n test.sh |
-x | 显示执行的命令及参数 | sh -x script.sh |
-e | 命令失败立即退出 | sh -e backup.sh |
-v | 显示输入的命令行 | sh -v install.sh |
-u | 使用未定义变量时报错 | sh -u config.sh |
经典案例
# 1. 执行单行命令
sh -c "date +%F"
# 2. 调试脚本执行
sh -x /etc/init.d/nginx start
# 3. 带参数执行脚本
sh backup.sh /data /backup
# 4. 检查脚本语法
sh -n deploy.sh && echo "语法检查通过"
# 5. 安全模式运行
sh -eu cleanup.sh注意事项
- 现代系统中
/bin/sh通常是符号链接,实际可能是bash、dash等兼容 shell - 使用
-e选项可避免错误继续执行,适合关键任务脚本 -x调试输出会显示变量展开后的实际值- 不同系统的 sh 实现可能有细微差异,重要脚本应指定完整路径
- 避免使用未定义的变量,建议配合
-u选项使用
stress - 系统压力测试工具
简介
stress 是一个用于对 Linux 系统施加 CPU、内存、IO 和磁盘压力的工具,常用于系统稳定性测试和性能评估。它可以模拟高负载场景,帮助管理员测试系统在压力下的表现。
语法格式
stress [OPTIONS]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-c N | 启动 N 个 CPU 压力进程 | stress -c 4 |
-i N | 启动 N 个 IO 压力进程 | stress -i 2 |
-m N | 启动 N 个内存压力进程 | stress -m 1 |
-d N | 启动 N 个磁盘压力进程 | stress -d 1 |
-t TIMEOUT | 设置测试持续时间(秒) | stress -c 2 -t 60 |
--vm-bytes SIZE | 指定每个内存压力进程使用的内存量(默认 256MB) | stress -m 1 --vm-bytes 512M |
--hdd-bytes SIZE | 指定每个磁盘压力进程写入的数据量 | stress -d 1 --hdd-bytes 1G |
经典案例
# 启动4个CPU压力进程,持续30秒
stress -c 4 -t 30
# 同时施加CPU和内存压力(2个CPU进程+1个内存进程使用1GB内存)
stress -c 2 -m 1 --vm-bytes 1G -t 120
# 综合压力测试(CPU+内存+磁盘)
stress -c 2 -i 1 -m 1 -d 1 --hdd-bytes 500M -t 300注意事项
- 需要 root 权限才能施加磁盘和内存压力
- 过度使用可能导致系统不稳定,建议在测试环境中使用
- 监控系统资源使用情况(建议配合
top或htop使用) - 默认情况下,内存压力进程会不断分配和释放内存
- 磁盘压力测试会创建大文件(默认在临时目录),测试完成后会自动删除
free - 显示内存使用情况
free 命令用于显示系统的物理内存和交换空间使用情况,包括总内存、已用内存、空闲内存等信息。
语法格式
free [选项]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-b | 以字节为单位显示内存使用情况 | free -b |
-k | 以 KB 为单位显示(默认) | free -k |
-m | 以 MB 为单位显示 | free -m |
-g | 以 GB 为单位显示 | free -g |
-h | 以人类可读的格式显示(自动选择单位) | free -h |
-s 秒数 | 每隔指定秒数刷新显示 | free -s 5 |
-c 次数 | 与 -s 配合使用,指定刷新次数 | free -s 2 -c 10 |
-t | 显示总计行(物理内存 + swap) | free -t |
--help | 显示帮助信息 | free --help |
--version | 显示版本信息 | free --version |
输出字段说明
total used free shared buff/cache available
Mem: 8169348 2345232 3412345 123456 2411771 5123456
Swap: 2097148 0 2097148- total: 总内存量
- used: 已使用内存(包括buffers/cache)
- free: 完全空闲内存
- shared: 共享内存
- buff/cache: 缓存和缓冲区使用的内存
- available: 估计可用于启动新应用的内存
使用示例
# 以人类可读的格式显示内存使用情况
free -h
# 每隔 3 秒刷新一次,共刷新 5 次
free -s 3 -c 5
# 显示总计行(物理内存 + swap)
free -t
# 以 MB 为单位显示内存使用情况
free -m注意事项
- Linux会尽可能利用空闲内存做缓存,因此看到"free"很少是正常现象
- 关注"available"字段更准确反映可用内存
- 交换空间(swap)使用过多可能表明物理内存不足
- 在嵌入式系统或容器环境中,某些字段可能显示为0
