如何通过名称找出 运行 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]
我正在和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]