如何在 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 正在做的事情是一样的,并且实际上会使程序less便携的。
像这样的东西可能会起作用。
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 中仔细查看即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)