2012-02-15 18 views
5

nohupコマンドでシェルスクリプトを実行しようとしています。シェルスクリプトはファイルの配列を取り、ループ内の各ファイルに対してPythonプログラムを実行し、出力をファイルに追加します。これはサーバー上で正常に動作しますが、nohupコマンドを使用しようとすると動作しません。私は正常にこのスクリプトではなく、このサーバー上でnohupを使用して他のプログラムを正常に実行しました。シェルスクリプトが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の入力として使用される2つのファイルを生成します。 nohupの実行中にサーバーを終了すると、これらの2つのファイルが生成されますが、最初の入力ファイル '0010.dat'のみが生成されます。出力ファイルbatch0.datとbatch_results.datは空のままです。 !

#/ binに/ shの

sh配列をサポートしていません:

+0

にデータファイルの通常の、空白で区切られた文字列を使用します有用な情報があれば印刷されますか?また、nohupは出力ファイルを 'nohup.txt'などのファイルに入れませんか?がんばろう。 – shellter

+0

作業ディレクトリでnohup.txtファイルが見つかりません。これは別のデフォルトディレクトリに移動しますか? – ricitron

+0

私はちょうどそれが現在のdirか$ HOMEのどちらかであると言ったnohupのドキュメントをgoogledしました。コマンド行 'man nohup'でこれを試して、システムの仕様を確認してください。がんばろう。 – shellter

答えて

1

はここにあなたの問題です。どちらか確認するために、 `>は/ dev/null`なのでを取るbashのように、サポートアレイを行うシェルを起動するために、あなたのシェバング行を変更、など

DAT_FILES="0010.dat 0020.dat 0030.dat" 
    for file in $DAT_FILES 
    do 
     ... 
    done 
関連する問題