所以我使用以下代码:
def run(cmd, timeout_sec):
#I have to use this hack because subprocess.run's timeout function doesn't actually timeout :(
#picked up this function from here:
#https://stackoverflow.com/a/10768774/5905599
def kill_proc(proc, timedout):
timedout["value"] = True
proc.kill()
output_logger.info("Running: %s" % cmd)
proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
timedout = {"value": False}
timer = threading.Timer(timeout_sec, kill_proc, [proc, timedout])
timer.start()
stdout, stderr = proc.communicate()
timer.cancel()
return stdout.decode("utf-8"), stderr.decode("utf-8"), proc.returncode, timedout["value"]
我有一个挂起的过程。我甚至尝试使用" kill -9"杀死进程然后最终重新启动。这个过程并不是世界末日,但是不好的是我的计划停止了。有没有办法修改上面的功能,使它继续执行,然后我可以给自己发电子邮件来修复计算机(最后,我不得不重新启动)。
谢谢!