2

我有下面的脚本 (/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

定时任务:输出

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

2 回答 2

0

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

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

cron 作业之外的命令输出date看起来受您的语言环境设置的影响。您可能有类似$LANG,$LC_TIME和/或$LC_ALL设置为某个特定值以导致date产生类似 的输出"Tuesday, 10 September 2013 14:30:26 BST"

无论当前的语言环境设置如何,您都可以使用选项调用date以控制输出格式,也可以为 cron 作业设置适当的环境变量。有几种方法可以执行后者:您可以使用env命令crontab本身,您可以修改您的脚本,或者您可以在crontab. 再次,man 5 crontab详细信息。

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

于 2014-03-13T22:57:05.267 回答
0

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

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

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

x=`date +"%A, $d %B %Y %r %Z`
于 2014-03-13T22:34:06.303 回答