2016-09-22 10 views
0

私はnohupを使ってbashからPythonスクリプトを実行しています。このスクリプトは、bashrcを介してシェル関数の一部として実行されます。私が次のように実行した場合:nohup.out(bash)にアクセスした後にプロンプ​​トを返します

すべてが機能し、私はプロンプトを戻します。しかし、代わりにechoの私はこのように、nohupは出力ファイルの末尾にアクセスするためにtail呼び出す場合:

function timer { 
    nohup python path/timer.py $1 $2 > path/nohup.out 2>&1 & 
    tail -f path/nohup.out 
} 

私のプロンプトが返されません。私はnohup.outの内容を見て、CTRL-cを使わずにプロンプ​​トに戻ってみたいと思います。

アドバイスhereに従っていますが、</dev/nullを追加すると、上記と同じ結果が得られます。

+0

参照: 'man tail' – Cyrus

+0

tail -fはSIGHUP/SIGINT/etcシグナルを受け取らない限り終了しません。 – euphoria83

答えて

0

プロンプトが表示されません。

tail -fは、ファイルが大きくなるにつれて、ファイル(path/nohup.out)が出力されるのを常に監視するためです。 tail -nを試して、最後に10行をpath/nohup.outにすることができます。

+0

ありがとう。最初に、 'tail -n'や' tail -lines'は、関連する情報が書き込まれる前にファイルが読み込まれていたため、 'tail -n'や' tail -lines'はそれをカットしませんでした。私は 'sleep 1s'の後に' tail 'をつけて作業していますが、ファイルが書き込まれるまでちょうどそれを見ているときれいになります。後続の呼び出しで 'tail -f'を終了する方法はありますか(つまり、ctrl-cではない)?私は 'kill $!'のいくつかの変種を試しました。 – eohippus

関連する問題