gpt4 book ai didi

ruby - 按名称查找进程 ID

转载 作者:数据小太阳 更新时间:2023-10-29 06:57:19 25 4
gpt4 key购买 nike

如何在不调用外部可执行文件的情况下通过名称或完整命令行在 Ruby 中找到 pid?

我正在将 SIGUSR2 发送到命令行包含 ruby job.rb 的进程。我想在不调用 pgrep 的情况下执行以下操作:

uid = Process.uid
pid = `pgrep -f "ruby job.rb" -u #{uid}`.split("\n").first.to_i
Process.kill "USR2", pid

最佳答案

如何执行此操作取决于您的操作系统。假设是 Linux,您可以手动抓取/proc 文件系统并查找正确的命令行。然而,这与 pgrep 正在做的事情是一样的,并且实际上会使程序不那么可移植。

这样的事情可能会奏效。

def get_pid(cmd)
Dir['/proc/[0-9]*/cmdline'].each do|p|
if File.read(p) == cmd
Process.kill( "USR2", p.split('/')[1] )
end
end
end

只是小心地在/proc 中四处寻找。

关于ruby - 按名称查找进程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com