2013-01-03 72 views
8

我有一臺運行start.sh bash腳本雖然科雷Ubuntu的服務器上JOBcron作業不輸出到的nohup.out

start.sh包含波紋管提到的代碼

start.sh

路徑/home/ubuntu/folder1/folder2/start.sh

#!/bin/bash 

crawlers(){ 
    nohup scrapy crawl first & 
    nohup scrapy crawl 2nd & 
    wait $! 
    nohup scrapy crawl 3rd & 
    nohup scrapy crawl 4th & 
    wait 
} 

cd /home/ubuntu/folder1/folder2/ 
PATH=$PATH:/usr/local/bin 
export PATH 

python init.py & 
wait $! 
crawlers 
python final.py 

我就是蘇是,如果我在命令行運行start.sh我自己這在輸出的nohup.out 文件

但是當它執行此bash的文件通過的cronjob(雖然腳本運行的罰款),它不是生產的nohup.out

我怎樣才能得到這個的cronjob在的nohup.out輸出

+1

你在哪裏創建這個nohup.out文件?請記住,cron作業的默認工作目錄是它們正在運行的用戶標識的home目錄。如果你使用相對路徑爲這個文件,你將相對於帳戶的主目錄,而不是你自己的shell當前目錄 –

+0

@MarcB我在Linux上是noob .. 每行都在nohup中追加輸出,例如nohup scrapy抓取第3個和 我在crontab中添加了這個 40 10 * * * /home/ubuntu/folder1/folder2/start.sh –

+1

FYI:構造'python init.py& 等待$!'(分佈在兩行)毫無意義;刪除'&'並刪除'wait'。這不是你問題的一個因素;它也可以像書面一樣工作。但這是毫無意義的。 –

回答

14

爲什麼使用nohupnohup是一個命令,它告訴正在運行的終端忽略掛斷信號。然而,cron沒有掛斷信號,因爲它沒有鏈接到終端會話。

代替

在這種情況下,:

nohup scrapy crawl first & 

你可能想:

scrapy crawl first > first.txt & 

最後一個例子也適用於一個終端,但是當你關閉終端,掛斷信號(hup )被髮送,結束程序。