Ho una sceneggiatura che ha funzionato in passato, ma sembra che ora abbia dei problemi (credo sia dovuto a Yosemite). Quello che avevo fatto è stato creare una variabile di ambiente impostata su "false" e quindi il mio script lo avrebbe impostato su "true" in modo che se lo script richiedesse troppo tempo e ricominciasse prima che terminasse, non tenterebbe di eseguirlo di nuovo contemporaneamente. Tuttavia, non funziona più.
Ho impostato inizialmente la variabile con /etc/launchd.conf
setenv autoBackupImagesInProgress false
E la parte del mio script che non funziona più è
#Ensure that this script isn't already running
if [ -z "$autoBackupImagesInProgress" ] ; then
#Concurrency variable was not setup so this will not work;
#edit .bashrc or .profile to include export autoBackupImagesInProgress=false
#should be /etc/launchd.conf
print "WARNING: Concurrency protection unavailable"
elif [ $autoBackupImagesInProgress = true ] ; then
#Another process has already started this, but has not yet finished
print "WARNING: Already in progress; aborting."
exit 0;
fi
Funziona se avvio lo script dal terminale o da Spotlight, ma non quando viene avviato con launchd. Quando viene eseguito da launchd, questo stampa sempre il primo avviso e non colpisce mai elif.