Class: ProcessHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/common/socket/rlib/process_helper.rb

Overview

require ‘log4s’

This class suply local process related mehtods

Author

chenjie

Date

2009-4-30

Class Method Summary collapse

Class Method Details

.get_thread_num(module_name) ⇒ Object

获取模块进程的线程数

  • module_name

return thead number or 0(process not running)



58
59
60
61
62
63
64
65
66
# File 'lib/common/socket/rlib/process_helper.rb', line 58

def ProcessHelper.get_thread_num(module_name)
  str = `pstree | grep #{module_name}`
  mdata = str.scan /.*---(\d+).*/
  if mdata.size > 0 then
 return mdata[0][0].to_i
  else
 return 0
  end
end

.is_process_running?(module_name) ⇒ Boolean

判断进程是否正在运行return true/false

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
# File 'lib/common/socket/rlib/process_helper.rb', line 46

def ProcessHelper.is_process_running?(module_name)
  res = `pstree | grep #{module_name} | wc -l`
  if res.to_i > 0 then 
 return true
  else
 return false
  end
end

.kill_process(module_name) ⇒ Object

execute killall to kill a process, if the process is supervised, then it will restart return: void



36
37
38
39
40
41
# File 'lib/common/socket/rlib/process_helper.rb', line 36

def ProcessHelper.kill_process(module_name)
  cmd_str = "killall -9 #{module_name}"
#       $log.debug "kill process cmd = #{cmd_str}"
    `#{cmd_str}`
    sleep 1
end

.start_process(module_name, super_path = "/home/space/space/", child_path = "./bin/") ⇒ Object

用supervise启动单个模块进程

  • module_name module name, e.g.: appui

  • super_path default “/home/space/space”

  • sample Env.start_process(“/home/space/space”, “loadspace.sh”)

return true/false



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/common/socket/rlib/process_helper.rb', line 18

def ProcessHelper.start_process(module_name,super_path="/home/space/space/", child_path="./bin/")
  cmd_str = "cd #{super_path}; nohup #{child_path}#{module_name} >/dev/null 2>&1 &"
#     $log.debug "start process: "+cmd_str
  system "#{cmd_str}"

    sleep 2
  if ProcessHelper.is_process_running?(module_name) then
#         $log.debug "process #{module_name} is running"
        return true
    else
#         $log.debug "process #{module_name} is not running"
        return false
    end
end