在unix中的Cron工作

时间:2010-10-05 08:00:55

标签: unix cron

我创建了一个脚本helloworld.sh,其路径为/home/ehimkak/cronTabTest

#/usr/bin/sh
echo $1
if [[ $1 = "cron" ]] ; then
  echo "hiiiii"
else
  echo "sorry"
fi

如果我使用命令

/位置运行它
/home/ehimkak/cronTabTest/helloworld.sh cron

它运行良好。


现在我添加了一个cron作业,首先将编辑器设置为vi(export EDITOR = vi),然后使用命令crontab -e

我添加了一行

10,15,20,25,30,35,40,45,50,55 * * * * /home/ehimkak/cronTabTest/helloworld.sh cron>>/home/ehimkak/cronTabTest/t1.txt

结果是脚本正在运行,但输出不符合要求。

我得到的t1.txt文件中的输出是

cron
sorry

但我的输出必须

cron 
hiiii

脚本没有问题,但我不明白为什么crontab会以这种方式表现。
请帮忙......

4 个答案:

答案 0 :(得分:2)

尝试替换

if [[ $1 = "cron" ]] ; then

if [[ "$1" = "cron" ]] ; then

答案 1 :(得分:2)

我能够解决问题并且解决方案非常简单。

我刚刚编辑了第一行的shell行 现在第一行是

#!/usr/bin/sh

所以我加了!我的问题解决了

答案 2 :(得分:2)

为了便于阅读的其他内容:而不是每隔5分钟调用一次,你可以说它不同:

 bevore: 10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cro...
 after:  */5 * * * *  "/home/ehimkak/cro...

* / 5将每隔5分钟调用一次cronjob,这样可以让它更具可读性! 内切

答案 3 :(得分:1)

形成一个典型的crontab(5)联机帮助页....

“第六”字段(行的其余部分)指定 要运行的命令。整个命令部分 line,直到换行符或%字符,将由。执行 / bin / sh或由SHELL变量中指定的shell cronfile。除非,否则命令中的百分号(%) 使用反斜杠()转义,将更改为换行符 字符以及第一个%之后的所有数据都将被发送到 该命令作为标准输入。

我会给你两个建议:

  • 首先尝试了解发生了什么。日志永远是你的朋友。说,在你的脚本中添加如下内容:

    echo $#>的/ tmp /日志

    echo $ @>>的/ tmp /日志

    echo $ *>>的/ tmp /日志

并检查参数是否正在传递。

另一个提示是尝试传递所有逃脱的内容,如:

10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cronTabTest/helloworld.sh cron" >>/home/ehimkak/cronTabTest/t1.txt