主题
06 · 文本检索、管道与日志排查
目标:用管道组合命令,掌握
grep够用子集,会跟 Nginx / systemd 日志。
1. 环境前提
- 已装 Nginx(04);能
sudo - 懂
less/tail(02)
2. 管道心智
text
命令A 的标准输出 →|→ 命令B 的标准输入1
bash
ps aux | grep nginx
sudo ss -tulpn | grep ':80'
df -h | grep -E '^/dev'1
2
3
2
3
常用接头:
| 符号 | 含义 |
|---|---|
| | 管道 |
> | 覆盖写入文件 |
>> | 追加 |
2> | 重定向标准错误 |
&> | 合并 stdout/stderr(bash) |
bash
curl -sI http://127.0.0.1/ > ~/lab/headers.txt
curl -sI http://127.0.0.1/bogus 2> ~/lab/curl-err.txt1
2
2
3. grep 够用子集
bash
grep 错误词 文件
grep -i error 文件 # 忽略大小写
grep -R "TODO" ~/lab # 递归
grep -n pattern 文件 # 显示行号
grep -v pattern 文件 # 反向(去掉匹配行)
grep -E 'error|fail|fatal' 文件1
2
3
4
5
6
2
3
4
5
6
结合管道:
bash
sudo journalctl -u nginx --no-pager | grep -i error | tail -n 201
4. awk / sed(只记两招)
不必学完整语言;排查时两招够用:
bash
# 打印 ss 输出第 5 列附近(示意:按空格拆列)
sudo ss -tuln | awk 'NR==1 || /:80/'
# 简单替换预览(不改文件)
echo 'port=3000' | sed 's/3000/8080/'1
2
3
4
5
2
3
4
5
改配置文件:先备份再编辑,不要依赖复杂 sed 一行改生产配置。
5. 跟日志的三条路
5.1 传统文件
bash
sudo less /var/log/nginx/access.log
sudo less /var/log/nginx/error.log
sudo tail -n 100 /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log # 实时跟;Ctrl+C 停1
2
3
4
2
3
4
5.2 journalctl(systemd)
bash
sudo journalctl -u nginx -n 50 --no-pager
sudo journalctl -u nginx -f
sudo journalctl -u nginx --since "10 minutes ago"1
2
3
2
3
5.3 跟一条错误的练习
- 访问一个不存在的路径:
curl -I http://127.0.0.1/this-should-404 sudo tail -n 20 /var/log/nginx/access.log找到对应行- 若故意弄坏配置(仅练习机):改完
sudo nginx -t看报错,再journalctl/ error.log
6. 云机 vs WSL
| 说明 | |
|---|---|
| 管道 / grep | 相同 |
/var/log/syslog | 桌面/云机常有;WSL 日志位置可能不同,优先 journalctl |
tail -f | 两边都好用 |
7. 动手清单
- [ ] 用管道从
ps aux滤出sshd或nginx - [ ]
grep -n在某个文本文件里搜词并看到行号 - [ ]
sudo tail -f /var/log/nginx/access.log,另开会话curl几次,看到新行 - [ ]
sudo journalctl -u nginx -n 30 --no-pager读一遍
8. 常见翻车
| 翻车 | 处理 |
|---|---|
日志巨大卡死 cat | 用 less / tail / grep |
| 权限不够 | 加 sudo;或把自己加进 adm 组(按发行版习惯) |
grep 无输出以为没日志 | 先确认服务名、journalctl -u 单位名是否正确 |
在生产对日志 > 覆盖 | 用 >> 或拷贝到 ~/lab 再分析 |
9. 官方入口
man grep、man journalctl、man tail- systemd journal
下一篇:防火墙与 SSH 加固 —— 在「能登录」的前提下收紧暴露面。
OS 深读:21 · 文件描述符、管道与重定向。
