Questo launchd plist è rotto o sono solo io?

1

Stavo leggendo un post su utilizzando BitTorrent Sincronizza su OS X che include un plist di avvio che dovrebbe mantenere l'applicazione in esecuzione nel caso in cui si blocchi. Non sembra funzionare, però, dal momento che ho avuto l'arresto anomalo dell'app e non il riavvio. Sto cercando aiuto per correggere il plist.

Il plist ha questo aspetto:

<?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>KeepAlive</key>
    <dict>
        <key>Crashed</key>
        <true/>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>Label</key>
    <string>sync.com.tjluoma.bittorrentsync</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/open</string>
        <string>-W</string>
        <string>-a</string>
        <string>BitTorrent Sync</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Il bit "intelligente" utilizza /usr/bin/open per avviare l'app, con -W per assicurarti che open aspetti che l'app esca. Ma penso che sia anche per questo che in realtà non funziona. Se sto leggendo questo, l'app verrà riavviata solo se /usr/bin/open si blocca, non se Bittorrent Sync si blocca. Affinché l'approccio sopra funzioni, open dovrebbe restituire lo stato di errore se l'app che ha aperto si è arrestata in modo anomalo (e ciò non accade).

So che potrei risolvere questo problema eliminando open e invece hard codificando il percorso dell'eseguibile come /Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync . Ma c'è un'alternativa che non richiede l'hard-coding del percorso completo? Usare open sarebbe elegante, se funzionasse.

    
posta Tom Harrington 26.02.2015 - 21:53
fonte

1 risposta

1

Era come mi aspettavo. La versione nella domanda non riavvia l'app, perché /usr/bin/open non restituisce uno stato di errore quando l'app si arresta in modo anomalo. Non ero in grado di trovare un modo migliore di codificare il percorso dell'eseguibile, quindi ora sto usando quanto segue.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <dict>
                <key>Crashed</key>
                <true/>
                <key>SuccessfulExit</key>
                <false/>
        </dict>
        <key>Label</key>
        <string>com.getsync.bittorrentsync</string>
        <key>Program</key>
        <string>/Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync</string>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Ho verificato che questo riesca a riavviare correttamente l'app in caso di arresto anomalo.

Una versione più facilmente scaricabile di questo può essere trovata all'indirizzo link

    
risposta data 03.03.2015 - 22:16
fonte

Leggi altre domande sui tag