Crontab不能正常工作

时间:2013-09-11 10:36:18

标签: unix cron crontab

我有以下脚本(/ support / memexsvr_count),用于编号。当前用户登录的应用程序。

当我手动运行时,输出通过crontab运行时会有所不同。 任何人都可以尽快告诉我。

的crontab

#Count
* * * * * /support/memexsvr_count.sh

脚本

x=`(date)`
y=`(ps -ef|grep memexsvr|wc -l)`
z=`expr $y - 3`
echo "Number of memexsvr processes at $x is $z" >> /support/memexsvr_count.log

手动运行:输出

Number of memexsvr processes at Tuesday, 10 September 2013 14:30:26 BST is 0

Cronjob:输出

Number of memexsvr processes at Tue Sep 10 14:59:00 BST 2013 is 3

2 个答案:

答案 0 :(得分:0)

我建议您更明确地说明如何运行日期。下面的页面底部有一个很好的表格。

http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/

我认为您的手册看起来像这样:

x=`date +"%A, $d %B %Y %r %Z`

答案 1 :(得分:0)

Cron作业在受限制的环境中运行。 man 5 crontab了解详细信息,或设置运行类似env > cron-env.txt的cron作业。

在(现已删除)评论中,您说您以超级用户身份登录(即root) - 但交互式shell中的root帐户环境可能会有所不同来自为cron工作设立的环境。

cron作业之外的date命令的输出看起来受到您的区域设置的影响。您可能会将$LANG$LC_TIME和/或$LC_ALL设置为某个特定值,以使date生成类似"Tuesday, 10 September 2013 14:30:26 BST"的输出。

您可以使用选项调用date来控制输出格式,而不管当前的语言环境设置如何,或者您可以为cron作业设置适当的环境变量。有几种方法可以执行后者:您可以在env本身使用crontab命令,可以修改脚本,也可以在{{1}的单独行中设置环境变量}}。同样,crontab了解详情。

(这基本上是fedorqui的deleted answer所说的,但不幸的是他删除了他的回答。)

相关问题