Linux 获取 Python 脚本的进程 ID

在 Linux 系统中,我们经常需要获取正在运行的进程的 ID(PID),以便进行一些操作,比如监控进程的运行状态、结束进程等。同时,Python 是一种广泛使用的编程语言,也常常被用于编写后台服务或者一些常驻进程。因此,本文将介绍如何在 Linux 系统中获取 Python 脚本的进程 ID。

方法一:使用 ps 命令

在 Linux 中,可以使用 ps 命令来查看当前正在运行的进程列表。我们可以结合 grep 命令来过滤出指定的进程。以下是一个示例的代码:

$ ps aux | grep python

以上命令会列出所有包含 "python" 的进程,其中包括 Python 解释器本身以及 Python 脚本。如果要进一步过滤出特定的 Python 脚本进程,可以使用 grep 命令的正则表达式来匹配进程的命令行参数。例如,如果要查找名为 example.py 的 Python 脚本进程,可以使用以下命令:

$ ps aux | grep "python.*example\.py"

这里使用了 .* 表示匹配任意字符零次或多次,\. 表示匹配真正的点号。通过这种方式,我们可以过滤出指定的 Python 脚本进程,并获取其进程 ID。

方法二:使用 pgrep 命令

除了 ps 命令外,我们还可以使用 pgrep 命令来查找指定进程的进程 ID。pgrep 命令比 ps 命令更加方便,可以直接根据进程名或者其他属性来查找进程。以下是一个示例的代码:

$ pgrep -f example.py

以上命令会查找包含 "example.py" 的进程,并返回其进程 ID。-f 选项表示匹配进程的完整命令行参数。

方法三:使用 psutil 库

在 Python 中,我们可以使用 psutil 库来获取系统进程的信息,包括进程 ID。psutil 是一个跨平台的库,提供了丰富的接口来访问系统信息。以下是一个示例的代码:

import psutil

def get_python_pid(script_name):
    for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
        if proc.info['name'] == 'python' and script_name in proc.info['cmdline']:
            return proc.info['pid']
    return None

上述代码定义了一个函数 get_python_pid,该函数接受一个参数 script_name,表示要查找的 Python 脚本的名称。函数使用 psutil.process_iter 遍历当前运行的进程,然后使用 info 属性获取进程的信息。通过对进程的名称和命令行参数进行判断,即可判断出指定的 Python 脚本进程,并返回其进程 ID。

总结

本文介绍了三种在 Linux 系统中获取 Python 脚本进程 ID 的方法:使用 ps 命令、使用 pgrep 命令以及使用 psutil 库。这些方法各有优劣,可以根据具体的情况选择适合的方法。希望本文对你有所帮助!


参考文献:

  • [ps(1) - Linux manual page](
  • [pgrep(1) - Linux manual page](
  • [psutil documentation](