プロセスを強制終了しなければならないAPIを作っているのですが、「pythonからPIDをkillできない件」で困っていました。
で、以下の実験用プログラムを作成しました。
import sys
import os
import signal
def kill_process(pid):
try:
os.kill(pid, signal.SIGKILL) # 指定したプロセスIDをSIGKILLシグナルで終了
print(f"Process with PID {pid} has been killed.")
except OSError:
print(f"Failed to kill process with PID {pid}.")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python kill_process.py <PID>")
sys.exit(1)
try:
pid = int(sys.argv[1])
kill_process(pid)
except ValueError:
print("Invalid PID. Please enter a valid integer PID.")
で、
python3 kill_process.py 7870
を連発したのですが、全くプロセスが消えません(ps -ef | grep xxxxxなどでレビュー)
どうやら、最初に"sudo"を付けて、
sudo python3 kill_process.py 7870
で、起動してくれることが分かりました。
で、本家の問題ですが、fastapiを使ったプログラムを試してみたのですが、
sudo uvicorn test:app --host 0.0.0.0 --reload
では、エラーになります。これは環境変数を引きついでいない、とのことで、"-E"を付与することで、動くことを確認しました。
sudo -E uvicorn test:app --host 0.0.0.0 --reload
持っていかれた時間は4時間くらいかなぁ。
それでも、とりあえず動いて、次の開発に進めるので、安堵しています。
(こういう案件を夜に残すと、夜の眠りが浅くなる)。