Hai bisogno di assistenza per la risoluzione dei problemi / apprendimento di launchctl e plist

3

Sono sempre stato un tipo crontab. Recentemente ho deciso di passare ai processi launchd di Apple e non riesco a far funzionare il mio primo plist.

  1. Il comando plutil -lint mi dice che il plist è formattato correttamente. In realtà, emette "OK".

  2. Ho eseguito manualmente lo script bash e ho confermato che funziona correttamente quando viene avviato manualmente.

  3. Ho caricato il file usando loadctl load e ho ricevuto la risposta "già caricata" in ripetuti tentativi di fare lo stesso.

Il problema deve essere nella mia definizione PLIST. Per favore aiutami a individuare l'errore.

Mi aspetto che venga eseguito con le seguenti condizioni:

  • Solo mentre l'utente jaredclemence utilizza il sistema
  • Una volta immediatamente al login
  • Ogni 15 minuti dopo
  • Cambia la directory in /Library/WebServer/Documents/medface/ prima di eseguire lo script.

Il file plist è il seguente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>org.pediatricheartcenter.medface.crons</string>
        <key>User</key>
        <string>jaredclemence</string>
        <key>ProgramArguments</key>
        <array>
                <string>/User/jaredclemence/runMedfaceSchedTasks.batch</string>
        </array>
        <key>WorkingDirectory</key>
        <string>/Library/WebServer/Documents/medface</string>
        <key>StartInterval</key>
        <integer>900</integer>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Note:

  • Ho archiviato il file in ~/Library/LaunchAgents/org.pediatricheartcenter.medface.crons.plist
  • Una versione precedente del file utilizzava Program invece di ProgramArguments con un valore <string> invece di un array.
posta Jared Clemence 03.02.2017 - 18:31
fonte

1 risposta

4

Launchd scrive gli errori su system.log. Usando Console, ho visto il registro. Lì, launchd mi ha detto che non mi piaceva il mio valore chiave User . Ho rimosso la coppia chiave-valore User - jaredclemence e caricato di nuovo il plist. Poi mi ha detto che il programma batch non esisteva e ho quindi notato l'errore nel percorso del file. /User dovrebbe essere /Users

Rimuovendo l'impostazione Utente e correggendo il percorso del file, sono stato in grado di risolvere il problema. Ora, eseguendo ps -ef | grep 'runMed' , sono in grado di vedere che il file batch è attualmente in esecuzione.

Successo!

    
risposta data 03.02.2017 - 18:48
fonte

Leggi altre domande sui tag