【问题标题】:End execution subprocess when Python script is closedPython脚本关闭时结束执行子进程
【发布时间】:2020-06-18 14:50:14
【问题描述】:

我正在运行此命令的 NGINX 服务器上的 Python 脚本

subprocess.call(["sh", "/runscript.sh", arg1, arg2, arg3], shell=False)

问题是当我的服务器终止脚本执行时,运行的子进程无法停止,永远运行。

这是个大问题。

已尝试更改 shell=True/shell=False。

编辑 我已经在 python 脚本中的 sh 脚本中实现了代码。 所以现在流程直接从 subprocess.call 开始。

有一种方法可以保存从 subprocess.call 开始的进程的 PID,并在任务没有输入时结束?

【问题讨论】:

  • 我对 python 多任务处理的细节不够精通,无法说出这个问题是否重复,但看起来你可以从 the answers over here 得出可用的答案。

标签: python process scripting subprocess


【解决方案1】:

首先,您可以:

import os

os.system("tasklist > task.temp")
with open("task.temp", "r") as f:
    print(f.read())
task = input("Enter process: ")
os.system("taskkill /f /im "+task)

找出哪个任务名称属于runscript.sh后,可以替换为:

import os

os.system("taskkill /f /im "+task) 

task 是您要终止的进程的名称。

【讨论】:

  • 但是我可以知道,当运行 subproccess.call 时,每个子进程的 PID 是哪个id,然后抓取关闭脚本的“事件”来杀死它们?
  • 如果我运行该脚本,我会得到“sh: 1: tasklist: not found”。 PS:我在 ubuntu 环境中
猜你喜欢
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2021-04-02
相关资源
最近更新 更多