【问题标题】:crontab opening a file and execute a codecrontab 打开文件并执行代码
【发布时间】:2017-08-09 20:56:04
【问题描述】:

在 CRONTAB 中,有没有办法(i)打开终端,(ii)打开文件,然后(iii)执行命令?

我想做的是每天,打开终端,去PycharmProjects/untitled/project1执行命令scrapy crawl xx -o test.csv

额外问题:crontab 可以通过电子邮件将结果发送给我吗(test.csv)?

额外问题 2:crontab 可以将结果上传到服务器吗?

【问题讨论】:

  • 我先尝试打开终端,然后尝试执行命令。但正如 John Zwinck 纠正我的那样,我不应该那样做。

标签: python crontab export-to-csv


【解决方案1】:

是的,但是您的术语有点不对劲。我们不会在 cron 中“打开终端”,而是“运行命令”。例如,你可以把它放在你的 crontab 中:

00 09 * * * cd PycharmProjects/untitled/project1 && scrapy crawl xx -o test.csv

默认情况下,Cron 会通过电子邮件将命令的输出发送给您。所以要通过电子邮件接收 test.csv,如果没有给出输出文件,scrapy 只会打印输出,试试这个:

MAILTO=you@example.com
00 09 * * * cd PycharmProjects/untitled/project1 && scrapy crawl xx

如果您希望将其作为附件,请参阅:cron: sending output to file then EMAILing file to me

如果您想将其上传到服务器,请在另一个 && 之后运行该上传命令:

00 09 * * * cd PycharmProjects/untitled/project1 && scrapy crawl xx -o test.csv && scp test.csv user@hostname:/some/path

【讨论】:

  • 完美,非常感谢 John Zwinck。它很好地执行了命令并给我发了电子邮件。但我收到 /bin/sh: scrapy: command not found。我应该将用户名添加到路径中吗?如果是这样,我该怎么做?我知道这是一个基本问题,但我对编码真的很陌生。
  • @AliyarÖzercan:在常规终端中运行which scrapy,它会告诉您程序的完整路径。将该完整路径放入 cron 作业中,而不仅仅是 scrapy
  • 我该怎么做?因为当我写“scrapy crawl xx -o test1.csv”时,我说的是 crawl the spider xx。我应该给出那只蜘蛛的路径吗?像这样:“00 09 * * * cd PycharmProjects/untitled/project1 && scrapy crawl PycharmProjects/untitled/project1/projectx/spiders/spider1 -o test.csv”
  • @AliyarÖzercan:我不确定。试试看。
  • 我把它弄坏了 :) 现在它不给我发电子邮件了。我试着把它改回你写的那行,但还是不行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多