Python程序执行shell命令并关闭进程-总结

需求说明

linux下,有时候我们用Python3执行一个shell命令,这会开启一个进程。
但是这个进程可能能不会主动关闭(比如Linux下的ping指令会一直持续执行),我们希望这个进程执行指定时间后就终止。
重点不是开启一个进程执行shell指令,是找到进程号,并精准杀死这个进程,找了好多资料才试验成功,这里做一个记录。

代码

Python3:

#!/usr/bin/python3
import subprocess
import time
import os
import signal

cmd = 'ping www.baidu.com' #替换为你想要执行的指令
p = subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid)

print("PID: ",p.pid)
print("Sleep now...")
time.sleep(15)  # 假设我们指定程序执行15s,然后杀死它

p.terminate()
p.wait()
os.killpg(p.pid, signal.SIGTERM)
print("End") 
posted @ 2023-01-11 21:57  爱吃砂糖橘的白龙  阅读(631)  评论(0编辑  收藏  举报