Skip to content

Instantly share code, notes, and snippets.

@molizz
Last active February 25, 2017 17:55
Show Gist options
  • Save molizz/69997dad67eee756b69ba184a49b8f34 to your computer and use it in GitHub Desktop.
Save molizz/69997dad67eee756b69ba184a49b8f34 to your computer and use it in GitHub Desktop.
# 自动关闭状态为闲置(s)的php进程
#!/usr/bin/env ruby
# 自动关闭状态为闲置(s)的php进程
require 'time'
def php_processes
ps = `ps aux|grep -e '/opt/cpanel/ea-php'`
process = Struct.new(:pid, :created_at, :status) do
def kill()
`kill -6 #{pid}`
end
def dormanted?
%w(X S Z).include? status
end
def timeout?
(Time.now-created_at).to_i > (5*60) # 大于5分钟则关闭进程
end
def kill_dormanted!
kill() if dormanted? && timeout?
end
end
pss = []
ps.split("\n").each do |p|
p = p.split
pid = p[1]
created_at = Time.parse "#{p[8]}" rescue Time.now
status = p[7]
pss << process.new(pid, created_at, status)
end
pss
end
php_processes.each do |p|
p.kill_dormanted!
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment