nohup 本身不会制造乱码,乱码通常来自 编码不一致 或 终端/文件查看方式不对。可以按下面顺序排查和解决。
先不用 nohup,直接运行程序:
python your_script.py
nohup / 终端 / 查看方式Python 示例(推荐写法):
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
或运行命令时指定:
PYTHONIOENCODING=utf-8 nohup python app.py > log.out 2>&1 &
查看文件编码:
file log.out
如果是 ISO-8859 / GBK,用 iconv 转码:
iconv -f gbk -t utf-8 log.out > log.utf8
less / vimless log.out
如果乱码:
export LESSCHARSET=utf-8
:set encoding=utf-8
最容易乱码,建议用:
查看:
locale
如果不是 UTF-8,在启动前加:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
再启动:
nohup python app.py > log.out 2>&1 &
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export PYTHONIOENCODING=utf-8
nohup python app.py > app.log 2>&1 &
你可以补充:
我可以直接给你针对你场景的命令。