who -b 日期格式变化奇怪

who -b 日期格式变化奇怪

我跑去who -b获取上次重新启动的日期。返回2013年10月29日14:55。现在由守护程序运行(我将此日期发送到服务器),它返回 10 月 29 日 14:55。但其他时候(10 月 29 日最后一次重新启动之前)它会始终返回类似 2013-10-24 13:17 的内容。

第一组问题:环境中的什么因素控制着这一点?为什么它与 sudo 用户和守护进程不同?为什么它在两次重启之间发生了变化?

另一个问题:有没有办法让这个日期的格式为 2013-10-29 14:55 ?我可以格式化它,但缺少年份。 (即你知道要传递什么标志给 who -b)吗?

答案1

这可能是由于区域设置更改所致:

$ locale | grep LC_TIME
LC_TIME="en_GB.UTF-8"
$ who -b
         system boot  2013-11-04 10:04
$ LC_TIME=C who -b
         system boot  Nov  4 10:04

也许您的区域设置已更改,并且直到重新启动后才生效(也许更改后您没有更新环境)。至于为什么它在守护进程中看起来不同,它可能有不同的 LC_TIME 值,或者根本没有值。

您可以使用类似以下内容获取日期(可以选择替换en_GB.UTF-8为导致此格式的任何区域设置,因为您的系统上可能没有该区域设置):

$ LC_TIME=en_GB.UTF-8 who -b | awk '{ print $3 " " $4 }'
2013-11-04 10:04

相关内容