Bash
在 OS X 中使用 RVM 創建 Ruby 啟動任務時出錯
我想定期執行基於 ruby gem 的命令。我正在使用 RVM 並按照此處列出的教程進行操作。
我的 ruby 任務被呼叫
daily_checks.rb
,如下所示:#!/usr/bin/env ruby puts 'in here' Dir.chdir('/Users/Chris/Documents/Sites/mentor') do audit = `bundle-audit` system(%(osascript -e 'display notification "#{audit}" with title "bundle-audit"')) end
我已經設置了一個 RVM 別名和一個 bash 文件
/usr/local/bin/regular_checks.sh
/Users/Chris/.rvm/wrappers/regular_checks/ruby /Users/Chris/Documents/Sites/mentor/script/daily_checks.rb
當我執行時
/usr/local/bin/regular_checks.sh
,ruby 文件被執行並成功執行。然後我在
/Users/Chris/Library/LaunchAgents/local.temp.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>Disabled</key> <false/> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/bin:/usr/bin:/usr/local/bin</string> </dict> <key>Label</key> <string>local.temp</string> <key>LaunchOnlyOnce</key> <false/> <key>Program</key> <string>/usr/local/bin/regular_checks.sh</string> <key>RunAtLoad</key> <true/> <key>StandardErrorPath</key> <string>/tmp/test.stderr</string> <key>StandardOutPath</key> <string>/tmp/test.stdout</string> <key>StartInterval</key> <integer>300</integer> </dict> </plist>
當我使用 launchControl 執行此作業時,該作業似乎失敗,錯誤號
puts 'in here'
為 78。ruby 文件中的 未執行。文件權限與教程中的相同,即
-rwxr--r-- 1 Chris staff 699 24 Nov 20:16 local.temp.plist -rwxr-xr-x 1 Chris admin 111 24 Nov 20:10 /usr/local/bin/regular_checks.sh -rwxr-xr-x 1 Chris admin 207 25 Nov 13:38 daily_checks.rb
什麼是錯誤 78,為什麼文件執行不正常?
似乎錯誤 78 是因為該
/usr/local/bin/regular_checks.sh
文件沒有#!/bin/bash
作為第一行。文件的完整內容應該是#!/bin/bash /Users/Chris/.rvm/wrappers/regular_checks/ruby /Users/Chris/Documents/Sites/mentor/script/daily_checks.rb