“nohup 日志时间错乱”通常不是 nohup 本身的问题,而是程序输出、系统时间、时区或日志轮转导致的。下面按常见原因和解决办法说明。
date 显示时间和你预期不一致检查
date
date -u
timedatectl
解决
# 设置时区(中国)
timedatectl set-timezone Asia/Shanghai
# 同步时间
ntpdate pool.ntp.org
# 或
chronyd -q
很多程序(Java / Python / Go)自己控制时间格式,比如:
表现
nohup.out 里时间跳来跳去解决
nohup.out 混写,改成正经日志文件nohup your_app > app.log 2>&1 &
& 起多个实例结果
解决
if [ -f app.pid ]; then exit; fi
echo $$ > app.pid
nohup.out 被 > nohup.out 清空解决
> nohup.outlogrotate 或程序自身滚动日志Docker 容器常有时区问题:
docker exec -it container date
解决
-e TZ=Asia/Shanghai
或挂载:
-v /etc/localtime:/etc/localtime:ro
nohup python app.py >> /var/log/app/app.log 2>&1 &
[Service]
ExecStart=/opt/app/run.sh
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
nohup bash -c 'while read l; do echo "$(date "+%F %T") $l"; done' < <(./app) >> app.log &
date
timedatectl
ps -ef | grep your_app
ls -l nohup.out
tail -n 50 nohup.out
如果你愿意,可以贴一段**“错乱的日志样例”**或说明:
我可以更精准帮你定位。