使用 crontab 在 AWS EC2 上抓取数据:日志文件中缺少输出

使用 crontab 在 AWS EC2 上抓取数据:日志文件中缺少输出

我正在使用 AWS EC2 实例上的 crontab 从网络上抓取大量数据。该脚本抓取了数千个网页并打印“网页编号每次执行完后,我都会在脚本中插入“done”一词。因为我正在安排脚本运行,然后退出实例,所以我使用 crontab 上的以下命令将 stdout 输出保存到日志文件中:

0 19 26 10 * /home/ec2-user/scrape.sh &>> /home/ec2-user/output.log

脚本在抓取 10,000 个网页后崩溃,但由于某种原因 output.log 停止打印“网页编号8,000 个网页之后,输出“完成”。output.log 中的最后几行如下所示:

7998: webpage 012345 done
7999: webpage 012346 done
8000: webpage 012347 d

因此它在中途停止打印,但脚本继续抓取另外 2000 个网页。为什么会发生这种情况?有没有更好的方法可以在退出 EC2 实例时保存输出(即不保持 SSH 管道打开)?

答案1

修复了你的 crontab

0 19 26 10 * /home/ec2-user/scrape.sh &>> /home/ec2-user/output.log 2>&1

另外,请注意,如果您的脚本在,Bash那么不要忘记在您的cron如果您正在使用cron

SHELL=/bin/bash

相关内容