2012-02-15 90 views
5

我想用nohup命令運行一個shell腳本。 shell腳本獲取一組文件,在循環中的每個文件上運行python程序,並將輸出附加到文件中。這在服務器上工作正常,但如果我嘗試使用nohup命令它不起作用。我已經成功地在這個服務器上使用nohup運行其他程序,只是沒有這個腳本。shell腳本不能與nohup一起工作

#!/bin/sh 
ARRAY=(0010.dat 0020.dat 0030.dat) 

rm batch_results.dat 
touch batch0.dat 
touch batch_results.dat 

for file in ${ARRAY[@]} 
do 
python fof.py $file > /dev/null 
python mdisk5.py > ./batch0.dat 
tail -1 batch0.dat 
tail -1 batch0.dat >> batch_results.dat 
done 

程序工作正常,當我運行它,同時保持連接到服務器,例如

./batch.sh > /dev/null & 
./batch.sh > ./output.txt & 

然而,當我嘗試使用nohup命令運行它,

nohup ./batch.sh > /dev/null & 

如果我退出服務器並返回輸出文件(batch_results.dat)沒有任何數據。

我相信我在這裏錯過了一些簡單的修復或命令。有任何想法嗎?

編輯: 程序fof.py生成兩個文件,用作mdisk5.py的輸入。 當我在運行nohup時退出服務器時,會生成這兩個文件,但僅限於第一個輸入文件「0010.dat」。輸出文件batch0.dat和batch_results.dat保持空白。

+0

取出'>的/ dev/null'看如果有任何有用的信息被打印?另外,不nohup把任何輸出到文件'nohup.txt'或類似?祝你好運。 – shellter 2012-02-15 18:05:56

+0

我在工作目錄中找不到nohup.txt文件。這是否會轉到不同的默認目錄? – ricitron 2012-02-15 18:47:19

+0

我剛剛搜索的nohup文檔說它是當前目錄或$ HOME。在命令行'man nohup'上試試看看你係統的細節。祝你好運。 – shellter 2012-02-15 18:50:10

回答

1

這是你的問題!

#/ bin/sh的

sh不支持數組。要麼改變你的家當行調用外殼,不支持的陣列,像bash,或使用你的數據文件的正常,空格分隔字符串中像

DAT_FILES="0010.dat 0020.dat 0030.dat" 
    for file in $DAT_FILES 
    do 
     ... 
    done