1

外壳脚本:

echo '/bin/date -d "1 days ago" +"%x"'

当我直接从终端运行 shell 脚本时,输出是:

06/07/2013\n

但是当我在 crontab 中运行脚本时,输出是:

06/07/13\n

我希望输出应该与上面的输出相同。如果你知道原因,可以和我分享一下。

4

1 回答 1

4

%x标志的意思是“语言环境的日期表示”。chrony 与您的用户相比具有不同的语言环境设置,要验证这一点,请尝试locale在 cron 用户下执行命令(即添加* * * * * root locale > /root/cron-locale到 /etc/crontab);你会看到它是:

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

locale在为您的用户帐户运行时可能会返回如下内容:

LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

要获得一致的日期表示,请使用: %Y,这意味着 4 个字符的年份

于 2013-06-08T02:57:49.137 回答