我跑去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