nohup 本身不会导致日志乱码,乱码通常出现在字符编码不一致或终端/环境差异上。常见原因主要有下面几类:
䏿–‡ 这类乱码✅ 解决:
export LANG=en_US.UTF-8
export LC_ALL=en.UTF-8
再启动程序:
nohup java -jar app.jar > app.log 2>&1 &
nohup 启动后:
✅ 建议:
Java 示例:
nohup java -Dfile.encoding=UTF-8 -jar app.jar > app.log 2>&1 &
Python 示例:
nohup python3 -u app.py > app.log 2>&1 &
(确保文件本身是 UTF-8)
即使日志是 UTF-8:
cat 正常✅ 解决:
less、vim、tail -f如:
示例(logback):
<encoder>
<pattern>%d %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
stderr 和 stdout 混合✅ 可先分离测试:
nohup app > out.log 2> err.log &
检查:
locale
若不是 UTF-8,建议修改:
sudo localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
LANG / LC_ALL 是否 UTF-8?如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一种乱码。