/ Library/LaunchAgentsのfswatchを介してフォルダーを監視するスクリプトをロードする際に問題が発生しました。ターミナルから実行するとスクリプトは正常に実行されますが、plistを使用すると、ログにfswatchの「コマンドが見つかりません」と表示されます。
スクリプトが配置されている場所/パスが指定されているかどうかに関係していると思いますが、理解できません。ここにあります:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>Label</key>
<string>org.papers.fswatch</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/papersfswatch.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/x/Documents/Computer/Logs/papersfswatch.log</string>
<key>StandardOutPath</key>
<string>/Users/x/Documents/Computer/Logs/papersfswatch.log</string>
</dict>
</plist>
Sudo launchctl load /Library/LaunchAgents/org.papers.fswatch.plist
をロードすると、0秒の警告に対してのみ実行されたサービスが表示され、ログに次のように表示されます。
/usr/local/bin/papersfswatch.sh: line 2: fswatch: command not found
もちろん、2行目はfswatchコマンドです。ターミナルから見つかった場合、なぜそれが見つからないのですか、そしてどのようにそれを指すのですか?どんな助けでも大歓迎です!
J
問題が解決しました。
スクリプトをplist経由で実行する場合、(何らかの理由で)fswatch
への絶対パスが必要なようです。この場合 /usr/local/bin/fswatch
ターミナルfswatch
から実行しても問題ありませんが、この場合は問題ありません。