入力を受け取り、サーバー上の別のスクリプトを呼び出すコマンドにフォーマットしてから、サブプロセスを使用して実行するPythonスクリプトがあります。
import sys, subprocess
thingy = sys.argv[1]
command = 'usr/local/bin/otherscript.pl {0} &'.format(thingy)
command_list = command.split()
subprocess.call(command_list)
実行に時間がかかる&
ため、最後に追加しますotherscript.pl
。バックグラウンドで実行することを好みます。ただし、スクリプトはシェルに制御を戻さずに実行されているようであり、実行が終了してプロンプトに戻るまで待つ必要があります。subprocess
スクリプトをバックグラウンドで完全に実行するために使用する別の方法はありますか?
&
シェル機能です。で動作させたい場合はsubprocess
、次のshell=True
ように指定する必要があります。
subprocess.call(command, shell=True)
これにより、コマンドをバックグラウンドで実行できるようになります。
ノート:
なのでshell=True
、上記はcommand
ではなく、を使用しcommand_list
ます。
を使用shell=True
すると、シェルのすべての機能が有効になります。インクルードが信頼できるソースからのものでない限りcommand
、これを行わないthingy
でください。
この代替手段では、コマンドをバックグラウンドで実行できますが、デフォルトを使用するため安全ですshell=False
。
p = subprocess.Popen(command_list)
このステートメントが実行された後、コマンドはバックグラウンドで実行されます。完了したことを確認したい場合は、を実行しp.wait()
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加