バックグラウンドでいくつかのPythonスクリプトを実行するbashスクリプトがあります。私はそれらに割り込み信号を添付しています。そのため、Ctrl-Cを押すと、それらのすべてから脱出します。しかし、私のpythonスクリプトは、SimpleHTTPServerを開始します。割り込みはpythonスクリプトを殺しますが、SimpleHTTPServerを強制終了しません。私はどのようにしてそのプロセスを終わらせることになるでしょうか?シェル割り込みによるPythonサーバーの強制終了
私はmain-script.sh
で次のシェルを持っている:
trap 'kill %1; kill %2' SIGINT
cd "$DIR_1" && ./script1.py &
cd "$DIR_2" && ./script2.py &
./script3.py
Pythonスクリプトは、単にいくつかの余分なヘッダとSimpleHTTPServerを起動します。
ターミナルでps x
を実行すると、
60958 pts/1 S 0:00 /bin/bash ./main-script.sh
60959 pts/1 S 0:00 /bin/bash ./main-script.sh
60960 pts/1 S 0:02 /usr/bin/python ./script1.py host:port1
60962 pts/1 S 0:01 /usr/bin/python ./script2.py host:port2
を与えるとCTRL-C
60960 pts/1 S 0:02 /usr/bin/python ./script1.py host:port1
60962 pts/1 S 0:01 /usr/bin/python ./script2.py host:port2
た後、ここで編集は、サーバーを起動するメインのコードです:
#!/usr/bin/python
import SimpleHTTPServer
import sys
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
def test(HandlerClass=SimpleHTTPRequestHandler,
ServerClass=BaseHTTPServer.HTTPServer):
protocol = "HTTP/1.0"
server_address = (host, port)
HandlerClass.protocol_version = protocol
httpd = ServerClass(server_address, HandlerClass)
httpd.serve_forever()
if __name__ == '__main__':
test()
どれでも助けていただければ幸いです。ありがとうございました。
サーバーを起動するコードが含まれています。それに依存します。 –
@ArtemBernatskyiコードスニップを追加しました。 – JoeFromAccounting