1

如何在 python 中获取正在运行的作业列表。IE。我基本上想要jobs字符串或列表或集合中的命令输出。

我目前正在尝试

 p1 = subprocess.Popen(['jobs'], shell=True, stdout=subprocess.PIPE)
 n = p1.communicate()[0].strip()

但这似乎不起作用

4

1 回答 1

6

您必须自己跟踪它。shell 会跟踪它的所有子进程作业,但您不是 shell,因此您必须自己进行跟踪。 jobsBash shell 内置命令,而不是运行的实际可执行文件。当你这样做时subprocess.Popen(['jobs'], shell=True),你正在产生一个新的 shall 并要求提供它的工作,这当然是空的,因为它是一个没有任何正在运行的工作的新 shell。

如果您无法跟踪自己正在运行的作业,您将会遇到困难。在 Linux 上,您可以解析/proc并查找所有以您为父进程的进程。在 Windows 上,您可以使用诸如 pywin32 之类的包装器或访问 Win32 API 的模块来执行类似的操作。ctypes

于 2012-09-19T18:55:42.087 回答