launchd error "Could not find and/or execute program specified by service"
I am trying to get a script to run from launchd at regular intervals. The service loads but does not run the script.
The script itself is a very simple test script as follows:
echo "Hello World!" >> /Users/rhiannon/Library/Application\ Support/Script\ Testing/test.txt
The script is saved as /Users/rhiannon/Library/Application\ Support/Script\ Testing/test-launchd.sh
(with permissions rwxr-xr-x
) and happily runs from the command line.
I have a plist file as follows:
<?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>uk.co.myco.timedshelltests</string>
<key>Program</key>
<string>/Users/rhiannon/Library/Application\ Support/Script\ Testing/test-launchd.sh</string>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
The plist file is saved as /Users/rhiannon/Library/LaunchAgents/uk.co.myco.timedshelltests.plist
with permissions rw-r--r--
.
I load the service using
launchctl load uk.co.myco.timedshelltests.plist
With logging set with sudo launchctl log level debug
, I see the following error in the system log:
com.apple.xpc.launchd[1] (uk.co.myco.timedshelltests[13505]): Could not find and/or execute program specified by service: 2: No such file or directory: /Users/rhiannon/Library/Application\ Support/Script\ Testing/test-launchd.sh
com.apple.xpc.launchd[1] (uk.co.myco.timedshelltests[13505]): Service setup event to handle failure and will not launch until it fires.
com.apple.xpc.launchd[1] (uk.co.myco.timedshelltests[13505]): Service exited with abnormal code: 78
I'm pretty certain the permissions are correct, and I know the path is correct. What else could be wrong?
Solution 1:
Launchd does not perform word splitting. Remove the escape characters \
from the following line-
<string>/Users/rhiannon/Library/Application\ Support/Script\ Testing/test-launchd.sh</string>