Q: Using launchd to monitor a program/process running
Hi,
I've written a simple bash script to check whether a program (supplied as its only argument) is running and send an email to a set address in the script if it's not. The script works if run on the command line, but I cannot for the life of me get it to work under launchd as a user agent (~/Library/LaunchAgents) where I try to set it to run every minute. The latest incarnation of the relevant .plist file is (monitoring Dropbox):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!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>greencollar.Dropbox.checkRun</string>
<key>StartInterval</key>
<integer>60</integer>
<key>Program</key>
<string>/Users/greencollar/Documents/code/proc_check.sh</string>
<key>ProgramArguments</key>
<array>
<string>proc_check.sh</string>
<string>Dropbox</string>
</array>
</dict>
</plist>
Yes - the bash script is executable and no there are no entries in Console indicating any problems with the .plist file. I have tried making /bin/bash the program, but that doesn't seem to make any difference and reading execvp(3) seems to hint that it wouldn't. I've also tried having everything under <ProgramArguments> without any luck as well. Any help would be greatly appreciated as this seems to me pretty basic and it's very frustrating that I can't get it to work!
iMac, OS X El Capitan (10.11.4)
Posted on May 7, 2016 6:40 AM
Thanks for the reply, but this turned out to be not supplying the AbandonProcessGroup key needing to be set to true so mail (being called in the script) would work (i.e. not be killed by launchd).
Posted on May 10, 2016 4:06 PM