shell脚本:
echo '/bin/date -d "1 days ago" +"%x"'
当我直接从终端运行shell脚本时,输出为:
06/07/2013\n
但是当我在crontab中运行脚本时,输出为:
06/07/13\n
我希望输出与上面的输出相同。如果您知道原因,可以与我分享。
答案 0 :(得分:4)
%x
标志表示“区域设置的日期表示”。与您的用户相比,chrony具有不同的语言环境设置,以验证此尝试在cron用户下执行locale
命令(即将* * * * * 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个字符年