![AIX:为什么使用 su 或 crontab 时时区不同?](https://linux22.com/image/98274/AIX%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%20su%20%E6%88%96%20crontab%20%E6%97%B6%E6%97%B6%E5%8C%BA%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
3:root@SERVER:/root # cat wtf.sh
echo "date"
date
echo "su - root -c date"
su - root -c date
3:root@SERVER:/root #
3:root@SERVER:/root # ksh wtf.sh
date
Wed Nov 9 13:15:01 MEZ 2016
su - root -c date
Wed Nov 9 12:15:01 UTC 2016
3:root@SERVER:/root # grep TZ /etc/environment
TZ=MEZ-1MESZ-2,M3.5.0/02:00,M10.5.0/03:00
3:root@SERVER:/root # oslevel -s
6100-09-06-1543
3:root@SERVER:/root #
为什么它们不同?
即使 crontab 显示 UTC,但系统 TZ 是 MEZ。
答案1
你最近换过TZ吗?
当您更改 TZ 时,smitty chtz_date
它通常会建议您重新启动。
如果您只是注销/登录 - 那么该会话将向您显示新的 TZ。但已经运行的进程只知道旧的。
然后需要重新启动所有服务以适应 TZ 更改。您无法重新启动,init
因此建议重新启动。
就你而言,我怀疑如果你杀死cron
并让它重新启动,它会起作用。这样您就可以避免重新启动。
如果通过重新启动无法解决此问题,请添加echo $TZ
以查看您所在的每个环境中的变量。
也可以看看如何在不重新启动 AIX 的情况下将时区更改为 UTC
编辑:您检查 TZ/etc/environment
但您应该检查是否覆盖它:
/etc/profile
$HOME/.kshrc
$HOME/.profile