如何通过名称找出 运行 python 脚本的 psid?

How to find out the psid of a running python script by name?

我正在和discord.py一起工作,各位大虾。每当 discord bot 收到一条消息 '!kill bot' 时,该脚本应该以 'r5bot.py' 的名称终止另一个脚本(通过 nohup 在后台 运行 )并启动它,如果消息是'!启动机器人'。为此,我需要按名称找出 'r5bot.py' 脚本的 psid,因为它会不断变化。怎么做?

我试过使用 psutil,但它似乎不起作用。

program_name = 'r5bot.py'
process_pids = [process.pid for process in psutil.process_iter() if process.name == program_name]
print(process_pids)  # e.g [1059, 2343, ..., ..., 9645]

但它从不打印任何东西。我做错了什么?

搜索整个命令行可能更好,因为 r5bot.py 可能不是进程名称:

import psutil

program_name = 'r5bot.py'
process_pids = [
    process.pid
    for process in psutil.process_iter() if program_name in process.cmdline()
]
print(process_pids)

输出:
[31959, 32011, 32055, 32098]