FWIW L'ho provato qui e sembra che funzioni per me. Ogni volta che aggiungo manualmente qualcosa a /Library/Logs/CrashPlan/history.log.0 lo script è stato attivato.
In quanto tale, questa non è davvero una risposta, ma è più una serie di suggerimenti per il debug di launchd
:
Alcuni suggerimenti per la diagnosi di launchd:
1) Utilizza i percorsi stdout
e stderr
e verifica se qualcosa viene registrato su di essi. Puoi farlo aggiungendo queste righe al tuo file com.crashplan.status.plist
.
<key>StandardErrorPath</key>
<string>/tmp/com.crashplan.status.stderr.log</string>
<key>StandardOutPath</key>
<string>/tmp/com.crashplan.status.stdout.log</string>
(Se più persone usano lo stesso Mac, potresti voler usare un percorso diverso da / tmp / ma se sei solo tu allora è buono come un posto qualsiasi.)
2) Con # 1 potresti anche voler regolare il tuo script (/ Users / Rax / Library / Automation / Shell / crashplan_status) per includere informazioni di debug come quando è iniziato e quando è finito. Questo può essere semplice come qualcosa di simile aggiunto nella parte superiore dello script:
echo "$0: started at 'date'"
e qualcosa di simile alla fine
echo "$0: finished at 'date'"
3) Con # 2 potresti anche voler usare qualcosa come terminale-notificatore per mostrarti quando il tuo copione è essere chiamato, almeno fino a quando non superi la fase di debug.
4) Se nessuno di questi aiuti, dovresti controllare lo stato di uscita di qualsiasi comando che stai chiamando in crashplan_status
e vedere se quelli stanno uscendo correttamente. Ad esempio, supponiamo che stavi eseguendo echo
nel tuo crashplan_status
5) Il tuo ambiente in launchd
è diverso dalla tua shell in qualche modo? La cosa migliore è verificata aggiungendo questa riga nella parte superiore del tuo script di avvio:
/usr/bin/printenv | /usr/bin/open -ef
che farà sì che printenv
venga inviato allo stdout e i risultati aperti in TextEdit.
Il problema più comune di "ambiente" in cui mi imbatto non sta avendo il PATH $ impostato correttamente per launchd. Di solito è impostato nei file init di shell come .bashrc ed ereditato da qualsiasi script di shell eseguito da Terminal, ma non sarà per launchd
.
Puoi vedere il percorso che launchd
sta utilizzando:
launchctl getenv PATH
Se desideri impostarlo, puoi impostarlo
launchctl setenv PATH
per esempio, per il mio sistema sarebbe:
launchctl setenv /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
Se non desideri ricordare di impostarlo ogni volta che avvii il computer, puoi aggiungerlo a /etc/launchd.conf
aggiungendo una riga:
setenv PATH /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
ovviamente modificalo in modo che corrisponda al tuo sistema. Inoltre, non sorprenderti se /etc/launchd.conf
non esiste sul tuo sistema. Potrebbe essere necessario crearlo. Per farlo, ti consiglio un semplice:
sudo pico -w /etc/launchd.conf
e quando hai finito di modificare, premi control + X e segui le istruzioni per salvare le modifiche.