如何在python环境下执行unix“jobs”命令

如何在python环境下执行unix“jobs”命令

我想通过在 python 环境中使用 unix“jobs”命令来了解当前正在运行的后台进程。

我尝试使用

import os
os.system('jobs')

但这对我不起作用。

答案1

jobs不是命令,而是 shell 内置命令。与fgbg和其他 shell 内置函数一起,它用于管理作为 shell 子进程运行的所有“作业”:列出它们、停止它们、将它们放在前台等...因此,它不在作业所属的 shell 上下文之外没有意义。

Python 中的等效概念是使用子流程模块。使用该模块,您可以启动、终止和等待子进程。例如,如果您使用 Python 数组创建多个子进程subprocess.Popen并将所有subprocess.Popen调用的返回值存储在 Python 数组中,则该数组的内容将相当于jobsshell 中的输出。

答案2

作业是 shell 的内部概念。作业实际上是 shell 记住已启动的子进程。您无法从 shell 外部操作该 shell 的作业表。

您可以这样操纵流程。不可能判断一个进程是否是给定 shell 的工作,您所能做的就是猜测。您可以列出父 ID 为 shell PID 的进程;您可以列出作为进程组领导者并且在与 shell 相同的终端上运行的进程。看这个堆栈溢出问题了解一些在 Python 中获取进程信息的方法。

如果您需要在 Python 脚本中控制作业,那么如果可能的话,您实际上应该从 Python 脚本启动和管理进程。您所需要的一切都在subprocess模块

相关内容