温馨提示×

nohup日志时间不对怎调

小樊
40
2026-09-12 10:09:32
栏目: 编程语言

nohup 本身不会写日志、也不控制时间,它只是把程序放到后台运行,并把输出重定向到文件(默认 nohup.out)。

所以“日志时间不对”通常是下面几种原因之一,对症处理即可:


1️⃣ 程序自己打印的时间不对(最常见)

日志里的时间一般是程序自己生成的,不是 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
    

2️⃣ Java / Python 等程序时区不对

Java

nohup java -Duser.timezone=Asia/Shanghai -jar app.jar > app.log 2>&1 &

Python

TZ=Asia/Shanghai nohup python app.py > app.log 2>&1 &

3️⃣ Docker 容器里日志时间不对

nohup 在容器里运行时,容器时区可能不对:

docker exec -it 容器名 date

解决:

-e TZ=Asia/Shanghai

或挂载:

-v /etc/localtime:/etc/localtime:ro

4️⃣ 日志时间“差 8 小时”

基本都是 UTC vs CST 问题,不是 nohup 的锅。


5️⃣ 想让日志带时间戳(nohup 本身没有)

可以用 ts

nohup ./app | ts >> app.log 2>&1 &

(需安装 moreutils


快速自检清单 ✅

  • [ ] date 对不对
  • [ ] 时区对不对
  • [ ] 程序是否自己写时间
  • [ ] 是否在容器里

如果你能贴一下:

  • 用什么语言(Java / Python / Shell)
  • 日志样例
  • 系统(CentOS / Ubuntu / Docker)

我可以直接给你一条可执行的命令。

0