Jay*_*Jay 10
Darron的评论很明显,但是你可以使用Ruby的Process.kill方法和0信号,而不是调用"kill"二进制文件:
#!/usr/bin/ruby
pid = ARGV[0].to_i
begin
Process.kill(0, pid)
puts "#{pid} is running"
rescue Errno::EPERM # changed uid
puts "No permission to query #{pid}!";
rescue Errno::ESRCH
puts "#{pid} is NOT running."; # or zombied
rescue
puts "Unable to determine status for #{pid} : #{$!}"
end
Run Code Online (Sandbox Code Playgroud)
[user @ host user] $ ./is_running.rb 14302
14302正在运行[user @ host user] $ ./is_running.rb 99999
99999未运行.[user @ host user] $ ./is_running.rb 37无权
查询37![user @ host user] $ sudo ./is_running.rb 37
37正在运行
参考:http://pleac.sourceforge.net/pleac_ruby/processmanagementetc.html
Unix具有围绕信号零的kill系统调用的特殊功能.执行错误检查,但不发送信号.
def pid_exists? (pid)
system "kill -0 #{pid}"
return $? == 0
end
Run Code Online (Sandbox Code Playgroud)
一个警告:这将无法检测到您没有权限发出信号的进程.
归档时间: |
|
查看次数: |
6574 次 |
最近记录: |