/usr/bin/god is in ruby-god 0.12.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | #!/usr/bin/env ruby
STDOUT.sync = true
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require 'rubygems'
require 'optparse'
require 'drb'
require 'yaml'
begin
# Save ARGV in case someone wants to use it later
ORIGINAL_ARGV = ARGV.dup
options = {:daemonize => true, :port => 17165, :syslog => true, :events => true}
opts = OptionParser.new do |opts|
opts.banner = <<-EOF
Usage:
Starting:
god [-c <config file>] [-p <port> | -b] [-P <file>] [-l <file>] [-D]
Querying:
god <command> <argument> [-p <port>]
god <command> [-p <port>]
god -v
god -V (must be run as root to be accurate on Linux)
Commands:
start <task or group name> start task or group
restart <task or group name> restart task or group
stop <task or group name> stop task or group
monitor <task or group name> monitor task or group
unmonitor <task or group name> unmonitor task or group
remove <task or group name> remove task or group from god
load <file> [action] load a config into a running god
log <task name> show realtime log for given task
status [task or group name] show status
signal <task or group name> <sig> signal all matching tasks
quit stop god
terminate stop god and all tasks
check run self diagnostic
Options:
EOF
opts.on("-cCONFIG", "--config-file CONFIG", "Configuration file") do |x|
options[:config] = x
end
opts.on("-pPORT", "--port PORT", "Communications port (default 17165)") do |x|
options[:port] = x
end
opts.on("-b", "--auto-bind", "Auto-bind to an unused port number") do
options[:port] = "0"
end
opts.on("-PFILE", "--pid FILE", "Where to write the PID file") do |x|
options[:pid] = x
end
opts.on("-lFILE", "--log FILE", "Where to write the log file") do |x|
options[:log] = x
end
opts.on("-D", "--no-daemonize", "Don't daemonize") do
options[:daemonize] = false
end
opts.on("-v", "--version", "Print the version number and exit") do
options[:version] = true
end
opts.on("-V", "Print extended version and build information") do
options[:info] = true
end
opts.on("--log-level LEVEL", "Log level [debug|info|warn|error|fatal]") do |x|
options[:log_level] = x.to_sym
end
opts.on("--no-syslog", "Disable output to syslog") do
options[:syslog] = false
end
opts.on("--attach PID", "Quit god when the attached process dies") do |x|
options[:attach] = x
end
opts.on("--no-events", "Disable the event system") do
options[:events] = false
end
opts.on("--bleakhouse", "Enable bleakhouse profiling") do
options[:bleakhouse] = true
end
end
opts.parse!
# validate
if options[:log_level] && ![:debug, :info, :warn, :error, :fatal].include?(options[:log_level])
abort("Invalid log level '#{options[:log_level]}'")
end
# dispatch
if !options[:config] && options[:version]
require 'god'
God::CLI::Version.version
elsif !options[:config] && options[:info]
require 'god'
God::EventHandler.load
God::CLI::Version.version_extended
elsif !options[:config] && command = ARGV[0]
require 'god'
God::EventHandler.load
God::CLI::Command.new(command, options, ARGV)
else
require 'god/cli/run'
God::CLI::Run.new(options)
end
rescue Exception => e
if e.instance_of?(SystemExit)
raise
else
puts 'Uncaught exception'
puts e.message
puts e.backtrace.join("\n")
end
end
|