# Linux终端生存手册:从cd到zip的救命指令实战
在Linux系统中,终端是通往系统深处的钥匙。无论是日常运维还是紧急故障处理,掌握核心命令都是必备技能。本文从文件操作、系统监控、网络诊断到数据压缩,梳理一套终端生存指令集,帮助读者在关键时刻从容应对。
## 一、文件系统基础:cd到ls的日常操作
### 1.1 目录切换与查看
`cd`是进入任何目录的起点:
```bash
cd /etc # 进入/etc目录
cd ~ # 返回用户主目录
cd - # 返回上一个工作目录
cd .. # 返回上级目录
```
`ls`命令列出目录内容,常用选项组合:
```bash
ls -la # 显示所有文件(包括隐藏)及详细信息
ls -lh # 以人类可读格式显示文件大小
ls -lt # 按时间排序显示
ls -lS # 按文件大小排序显示
```
### 1.2 文件查找与定位
当文件位置不明时,`find`是最强大的搜索工具:
```bash
find / -name "*.conf" -type f 2>/dev/null # 查找所有.conf配置文件,忽略权限错误
find . -mtime -7 # 查找最近7天修改过的文件
find . -size +100M # 查找大于100MB的文件
find . -exec ls -l {} \; # 对找到的每个文件执行ls命令
```
快速定位命令位置:
```bash
which python3 # 显示python3命令的完整路径
whereis nginx # 显示nginx的二进制、源码和手册页位置
```
## 二、系统状态监控:及时发现问题
### 2.1 进程与资源查看
`top`命令实时显示系统进程和资源占用,交互式操作:
```bash
top # 进入交互界面
# 在top中按:
# 1 - 显示每个CPU核心使用情况
# M - 按内存使用排序
# P - 按CPU使用排序
# k - 终止进程(需输入PID)
```
更简洁的`htop`(需安装)提供彩色界面和鼠标操作支持。
查看进程树:
```bash
pstree -p # 显示进程树,附带PID
```
### 2.2 内存与磁盘监控
内存使用情况:
```bash
free -h # 显示内存使用,-h以人类可读格式
vmstat 2 10 # 每2秒输出一次系统状态,共10次
```
磁盘空间预警:
```bash
df -h # 查看各分区磁盘使用率
du -sh /* # 统计根目录下各目录总大小
du -sh * | sort -hr # 当前目录下按大小排序
```
当磁盘空间告急时,快速定位大文件:
```bash
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null
```
<"p3.s6k3.org.cn"><"m7.s6k3.org.cn"><"a9.s6k3.org.cn">
## 三、文本处理三剑客:grep、sed、awk
### 3.1 grep:文本搜索
`grep`是从文件或输出中提取关键信息的利器:
```bash
grep "error" /var/log/syslog # 在日志中查找error
grep -r "192.168.1." /etc/ # 递归搜索目录下所有文件
grep -v "^#" /etc/nginx/nginx.conf # 过滤掉注释行
grep -E "ERROR|FATAL" app.log # 扩展正则,匹配多个关键词
```
### 3.2 sed:流编辑器
`sed`用于文本替换和处理:
```bash
sed -i 's/old/new/g' file.txt # 将文件中所有old替换为new
sed -n '10,20p' file.txt # 打印第10到20行
sed '/^$/d' file.txt # 删除空行
```
### 3.3 awk:文本分析工具
`awk`适合结构化文本处理:
```bash
awk '{print $1, $NF}' access.log # 打印第一列和最后一列
awk '$9 == 404 {count++} END {print count}' access.log # 统计404状态码数量
awk -F: '{print $1}' /etc/passwd # 以:为分隔符,打印第一列(用户名)
```
## 四、网络诊断:连接世界的触角
### 4.1 连通性测试
```bash
ping -c 4 google.com # 发送4个ICMP包测试连通性
telnet 192.168.1.1 80 # 测试端口是否开放
nc -zv 192.168.1.1 1-1000 # 扫描1-1000端口
```
### 4.2 路由追踪
```bash
traceroute google.com # 显示到目标的路由路径
mtr google.com # 结合ping和traceroute的动态工具
```
### 4.3 网络配置查看
```bash
ip addr show # 查看IP地址配置
ss -tuln # 查看监听端口
netstat -anp | grep 8080 # 查看8080端口占用情况
curl ifconfig.me # 查看公网IP
```
## 五、文件传输与压缩:数据的搬运工
### 5.1 远程文件传输
```bash
scp file.txt user@192.168.1.100:/home/user/ # 上传文件到远程
scp user@192.168.1.100:/remote/file.txt ./ # 从远程下载文件
rsync -av /local/dir/ user@remote:/remote/dir/ # 增量同步目录
```
### 5.2 压缩与解压
**tar打包与压缩**:
```bash
tar -czf archive.tar.gz /path/to/dir # 创建tar.gz压缩包
tar -xzf archive.tar.gz -C /target/dir # 解压tar.gz到指定目录
tar -cjf archive.tar.bz2 /path/to/dir # 创建tar.bz2压缩包
tar -xjf archive.tar.bz2 # 解压tar.bz2
```
**zip压缩**:
```bash
zip -r archive.zip /path/to/dir # 递归压缩目录
unzip archive.zip -d /target/dir # 解压到指定目录
zip -e secure.zip file.txt # 创建加密zip(提示输入密码)
```
**查看压缩包内容**:
```bash
tar -tf archive.tar.gz # 查看tar包内容
unzip -l archive.zip # 查看zip包内容
```
## 六、权限管理:守护系统的防线
### 6.1 权限修改
```bash
chmod 755 script.sh # 设置rwxr-xr-x权限
chmod +x script.sh # 添加执行权限
chown user:group file.txt # 修改文件所有者和所属组
chown -R user:group /dir # 递归修改目录下所有文件
```
<"d2.s6k3.org.cn"><"h5.s6k3.org.cn"><"v1.s6k3.org.cn">
### 6.2 特殊权限
```bash
chmod u+s executable # 设置SUID(执行时以所有者权限运行)
chmod g+s directory # 设置SGID(目录内新建文件继承组)
chmod +t /tmp # 设置粘滞位(只有所有者能删除)
```
## 七、应急处理:当系统出问题时
### 7.1 查找占用磁盘的罪魁祸首
```bash
# 查看各目录大小
du -h --max-depth=1 / | sort -hr
# 查找已被删除但仍占用空间的文件
lsof | grep deleted
```
### 7.2 处理高负载
```bash
# 查看CPU占用最高的进程
ps aux --sort=-%cpu | head -10
# 查看IO等待情况
iotop -o
# 杀死进程
kill -9 PID # 强制终止
kill -15 PID # 优雅终止
```
### 7.3 系统信息收集
```bash
uname -a # 查看内核版本
cat /etc/os-release # 查看发行版信息
dmesg | tail -20 # 查看最近内核日志
journalctl -xe # 查看系统日志
```
## 八、总结:从指令到习惯
掌握这些核心命令,就像拥有了一套Linux生存工具箱。但真正的熟练来自于日常实践——当遇到问题时,先想想哪个命令能帮你诊断;当重复操作时,考虑如何用管道组合简化流程。
以下是一个快速参考速查表:
| 场景 | 命令组合 |
|------|---------|
| 查找大文件 | `find / -type f -size +100M -exec ls -lh {} \;` |
| 统计日志中错误 | `grep -c "ERROR" app.log` |
| 查看端口监听 | `ss -tuln \| grep LISTEN` |
| 打包并排除目录 | `tar -czf backup.tar.gz --exclude='node_modules' /project` |
| 同步目录 | `rsync -av --delete source/ dest/` |
终端不是冰冷的黑框,而是通往系统深处的窗口。理解每个命令的作用和组合方式,就能在系统出现问题时从容应对,甚至在日常工作中事半功倍。