我正在尝试使用crontab构建一个webcrawler来为我自动化任务,但是crontab不能用于我的代码。
我必须shell脚本。第一个:
#!/bin/sh
#!/usr/bin/php
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo "Running crawler at: "
date
php core.php
sh AnalyserScript.sh
php SendClassification.php
echo
第二个(这是第一个代码中的AnalyserSript.sh):
#!/bin/sh
#!/usr/bin/java
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
for f in preanalysis/*.np;
do
TEXT=$(cat $f)
java -jar javacode.jar text "$TEXT" options directory/ > "postanalysis/$f"
rm "$f"
done
代码工作得非常好,当手动启动时,但是当由crontab执行时,带有“php”“java”或其他“sh”的行被完全忽略。为了解决这个问题,我在两个脚本中添加了“PATH =”行,它们开始在crontab中工作,除了for循环。现在,相反for循环读取文件在“preanalysis”目录中以“.np”结尾,它试图捕获名为“* .np”的文件,因此我的java文件也不起作用。还有另一种解决cron问题或设计另一个循环的方法吗?
我尝试了很多东西,但是我失败了。所以,如果有人帮我解决这个问题,我将非常感谢。