I am trying to troubleshoot a problem with a bash script that gets called by launchd. Here's a quick summary
- Calling the script manually by itself works fine with no errors.
- Within the bash script it calls an AppleScript that posts a notification That AppleScript works fine.
- The
.plistgets loaded and kicks off at the correct interval and calls the bash script. So that works properly - The
.plistis called from/Library/LaunchDaemons(so it can run regardless if anyone is logged in or not). This means everything is run as root.
The problem occurs within the bash script which calls an AppleScript to post a notification - it just never happens.
#!/bin/bash # ------------------------------------------------------------------ sleep 11 echo "This is a test" > test.txt /usr/bin/osascript /Users/allan/Documents/Scripts/AppleScript/notify.scpt "This is a test" "-Test Test Test" "nosound" exit 0 That's it. A quick summary of what I am doing:
sleep 11- launchd needs a min. of 10 seconds of program execution time by default. I just put this in here to accommodate launchdecho "This is a test"- I just write a simple string to a text file to make sure the bash script is getting called. This file gets created with the expected string; this works./usr/bin/osascript /Users......blah blah blah...this fails. This is just a simple AppleScript that takes three arguments (body, title, and sound) to provide a notification.
Running by itself or bash script that calls it, it works:
When the bash script is called from launchd it seems to just not work. Can anyone point me in the right direction? What am I missing?
(OS X 10.11.6)
This is the .plist I am using (yes I know it's set for a 45 second interval...I'm testing)
<?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.user.podcastCleanup</string> <key>Program</key> <string>/Users/allan/Documents/Scripts/Unix/podcastCleanup.sh</string> <key>StartInterval</key> <integer>45</integer> <key>WorkingDirectory</key> <string>/Users/allan/Documents</string> </dict> </plist> Following is the
notify.scpt AppleScript that is used to generate the notification. on run argv set Message to item 1 of argv set Title to item 2 of argv set aud to item 3 of argv set STitle to "Terminal" set Snd to "Blow.aiff" if (aud = "sound") then display notification Message with title Title subtitle STitle sound name Snd else display notification Message with title Title subtitle STitle end if end run 
Library/LaunchAgentand it works fine, but I need it to run regardless if I am logged in or not.