2012-02-15 29 views
5

nohup komutuyla bir kabuk komut dosyası çalıştırmaya çalışıyorum. Kabuk betiği bir dizi dosya alır, her dosyada bir döngüde bir python programı çalıştırır ve çıktıyı bir dosyaya ekler. Bu sunucuda iyi çalışıyor, ancak nohup komutunu kullanmaya çalışırsam işe yaramıyor. Bu sunucuda nohup'u kullanarak diğer programları başarıyla çalıştırıyorum, sadece bu betikte değil.kabuk betiği nohup ile çalışmadı

#!/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 

programı, sunucuya bağlı kalarak ederken nohup komutuyla çalıştırmayı denediğimde,

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

Ancak örneğin çalıştırdığınızda çalışıyor

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

Sunucudan çıkıp çıktı dosyasına geri dönersem (batch_results.dat) herhangi bir veriye sahip değil.

Burada bazı basit düzeltmeler veya komutlar eksik olduğundan eminim. Herhangi bir fikir?

Düzenleme: Program fof.py mdisk5.py için girdi olarak kullanılan iki dosya üretir. Nohup çalışırken sunucudan çıktığımda, bu iki dosya üretilir, ancak yalnızca ilk giriş dosyası '0010.dat' içindir. Batch0.dat ve batch_results.dat çıktı dosyaları boş kalır. !

#/bin/sh

sh diziler desteklemez:

+0

da veri dosyalarının normal, boşluk ayrılmış bir dize kullanmak Herhangi bir yararlı bilgi yazdırılırsa? Ayrıca, nohup 'nohup.txt' veya benzeri bir dosyaya herhangi bir çıktı getirmiyor mu? İyi şanslar. – shellter

+0

İş dizininde nohup.txt dosyasını bulamıyorum. Bu farklı bir varsayılan dizine gider mi? – ricitron

+0

Sadece googled nohup belgelendirme, geçerli dir veya $ HOME olduğunu söyledi. Bunu sisteminizle ilgili özellikleri görmek için komut satırı 'man nohup' üzerinde deneyin. İyi şanslar. – shellter

cevap

1

İşte senin sorunun. Ya görmeye `>/dev/null` çıkarmak bash gibi, destek dizileri yapan bir kabuk çağırmak için shebang hattını değiştirmek veya benzeri

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