“nohup 日志编码异常”通常是指 nohup 启动的程序输出的日志出现乱码、问号、方块,或文件编码不是你期望的 UTF-8 / GBK 等。常见原因和解决办法如下:
file nohup.out
ISO-8859 / GBK / UTF-8 等cat / less 看到乱码,多半是终端和文件编码不一致nohup java -Dfile.encoding=UTF-8 -jar app.jar > nohup.out 2>&1 &
nohup python -X utf8 app.py > nohup.out 2>&1 &
# 或
export PYTHONIOENCODING=utf-8
nohup python app.py > nohup.out 2>&1 &
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
nohup your_command > nohup.out 2>&1 &
如果程序不支持改编码,可以在外层转:
nohup your_command 2>&1 \
| iconv -f GBK -t UTF-8 > nohup.out &
(GBK → UTF-8 示例,按实际情况改)
stdbuf 避免缓冲导致编码异常nohup stdbuf -oL -eL your_command > nohup.out 2>&1 &
有些程序在 nohup 下缓冲异常,会导致“看似编码错”。
如果你不能改程序,只是看日志乱码:
iconv -f GBK -t UTF-8 nohup.out | less
或 VSCode / Notepad++ 手动选编码打开。
echo $LANG 是否是 UTF-8file nohup.out 的结果我可以直接给你精准命令。