質問: macで起動した状態でnode.jsスクリプトを実行できません mac(osx 10.8.2 mountain lion)で1時間ごとに node スクリプトを実行しようとしています。上位の検索結果によると、これを行うための最良の方法は、launchd起動エージェントを追加することです。どういうわけかうまくいかないようです。次の起動エージェントファイルを作成し、~/library/launchagents/agenttest.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>keepalive</key> <dict> <key>successfulexit</key> <false/> </dict> <key>label</key> <string>protocol</string> <key>programarguments</key> <array> <string>/usr/local/bin/node</string> <string>/users/snorpey/path/to/file.js</string> </array> <key>runatload</key> <true/> <key>startinterval</key> <integer>3600</integer> </dict> </plist> ターミナルでlaunchctl load ~/library/launchagents/agenttest.plistを実行して起動エージェントを起動しました。また、スクリプトファイルをsudo chmod -x /users/snorpey/path/to/file.jsで実行可能にし、ファイルのアクセス許可をsudo chmod 777 /users/snorpey/path/to/file.jsで更新しました。ターミナルで/usr/local/bin/node /users/snorpey/path/to/file.jsを実行すると、スクリプトは正常に機能します。ただし、launchdで実行すると機能しないようです。 /var/log/system.logに次のメッセージが表示されます。jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest[21625]): exited with code: 1 jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest): throttling respawn: will start in 10 seconds スクリプトの実行に失敗するのはなぜですか?
回答: 私はしばらくこれにぶつかっていました(127のエラーが発生しました)。 plistに次のようなものが必要であることがわかりました。<key>environmentvariables</key> <dict> <key>path</key> <string>/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict> launchdは、/ usr/local/binを含まない最小パスで処理を実行しているようであり、ノードが正しく機能するには、pathでこれが必要なようです。