温馨提示×

centos nohup日志怎么过滤

小樊
35
2026-09-21 11:11:47
栏目: 智能运维

在 CentOS 下用 nohup 启动程序时,日志一般会重定向到文件(如 nohup.out 或自定义日志文件)。过滤日志本质上就是“对日志文件用文本处理命令”。下面按常见场景给你总结。


一、最常用:实时过滤日志(类似 tail + grep)

tail -f nohup.out | grep "ERROR"

只显示包含 ERROR 的行(实时)。

多个关键字(或关系):

tail -f nohup.out | grep -E "ERROR|WARN"

排除某些关键字:

tail -f nohup.out | grep -v "DEBUG"

二、查看历史日志并过滤

1. 直接 grep

grep "ERROR" nohup.out

2. 显示行号

grep -n "ERROR" nohup.out

3. 忽略大小写

grep -i "error" nohup.out

4. 统计出现次数

grep -c "ERROR" nohup.out

三、按时间过滤(日志里有时间字段时)

假设日志格式:

2026-01-21 10:30:00 ERROR xxxx

过滤某天:

grep "2026-01-21" nohup.out | grep "ERROR"

过滤某个时间段:

awk '$1=="2026-01-21" && $2>="10:00:00" && $2<="11:00:00"' nohup.out

四、配合 nohup 启动时直接过滤(不推荐但可用)

nohup python app.py 2>&1 | grep "ERROR" > error.log &

⚠ 注意:
这样会丢失未匹配的行,一般不建议,除非你只关心某类日志。


五、更专业的做法(推荐)

1. 用日志轮转 + grep

nohup ./app.sh > app.log 2>&1 &

然后:

tail -f app.log | grep ERROR

2. 用 less(大文件友好)

less app.log

在 less 中:

  • /ERROR 搜索
  • &ERROR 只显示匹配行

六、常见组合示例

只看异常:

tail -f nohup.out | grep -E "ERROR|Exception"

看某接口请求:

tail -f nohup.out | grep "/api/login"

看非心跳日志:

tail -f nohup.out | grep -v "heartbeat"

如果你愿意,可以:

  • 贴一段 nohup.out 示例日志
  • 或说明你用的是 Java / Python / Shell / Node

我可以帮你写精准的过滤命令

0