0
我有一個ruby程序,很簡單,只是在一堆主機上進行DNS查詢。該程序運行良好從終端(Mac OS X 10.6.5),Ruby 1.9.2使用RVM。Ruby prog不會像LaunchDaemon一樣運行
我想按計劃運行此操作並希望加載LaunchDaemon來執行此操作。該程序不作爲LauanchDaemon運行,並且輸出文件已創建,但爲空,所以我無法看到錯誤。我懷疑它與包含有關。
這裏是plist中(它加載罰款,並嘗試運行通過建立兩個輸出文件的證明):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jsw.ping</string>
<key>RunAtLoad</key>
<true/>
<key>Debug</key>
<true/>
<key>StandardOutPath</key>
<string>/var/jsw/logs/ping.txt</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/scott/.rvm/gems/ruby-1.9.2-p0/bin:/Users/scott/.rvm/gems/[email protected]/bin:/Users/scott/.rvm/rubies/ruby-1.9.2-p0/bin:/Users/scott/.rvm/gems/[email protected]/bin:/Users/scott/.rvm/gems/[email protected]/bin:/Users/scott/.rvm/rubies/ruby-1.9.2-p0/bin:/Users/scott/.rvm/bin:/usr/local/maven/bin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin</string>
</dict>
<key>StandardErrorPath</key>
<string>/var/jsw/logs/ping.err.txt</string>
<key>ProgramArguments</key>
<array>
<string>ping.rb</string>
</array>
<key>StartInterval</key>
<integer>1800</integer>
<key>WorkingDirectory</key>
<string>/Library/WebServer/vHosts/scripts/ping/</string>
<key>UserName</key>
<string>scott</string>
</dict>
</plist>
的Ruby程序是:
#!/Users/scott/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
require 'rubygems'
require 'active_record'
require 'yaml'
require 'dnsruby'
include Dnsruby
dbconfig = YAML::load(File.open('database.yml'))
ActiveRecord::Base.establish_connection(dbconfig)
# flush cache
rslt = `dscacheutil -flushcache`
Dnsruby::DNS.open
rslvr = Dnsruby::DNS.new
now = DateTime.now.to_s
mysqlDT = now.gsub("T", " ")
puts mysqlDT
class Host < ActiveRecord::Base
end
class Ip < ActiveRecord::Base
end
Host.find_each do |svr|
ip = rslvr.getaddress(svr.host).to_s
svr.lastIP = ip
svr.save
Ip.create(:ip => ip, :host => svr.host, :DT => mysqlDT, :hostID => svr.id)
end
您是否添加了某種記錄?在LaunchDaemon運行腳本的過程中,查看腳本內部發生的情況可能很有幫助。 – jergason 2010-12-07 05:10:40