Qual'è il modo migliore per avviare automaticamente un'app se non è in esecuzione?

4

Voglio avviare automaticamente un'applicazione se non è in esecuzione. Il mio uso è il caso che se esco da una particolare applicazione, voglio riavviare automaticamente. In particolare nel mio caso è l'app Messaggi.

Voglio sempre mantenere l'app Messaggi in esecuzione, quindi se esco da Messaggi, voglio che si riavvii.

Qual è il modo migliore per gestirlo?

    
posta Scott Walter 08.08.2014 - 00:08
fonte

2 risposte

5

Quello che stai cercando è launchd .

Ti consentirà di eseguire un'applicazione in modo continuo (avvio automatico all'avvio, riavvio quando si chiude / arresto anomalo)

Per utilizzarlo aggiungi un file plist in ~/Library/LaunchAgents/

<?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>RunAtLoad</key>  
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>SomeApp.restart</string>
        <key>ProgramArguments</key>
        <array>
                <string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>5</integer>
            <key>Minute</key>
            <integer>10</integer>
       </dict>
</dict>
</plist>

Quindi caricalo una volta con launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist

  • L'opzione RunAtLoad avvierà l'applicazione la prima volta che launchctl esegue questo.
  • L'opzione KeepAlive riavvierà l'applicazione se si blocca.
  • Il StartCalendarInterval lo eseguirà in un determinato momento. Presumibilmente questo è mutuamente esclusivo con i due precedenti, ma è incluso per mostrare cosa può essere fatto con launchd Launchctl verrà eseguito dopo il riavvio.
risposta data 08.08.2014 - 00:57
fonte
1

Come già detto, launchctl è il comando che vuoi. Trovo che la sintassi di launchctl sia piuttosto difficile rispetto a crontab. Ovviamente, launchctl fa molto di più di cron. Pertanto, utilizzo Lingon per fornire una GUI per gestire launchctl.

    
risposta data 08.08.2014 - 01:48
fonte

Leggi altre domande sui tag