.war
Python経由で起動したいファイルがあります。ターミナルにログメッセージが表示されないように、バックグラウンドで実行したいと思います。また、実際のログ出力をログファイルに入れたいと思います。これは私がこれを解決するために使用するPythonコードです。
まだ運がなかった。プロセスがされていない私は、スクリプトを実行した後、他のシェルコマンドを実行することはできませんので、デタッチ。ログファイルは作成されますが、ログ出力は追加されません。
編集:物事をより明確にするため。このスクリプトを拡張して、最終的に複数のJavaプロセスを実行したいと思います。したがって、このpythonスクリプトは、これらのJavaプロセスを生成し、最終的には終了するはずです。stdoutをファイルにリダイレクトする機能を含めて、それを正確に実現するにはどうすればよいですか?
#!/usr/bin/env python3
import subprocess
import re
platformDir = "./platform/"
fe = "frontend-webapp-0.5.0.war"
logfile = open("frontend-log", 'w')
process = subprocess.Popen(['java', '-jar', platformDir + fe],
stdout=subprocess.PIPE)
for line in process.stdout:
logFile.write(line)
実際には、stdoutにstdout=logFile
。のようなファイルハンドルを指定するだけで済みました。stdoutを介したforループを使用したソリューションでは、常にPythonスクリプトプロセスにとどまります。
import sys
from subprocess import Popen, PIPE, STDOUT
platformDir = "./platform/"
fe = "frontend-webapp-0.5.0.war"
logfile = open("frontend-log", 'ab')
p = Popen(['java', '-jar', platformDir + fe], stdout=logfile, stderr=STDOUT, bufsize=1)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加