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. – Allan Oct 17 '16 at 10:49