GNU/Linux >> Linux の 問題 >  >> Linux

&を使用してバックグラウンドで実行すると、Python スクリプトの Nohup が機能しない

stdout をフラッシュする必要があります 印刷後:sys.stdout.flush();そうしないと、stdout バッファーがいっぱいになるまでに時間がかかります。


stdout のバッファリングを解除するために Python に -u フラグを渡します

nohup python -u test.py &

それ以外の場合、Python は stdout をバッファリングします。これにはコードの変更は必要ありません。

マニュアルページから:

       -u     Force  stdin,  stdout and stderr to be totally unbuffered.  On systems where it matters, also put stdin, stdout
          and stderr in binary mode.  Note that there is internal buffering in xreadlines(), readlines() and  file-object
          iterators ("for line in sys.stdin") which is not influenced by this option.  To work around this, you will want
          to use "sys.stdin.readline()" inside a "while 1:" loop.

ちょうど同様の問題がありました。私のスクリプトは nohup なしでうまくいきました。 nohup を使用すると、スクリプトは SyntaxError でクラッシュします。

問題は、python のエイリアスを使用する nohup の実行コンテキストでした。 python2 にマッピング python3 の代わりに .

python3 を指定して修正 python の代わりに .


Linux
  1. Suの実行時に.bash_profileがソースされませんか?

  2. 起動時にキーボードが機能しない問題?

  3. bash スクリプトが .NET でソースされたときに、インストールされているディレクトリをどのように知ることができますか。オペレーター?

  1. Pythonスクリプトを使用してシェルの作業ディレクトリを変更する

  2. Ubuntu Python シバン行が機能しない

  3. PHP から Python スクリプトを実行する

  1. 「でスクリプトを実行します。 」と「ソース」で?

  2. Unix でバックグラウンドで sqlplus を実行する

  3. bashスクリプトでpythonスクリプトを強制終了する方法