在 Ubuntu(以及所有类 Unix 系统、Linux 系统)里,时间戳为负值是非常正常的现象,原因主要和“时间戳的定义”有关。
通常我们说的时间戳是:
从 1970-01-01 00:00:00 UTC 开始的秒数
也叫 Unix 时间戳(Epoch time)。
例如:
date -d "1969-12-31 23:59:59 UTC" +%s
输出:
-1
如果你的系统或程序在处理:
就可能出现负值。
例如:
如果系统时间被手动改成很早的日期:
sudo date -s "1960-01-01"
date +%s
就会得到很大的负数。
在 32 位系统中:
不过 Ubuntu 现在基本都是 64 位,这个问题较少见。
例如:
stat 显示文件时间异常stat filename
如果看到:
Access: 1969-12-31
说明时间错误。
常因宿主机时间不对导致。
有些程序用 -1 表示“未知时间”。
sudo apt install ntpdate
sudo ntpdate pool.ntp.org
或:
sudo timedatectl set-ntp on
timedatectl
ls -l --time-style=full-iso
Ubuntu 时间戳为负,只是因为在表示 1970 年之前的时间,或系统时间配置错误。
如果你愿意,可以把你看到负时间戳的 具体命令或场景 发出来,我可以帮你精确判断是哪种原因。