温馨提示×

nohup日志乱码怎么办

小樊
56
2026-09-21 17:56:59
栏目: 编程语言

nohup 本身不会产生乱码,乱码通常是因为字符编码不一致或终端/日志查看方式不对。下面按常见原因给你排查和解决思路。


一、最常见原因:编码不一致

1️⃣ 程序输出编码 ≠ 终端/文件编码

比如:

  • 程序用 UTF-8
  • 终端或日志查看工具用 GBK / ISO-8859-1

✅ 解决方法:

统一使用 UTF-8

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

再启动程序:

nohup java -jar app.jar > app.log 2>&1 &

二、Java 程序常见乱码(非常常见)

Java 默认编码问题

Java 可能使用系统默认编码(GBK)

✅ 显式指定编码:

nohup java -Dfile.encoding=UTF-8 -jar app.jar > app.log 2>&1 &

查看当前编码:

java -XshowSettings:properties -version 2>&1 | grep encoding

三、日志文件本身没问题,但“看”的方式错了

用错误工具看日志

  • Windows 记事本看 UTF-8 → 乱码
  • vim 没设编码

✅ 正确方式:

Linux 下查看:

cat app.log
less app.log

Windows 查看:

  • 用 Notepad++
  • 编码选 UTF-8

四、nohup.out 乱码

不要直接看 nohup.out

建议重定向:

❌ 不推荐:

nohup ./start.sh &

✅ 推荐:

nohup ./start.sh > run.log 2>&1 &

五、Python 程序乱码

nohup python3 -u main.py > app.log 2>&1 &

Python 中确保:

import sys
sys.stdout.reconfigure(encoding='utf-8')

或启动时:

PYTHONIOENCODING=utf-8

六、快速自查清单 ✅

  • [ ] echo $LANG 是 UTF-8 吗?
  • [ ] 程序是否指定了编码?
  • [ ] 日志是否重定向到文件?
  • [ ] 查看工具是否支持 UTF-8?

七、如果你愿意

可以把下面信息发我,我能精准帮你定位:

  1. 什么程序(Java / Python / Shell)
  2. 启动命令
  3. 乱码示例
  4. 操作系统(CentOS / Ubuntu / Windows)

我可以直接给你可复制的命令。

0 踩