如何在 python 中获取正在运行的作业列表。IE。我基本上想要jobs
字符串或列表或集合中的命令输出。
我目前正在尝试
p1 = subprocess.Popen(['jobs'], shell=True, stdout=subprocess.PIPE)
n = p1.communicate()[0].strip()
但这似乎不起作用
您必须自己跟踪它。shell 会跟踪它的所有子进程作业,但您不是 shell,因此您必须自己进行跟踪。 jobs
是Bash shell 内置命令,而不是运行的实际可执行文件。当你这样做时subprocess.Popen(['jobs'], shell=True)
,你正在产生一个新的 shall 并要求它提供它的工作,这当然是空的,因为它是一个没有任何正在运行的工作的新 shell。
如果您无法跟踪自己正在运行的作业,您将会遇到困难。在 Linux 上,您可以解析/proc
并查找所有以您为父进程的进程。在 Windows 上,您可以使用诸如 pywin32 之类的包装器或访问 Win32 API 的模块来执行类似的操作。ctypes