在 Linux 里有一句经典名言:一切皆文件。
普通文件、目录、硬件设备、进程、内存、网络、内核状态…… 统统以文件形式暴露出来。
对运维来说,读懂这些 “文件”,就等于读懂整个系统。
下面按类别讲清楚:能拿到什么信息 + 最高效的命令,直接用于日常排障。
一、普通文件:能看到什么?
可获取信息
- 文件内容、大小
- 权限、属主、属组
- 创建 / 修改 / 访问时间
- inode、硬链接数
- 文件真实类型(文本 / 二进制 / 脚本)
高效命令
ls -lh # 权限、大小、时间(日常首选)
stat # 最完整信息:inode、三大时间
file # 识别真实类型
md5sum # 校验是否被篡改
二、目录文件:能看到什么?
可获取信息
- 目录下所有文件列表
- 目录权限、深度、占用空间
- 子目录数量、文件数量
高效命令
ls -lh # 列表查看
du -sh # 查看目录真实占用
du -ah --max-depth=1 # 一级目录大小
tree # 树形结构(直观)
三、设备文件:能看到什么?
可获取信息
- 硬盘、U 盘、显卡、声卡、终端
- 虚拟设备(null、zero、random)
- 读写权限、设备号
高效命令
lsblk # 磁盘设备一览
fdisk -l # 磁盘分区
cat /dev/sda # 直接访问磁盘(谨慎)
lspci # PCI 设备
lsusb # USB 设备
四、进程文件(/proc/PID):运维核心!
这是 Linux 最强大的 “文件”,所有进程信息都在这里。
可获取信息
- PID、启动用户、状态
- 命令行参数、工作目录
- 环境变量(排错神器)
- 打开的文件、端口、内存、CPU
- 线程、堆栈、信号状态
高效命令
ps aux # 进程列表
top / htop # 实时监控
pidof nginx # 快速拿 PID
pgrep fcitx5 # 过滤进程
# 查看进程环境变量(你之前输入法冲突就靠它)
cat /proc/$$/environ | xargs -0 -n1
# 查看进程打开的文件/端口
lsof -p PID
lsof -i :80
# 查看进程启动命令
cat /proc/PID/cmdline | tr '\0' ' '
五、内核与系统信息(/proc 下的虚拟文件)
可获取信息
- CPU 信息、内存信息
- 系统版本、启动时间
- 中断、负载、挂载点
- 网络连接、路由、ARP
高效命令
cat /proc/cpuinfo # CPU
cat /proc/meminfo # 内存
cat /proc/loadavg # 系统负载
cat /proc/version # 内核版本
uptime # 运行时间 + 负载
free -h # 内存使用
df -h # 挂载与磁盘
六、网络信息:也是文件!
可获取信息
- TCP/UDP 连接
- 监听端口
- 路由表、网卡状态
- 网络统计
高效命令
ss -tulnp # 比 netstat 快得多(运维首选)
ip addr # 网卡 IP
ip route # 路由
cat /proc/net/tcp # 直接读网络文件
七、用户与权限信息
可获取信息
- 用户、UID、GID
- 密码、登录终端
- 在线用户、登录记录
高效命令
id # 当前用户信息
who # 谁在线
w # 详细在线情况
last # 登录历史
getfacl # 扩展权限
lsattr # 隐藏属性(不可删、不可改)
八、日志文件:系统的 “黑匣子”
可获取信息
- 系统启动日志
- 服务崩溃、报错
- 登录失败、安全事件
- 应用运行异常
高效命令
dmesg # 内核日志
journalctl -xe # systemd 日志
tail -f /var/log/syslog # 实时监控
tail -f /var/log/nginx/error.log
九、总结一张表:看什么 → 用什么命令
| 你想查的信息 | 最高效命令 | |
|---|---|---|
| 文件权限、大小、时间 | ls -lh、stat | |
| 文件真实类型、是否损坏 | file | |
| 进程 PID、状态 | ps、top、pidof、pgrep | |
| 进程环境变量 / 配置冲突 | cat /proc/PID/environ | xargs -0 -n1 |
| 端口占用、网络连接 | ss -tulnp、lsof | |
| 内存、CPU、系统负载 | free -h、top、cat /proc/cpuinfo | |
| 磁盘、挂载、目录大小 | df -h、du -sh、lsblk | |
| 系统日志、服务报错 | journalctl -xe、tail -f | |
| 用户、在线、权限 | id、who、w、getfacl |
一句话总结
Linux 一切皆文件,本质就是:
硬件、进程、网络、内存、日志、权限,全都能通过 “读文件” 拿到信息。
运维多年才真正发现:高效的不是记很多命令,而是知道哪类信息对应哪类文件,用最简单的命令直接拿到想要的信息。