nohup 本身不会产生乱码,乱码通常是因为字符编码不一致或终端/日志查看方式不对。下面按常见原因给你排查和解决思路。
比如:
✅ 解决方法:
统一使用 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 可能使用系统默认编码(GBK)
✅ 显式指定编码:
nohup java -Dfile.encoding=UTF-8 -jar app.jar > app.log 2>&1 &
查看当前编码:
java -XshowSettings:properties -version 2>&1 | grep encoding
✅ 正确方式:
Linux 下查看:
cat app.log
less app.log
Windows 查看:
建议重定向:
❌ 不推荐:
nohup ./start.sh &
✅ 推荐:
nohup ./start.sh > run.log 2>&1 &
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 吗?可以把下面信息发我,我能精准帮你定位:
我可以直接给你可复制的命令。