【发布时间】:2015-07-26 17:23:41
【问题描述】:
这在上一篇文章中已经讨论过好几次了。我遵循了给出的建议,但它对我不起作用。我有两个脚本,每分钟由 cron 服务运行。令我惊讶的是,每分钟只运行一次(下面列表中的第 1 个),另一个失败(下面列表中的第 2 个)。最令人惊讶的是,当直接从终端运行时,两个脚本都能正常执行。
Cron setup :
*/1 * * * * /home/user/Desktop/scripts/generatepattern.sh
*/1 * * * * /home/user/Desktop/scripts/getnextfile.sh
文件权限为:
-rwxr--r-- 1 user user 522 Jul 25 16:18 generatepattern.sh
-rwxr--r-- 1 user user 312 Jul 25 23:02 getnextfile.sh
不可调度(不在 cron 中运行)的代码是:
#!/bin/bash
#Generate a file to be used for the search
cd /home/user/Desktop/scripts
no=`cat filecount.txt`
if test $no -lt 20
then
#echo "echo less"
#echo $no
expr `cat filecount.txt` + 1 >filecount.txt
fi
【问题讨论】:
-
只需使用
mail命令检查报告的 cron 错误。 -
第二份工作是否依赖第一份工作完成的工作?无法保证它们会以可预测的顺序运行。如果他们依赖彼此完成的工作,您应该将两者组合成一个脚本,或者编写第三个脚本来运行两者,或者创建一个运行
script1 && script2的 cron。 -
另外,一个小提示:
*/1表示以1的步长值通过分钟范围0-59。这与只是说*没有步长值完全相同。 -
@DanLowe 重要的是我将脚本的执行分开,因为它们执行不同的工作。
-
你确定它没有运行吗?如果 filecount.txt 有问题,
test表达式将失败,if将不会执行,脚本将不执行任何操作。我建议在脚本中添加一些日志记录,这样您就可以更多地了解正在发生的事情。另外,请注意 cron 将同时运行这两个脚本而不是顺序运行,因此它可能会触发从命令行运行它们时看不到的竞争条件。