温馨提示×

如何过滤nohup日志内容

小樊
54
2026-09-06 14:45:55
栏目: 编程语言

在使用 nohup 运行程序时,通常会把输出重定向到日志文件,例如:

nohup python app.py > app.log 2>&1 &

下面是常见且实用的过滤 nohup 日志内容的方法。


一、查看日志时过滤(不修改日志文件)

1. 使用 grep 过滤关键字

grep "ERROR" app.log

忽略大小写:

grep -i "error" app.log

显示行号:

grep -n "Exception" app.log

2. 过滤“不包含”某些内容

grep -v "DEBUG" app.log

3. 多条件过滤(或)

grep -E "ERROR|WARN" app.log

4. 实时查看并过滤(类似 tail -f)

tail -f app.log | grep "ERROR"

二、按时间过滤日志

1. 查看最近 100 行

tail -n 100 app.log

2. 查看某个时间段(假设日志有时间戳)

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

三、把过滤后的内容存成新日志(不污染原日志)

grep "ERROR" app.log > error.log

只保留 ERROR 和 WARN:

grep -E "ERROR|WARN" app.log > important.log

四、运行时就“只记录想要的日志”(推荐)

如果程序支持日志级别(如 Python logging):

nohup python app.py --log-level ERROR > app.log 2>&1 &

或者在代码里配置:

logging.basicConfig(level=logging.ERROR)

五、高级:使用 awk 过滤

只显示第 1 列和时间:

awk '{print $1, $2}' app.log

按条件过滤:

awk '/ERROR/ {print}' app.log

六、日志太大时的建议

1. 使用 logrotate

避免 nohup 日志无限增长。

2. 输出到 /dev/null(不需要日志)

nohup python app.py > /dev/null 2>&1 &

如果你能告诉我:

  • 用的什么语言(Python / Java / Shell)
  • 日志格式示例
  • 想“过滤掉”还是“只保留”某些内容

我可以给你更精确的命令或配置。

0 踩