我有以下脚本(/ 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
答案 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所说的,但不幸的是他删除了他的回答。)