当由cron运行时,ls格式的date不同

在FC10中,当通过命令行或脚本调用时,ls以“YYYY-MM-DD HH:MM”格式输出date。 当由cron调用时,date格式为“Mon DD HH:MM”。

是什么赋予了? 为什么改变? 我已经检查过env和alias,shell和cron之间没有什么明显的区别。

date格式取决于您的区域设置($ LC_TIME,$ LC_ALL,$ LANG)。

我知道有两种方法可以解决这个问题,至less在Ubuntu Lucid中是这样。

在你的crontab文件的顶部添加这一行。

LC_TIME="en_US.UTF-8"

或者在脚本中指定ls -l的时间格式。

 ls -l --time-style=long-iso 

我喜欢这第二种方式,因为它使脚本本身更具可移植性。 另外,每次修改crontab的环境时,都会修改在该crontab中运行的所有脚本的环境,并可能以这种方式在其他脚本中引入错误。

保罗S

另一种可能性是--time-style选项。 例如,可以指定其中一个用户的别名,运行cron任务的人员或从命令行运行脚本的人员。