【问题标题】:Crontab not working finecrontab 不能正常工作
【发布时间】:2013-09-15 08:12:06
【问题描述】:

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

【问题讨论】:

  • (cmd) 有效,但语法非常奇怪。 () 不是必需的,但感觉就像您正在尝试使用 $() 语法而不是反引号。要么省略双亲,要么写x=$(date)

标签: unix cron crontab


【解决方案1】:

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

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

我认为您的手册如下所示:

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

【讨论】:

    【解决方案2】:

    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 作业设置适当的环境变量。有几种方法可以实现后者:可以在crontab 本身中使用env 命令,可以修改脚本,或者可以在crontab 的单独行中设置环境变量。再次,man 5 crontab 了解详情。

    (这基本上是fedorqui的deleted answer说的,可惜他删了他的回答。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 2018-05-06
      • 1970-01-01
      • 2017-07-13
      • 2013-08-31
      • 1970-01-01
      • 2014-03-23
      相关资源
      最近更新 更多