Linux 命令行实战:从害怕到熟练
三年前第一次登录 Linux 服务器,手都在抖。现在日常操作已经很熟练了。
高频命令
| 命令 | 用途 | 频率 |
|---|---|---|
| cd | 切换目录 | 每天百次 |
| ls -la | 查看文件详情 | 每天 50 次 |
| grep | 搜索内容 | 每天 30 次 |
| tail -f | 查看日志 | 每天 20 次 |
| cat | 查看文件 | 每天 20 次 |
| find | 查找文件 | 每天 10 次 |
| ps aux | 查看进程 | 每天 10 次 |
| kill | 杀进程 | 每天 5 次 |
日志查看
实时查看
tail -f /var/log/nginx/access.log
过滤关键词
# 查看错误日志
tail -f app.log | grep -i error
# 查看特定时间段的日志
sed -n '/2025-06-01 10:00/,/2025-06-01 11:00/p' app.log
日志分析
# 统计访问量前 10 的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
# 统计 HTTP 状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -rn
# 查找慢请求(响应时间 > 1s)
awk '$NF > 1 {print $0}' access.log
进程管理
查看进程
# 查看所有进程
ps aux
# 查看特定进程
ps aux | grep node
# 更直观的方式
htop
杀进程
# 按名称杀
pkill -f "node app.js"
# 强制杀
kill -9 12345
# 杀所有 node 进程
killall node
后台运行
# 后台运行,不随终端关闭退出
nohup node app.js &
# 更好的方式:使用 pm2
pm2 start app.js
pm2 logs
pm2 restart app
磁盘管理
查看空间
# 查看磁盘使用
df -h
# 查看目录大小
du -sh /var/log/*
# 找出大文件
find / -type f -size +100M 2>/dev/null | xargs ls -lh
清理空间
# 清理日志
> /var/log/app.log # 清空文件
find /var/log -name "*.log" -mtime +7 -delete # 删除 7 天前的日志
# 清理包缓存
apt clean
apt autoremove
网络排查
检查端口
# 查看端口占用
netstat -tlnp | grep 80
ss -tlnp | grep 80
# 检查端口连通性
nc -zv 192.168.1.100 80
抓包
# 抓 HTTP 请求
tcpdump -i eth0 port 80 -w capture.pcap
# 实时查看
tcpdump -i eth0 port 80 -A
DNS 查询
# 查询域名解析
dig example.com
nslookup example.com
# 查看 DNS 配置
cat /etc/resolv.conf
文本处理
sed 替换
# 替换文件内容
sed -i 's/old/new/g' file.txt
# 删除匹配行
sed -i '/pattern/d' file.txt
awk 处理
# 提取列
awk -F, '{print $1, $3}' data.csv
# 条件过滤
awk '$3 > 100 {print $0}' data.txt
组合使用
# 查找文件并替换内容
find . -name "*.js" -exec sed -i 's/var /let /g' {} \;
# 统计代码行数
find . -name "*.js" | xargs wc -l | tail -1
系统监控
资源使用
# CPU 和内存
top
htop
# 内存详情
free -h
# IO 情况
iostat -x 1
# 综合监控
vmstat 1
系统负载
# 查看负载
uptime
cat /proc/loadavg
# 查看用户
w
who
实用技巧
历史命令
# 搜索历史
ctrl+r # 然后输入关键词
# 查看历史
history | grep command
# 执行上一条命令
!!
# 执行第 N 条命令
!123
后台任务
# 暂停当前任务
ctrl+z
# 查看后台任务
jobs
# 恢复到前台
fg %1
# 恢复到后台
bg %1
SSH 隧道
# 本地端口转发
ssh -L 3000:localhost:3000 user@server
# 远程端口转发
ssh -R 3000:localhost:3000 user@server
常见问题排查流程
| 问题 | 排查命令 |
|---|---|
| 服务无法访问 | netstat/ss → firewall → nginx 配置 |
| 服务器卡顿 | top/htop → iostat → df -h |
| 磁盘满 | df -h → du -sh → find 大文件 |
| 内存不足 | free -h → ps aux 排序 |
| 连接超时 | ping → telnet/nc → tcpdump |
总结
Linux 命令行没有捷径,多用就熟了。
建议:
- 建个笔记,记常用命令
- 遇到问题先自己查,再搜答案
- 不确定的命令先在测试环境试
- 重要操作前备份
现在遇到问题,我已经不会慌了。知道该用什么命令、怎么分析,这就是最大的进步。