nohup 本身不会写日志、也不控制时间,它只是把程序放到后台运行,并把输出重定向到文件(默认 nohup.out)。
所以“日志时间不对”通常是下面几种原因之一,对症处理即可:
日志里的时间一般是程序自己生成的,不是 nohup 加的。
date # 看系统时间对不对
# CentOS / Rocky
timedatectl set-ntp true
# 或
ntpdate -u pool.ntp.org
date -R
如果是 UTC 而你想要 CST:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
nohup java -Duser.timezone=Asia/Shanghai -jar app.jar > app.log 2>&1 &
TZ=Asia/Shanghai nohup python app.py > app.log 2>&1 &
nohup 在容器里运行时,容器时区可能不对:
docker exec -it 容器名 date
解决:
-e TZ=Asia/Shanghai
或挂载:
-v /etc/localtime:/etc/localtime:ro
基本都是 UTC vs CST 问题,不是 nohup 的锅。
可以用 ts:
nohup ./app | ts >> app.log 2>&1 &
(需安装 moreutils)
date 对不对如果你能贴一下:
我可以直接给你一条可执行的命令。