2017-03-18 135 views
-2

在CRONTAB中,有沒有辦法(i)打開終端,(ii)打開文件,然後(iii)執行命令?crontab打開文件並執行代碼

我想要做的是每天打開終端,去PycharmProjects/untitled/project1執行命令scrapy crawl xx -o test.csv

獎金問題:crontab可以給我發電子郵件(test.csv)嗎?

獎金question2:可以crontab上傳結果到服務器?

+1

你到目前爲止嘗試過什麼? –

+0

我試圖先打開終端,然後嘗試執行命令。但正如John Zwinck糾正我的情況,我不應該這樣做。 –

回答

1

是的,但您的術語有點偏離。我們不是在cron中「打開終端」,而是「運行一個命令」。例如,你可以把它放在你的crontab中:

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

默認情況下,Cron會通過電子郵件向你發送命令的輸出。所以如果不給一個輸出文件通過電子郵件收到test.csv,如果scrapy將只打印輸出,試試這個:

[email protected] 
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 [email protected]:/some/path 
+0

非常好,非常感謝John Zwinck。它很好地執行了命令並通過電子郵件發送給我。但是我收到/ bin/sh:scrapy:command not found。我應該將用戶名添加到路徑中嗎?如果是這樣,我該怎麼做?我知道這是一個基本問題,但我對編碼非常陌生。 –

+0

@AliyarÖzercan:在一個普通的終端上運行'scrapy',它會告訴你程序的完整路徑。將完整的路徑放在cron作業中,而不僅僅是「scrapy」。 –

+0

我該怎麼辦?因爲當我編寫'scrapy crawl xx -o test1.csv'時,我說爬蜘蛛xx。我應該給蜘蛛的路徑嗎?像這樣:「00 09 * * * cd PycharmProjects/untitled/project1 && scrapy crawl PycharmProjects/untitled/project1/projectx/spiders/spider1 -o test.csv」 –

0

你說要上傳文件到服務器做SCP。 但如果服務器受密碼保護會怎樣。你如何提供密碼?

+0

這是否意味着評論?無論如何,答案是你可以使用SSH密鑰來做無密碼的scp。一旦你有一個SSH密鑰對,只需簡單地運行'ssh-copy-id HOSTNAME',它會要求你輸入密碼。之後,scp將無需密碼即可運行。 –

+0

謝謝John Zwinck。 –