一、为什么是 2015 年这一份
2015 年这个时间点前后,Linux 命令行工具进入"成熟稳定期":
- 核心三剑客(
cat/grep/sed/awk/find)自 1980 年代起就没大改过 - GNU coreutils 系列(
ls/cat/md5sum/envsubst等)2015 已是 8.x systemd在 RHEL 7(2014)/ CentOS 7(2014)/ Ubuntu 15.04(2015)陆续上位top3.x 时代 /tmux1.x 稳定(tmux 2.0 是 2015-04 发布的)glances2.x 时代(glances 2.0 是 2014-12 发布的)
这一篇覆盖日常 Linux 工作中出现频次最高的 20+ 工具——文件查看、文本处理、进程管理、压缩归档、系统信息、杂项命令。每条只给"够用"的参数速查,不展开手册(详见各命令的 man 页)。
阅读建议:本文按"主题归类"组织,每个小节独立可读。遇到具体场景直接
Ctrl+F搜命令名。
二、文件查看与操作
2.1 cat:查看文件内容
cat 是"concatenate"的简写,2015 已是 8.x 时代。
| |
重要细节:
cat <<"EOF"vscat <<EOF区别在引号。带引号时 shell 不解析$VAR、反引号等,写 Dockerfile / K8s manifest 这种带$VAR的模板文件时必须用引号。
2.2 ls:列出文件信息
| |
2.3 md5sum:校验文件完整性
| |
2.4 hdparm:测试磁盘读写速度
| |
2.5 rm:删除文件/目录
大量文件不能用 rm *,会触发 -bash: /bin/rm: 参数列表过长。
| |
三、文本处理三剑客
3.1 grep:搜索匹配行
| |
3.2 sed:流编辑器
| |
3.3 find:查找文件
| |
四、进程管理
4.1 ps:查看进程
| |
grep -v grep:把 grep 命令本身从结果里排除掉,否则会看到自己。
4.2 kill:杀进程
| |
4.3 top:实时进程监控
top 是 1991 年起的"上古"工具,至今仍是 Linux 性能观测的入门首选。
| |
输出解读:
| 行 | 含义 |
|---|---|
| 第 1 行 | 当前时间、运行时间、当前用户、CPU 平均负载(1/5/15 分钟) |
| 第 2 行 | 总/运行/休眠/停止/僵尸进程数 |
| 第 3 行 | us(用户)/ sy(内核)/ ni(调整优先级)/ id(空闲)/ wa(等待 IO)/ hi(硬件中断)/ si(软件中断)/ st(虚拟化偷走) |
| 第 4 行 | 物理内存总量、空闲、已用、内核缓存 |
| 第 5 行 | 虚拟内存总量、空闲、已用、下一波分配量 |
进程字段:
| 字段 | 含义 |
|---|---|
| PID | 进程 ID |
| USER | 进程用户名 |
| PR | 动态优先级 |
| NI | 静态优先级(可被 nice 调整) |
| VIRT | 虚拟内存 |
| RES | 物理内存 |
| SHR | 共享内存 |
| S | 状态(D 不可中断 / I idle / R 运行 / S 睡眠 / T 停止 / Z 僵尸) |
| %CPU / %MEM | CPU / 内存占用 |
| TIME+ | 累计 CPU 时间 |
| COMMAND | 命令 |
Java 进程的 VIRT 异常大:Java 8+ 用 Metaspace 取代 PermGen,元空间放在 OS 本地内存。每个线程都分配一个 arena(64MB),线程一多 VIRT 就巨大。这不是真用了那么多内存——要用 pmap 查真实占用。
| |
常用快捷键:
| 快捷键 | 功能 |
|---|---|
shift+m | 按内存排序 |
shift+P | 按 CPU 排序 |
shift+t | 按时间排序 |
shift+n | 按 PID 排序 |
m | 内存显示模式 |
E | 内存总览单位 |
e | 进程内存单位 |
c | 显示完整命令行 |
i | 不显示闲置 |
l | 启动时间和平均负载 |
4.4 tmux:终端复用
| |
4.5 nohup:不挂断运行
| |
0—— 键盘输入1—— 屏幕输出(标准输出)2—— 错误输出2>&1—— 把错误输出重定向到标准输出- 最后的
&—— 后台运行
jobs 命令只对当前终端有效,关闭终端后 jobs 就看不到后台进程了,此时用 ps。
| |
五、压缩归档
5.1 tar:归档与压缩
| |
六、系统信息
6.1 CPU 信息
| |
统计 CPU 数量:
| |
6.2 内存信息
| |
6.3 主板/PCI 设备
| |
6.4 journalctl:systemd 日志查询
journalctl 是 systemd 的日志工具,2015 年起在主流发行版成为默认日志系统。
| |
七、glances:htop 的"加强版"
glances(2014-12 发布 2.0)提供一屏式综合监控,常被推荐为 htop 的替代品。
| |
关于 htop:htop 在 2015 仍是 top 的"事实标准"加强版。glances 的差异在"一屏看 CPU / 内存 / 磁盘 / 网络 / 进程全维度"。本文不展开,详见独立文章。
八、环境变量与模板:envsubst
envsubst 是 GNU gettext 套件里的小工具,专门做"模板 + 环境变量 → 配置":
| |
典型场景:用模板生成 K8s 部署文件——一份 YAML 模板 + 多个环境变量 → 多份目标 manifest。
九、pciutils:网卡/PCI 设备排查
lspci 是排查网卡驱动问题最常用的工具。当一个新机器装完系统发现网卡识别不到,先看 lspci 找到芯片型号,再去厂商站下载驱动。
| |
常见坑:Realtek r8168 网卡在 CentOS 7 默认驱动下表现不佳,需要从 Realtek 官网下载驱动源码手动编译。常见编译错误
ether_addr_copy 重定义、ndo_change_mtu等都需要手动改源码适配内核版本。
十、nohup + 进程组:2>&1 的真意
2>&1 的写法非常常见但很多人不理解。这里给一个完整图:
| 文件描述符 | 含义 | 默认指向 |
|---|---|---|
0 | stdin(键盘输入) | 键盘 |
1 | stdout(标准输出) | 屏幕 |
2 | stderr(错误输出) | 屏幕 |
| |
nohup + & + > log 2>&1 是后台跑长任务的标准三件套。
十一、systemctl 资源限制
systemctl edit 是给已有 service 加 overlay 配置(不修改原 unit 文件):
| |
| 字段 | 含义 |
|---|---|
CPUQuota=20% | 限制最多用 20% 单核 CPU |
MemoryLimit=256M | 限制最大 256M 内存 |
Nice=-10 | 优先级(-20~19,越小越高) |
IOWeight=100 | IO 权重(1~10000) |
十二、前置知识 / 下一步
- 想看
journalctl完整用法 →man journalctl - 想看
top完整字段 →man top - 想看
sed完整正则语法 →man sed - 想看
fio性能压测 → 翻本系列《Linux 磁盘与 LVM 深度实践》 - 想看
systemctl完整服务管理 → 翻本系列《Linux 远程登录与安全实践》中的 service 文件部分
十三、参考资源
- GNU Coreutils:https://www.gnu.org/software/coreutils/manual/
man各命令手册页- TLDP Advanced Bash Scripting Guide:https://tldp.org/LDP/abs/html/
- Linux man-pages project:https://www.kernel.org/doc/man-pages/
2024 视角:10 年后这 20+ 工具的"现代化"姿势
2015 年这份速查在 2024 仍有 90% 适用——这正是 GNU coreutils 三剑客的"长青"价值。但在 2024 年的服务器上,有几处需要更新:
一、net-tools 真的可以删了
2015 年时
netstat还在主流发行版,2024 年 RHEL 9 / Ubuntu 24.04 已彻底移除 net-tools。ss(iproute2)已经完全替代:1 2 3ss -tulnp # 替代 netstat -tulnp ss -s # 替代 netstat -s(统计) ss -tin # TCP 连接详细信息(含拥塞窗口、重传)ifconfig替代品:1 2ip -br addr show # 简洁模式 ip -c addr show # 彩色输出route替代品:1 2ip route show ip -6 route show # IPv6 路由
二、htop 仍是 top 首选替代
htop 3.x(2022+)已经支持鼠标操作、横向滚动、进程树折叠,2024 是事实标准。btop(2021 推出)更激进:CPU/内存/磁盘/网络一屏 + 图形化 sparkline,颜值党首选。glances仍是 Web/API 化的最佳选择:可以glances -w启 Web 服务(默认 61208 端口),浏览器看监控。
三、tmux 3.x 的新特性
tmux 3.0(2021-04 重大版本)之后:- status-line 支持字符串插值(
#{...}语法) - popup 弹窗(
display-popup -E "cmd") - mouse 模式改进
- status-line 支持字符串插值(
2024 推荐配置
~/.tmux.conf:1 2 3set -g mouse on set -g default-terminal "tmux-256color" set -ag terminal-overrides ",xterm-256color:RGB"
四、systemd 资源控制的"现代写法"
2015 那篇给的 CPUQuota=20% 仍是有效写法,但 2024 更精细的有:
CPU 亲和性:
1 2[Service] CPUAffinity=0-3内存 + 交换空间硬限制:
1 2MemoryMax=512M MemorySwapMax=0 # 禁用 swapIO 控制器(systemd 240+):
1 2IOReadBandwidthMax=/dev/sda 100M IOWriteBandwidthMax=/dev/sda 50M
五、journalctl 仍是事实标准
但 2024 推荐结构化查询:
1 2 3 4journalctl -u nginx --since "1 hour ago" --output=json | jq . journalctl -u nginx -p err -n 50 -f # 跟踪错误 journalctl --vacuum-size=200M # 限制日志大小 journalctl --list-boots # 看启动历史
六、fzf 应该是 2024 必装
2015 年没提的"现代神器"——fzf(命令行模糊查找器):
| |
fzf 让"在 1 万条历史命令里找刚才那条"变成 < 1 秒,是 2015 → 2024 提效最大的一颗"小宝石"。
