Richiama automaticamente un'applicazione chiusa

6

Ho un'applicazione che si apre quando accedo.

C'è un modo per riavviarlo automaticamente se si blocca o se lo chiudo inavvertitamente? (l'applicazione in questione è Transmission se esiste una soluzione specifica per questa app)

In un mondo perfetto, potrebbe persino essere lanciato anche senza che io apra una sessione.

Grazie.

    
posta Pierre 30.08.2010 - 08:11
fonte

3 risposte

11

Ecco il mio script di avvio per mantenere SomeApp sempre in esecuzione. Si trova in ~ / Library / LaunchAgents / e chiamato SomeApp.restart.plist

<?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>
</dict>
</plist>

Caricalo una volta con

launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist

Launchctl verrà eseguito dopo il riavvio.

  • RunAtLoad avvierà l'applicazione la prima volta che launchctl esegue questo
  • KeepAlive lo riavvierà se l'applicazione si chiude (CMD + Q o crash)

Dovrebbe correre per sempre. Se vuoi uno strumento GUI per aiutarti, Lingon funziona anche se lo sviluppo è stato interrotto.

    
risposta data 01.09.2010 - 01:37
fonte
7

Potresti scrivere uno script launchd per farlo. Launchd può guardare le applicazioni e riavviarle se scompaiono. Potrei averne uno da qualche parte se sei interessato.

Aggiornato con un esempio ...

Vedi l'esempio di mankoff. Ecco il mio, è leggermente diverso ma funziona allo stesso modo ...

<?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>keep.it.running</string>  
    <key>Program</key>  
    <string>/Applications/Address Book.app/Contents/MacOS/Address Book</string>  
</dict>  
</plist>  
    
risposta data 30.08.2010 - 08:42
fonte
0

Puoi aprire le applicazioni sullo sfondo con open -jg o il comando launch in AppleScript.

#!/bin/bash

open -jg -a FastScripts -a Mail
osascript -e 'launch app "Alfred"'

KeepAlive non è necessario. RunAtLoad eseguirà anche il programma nell'intervallo di zeroth.

<?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>Label</key>
    <string>com.stackexchange.apple.837</string>
    <key>Program</key>
    <string>/Users/username/Library/Scripts/open applications.sh</string>
    <key>StartInterval</key>
    <integer>1</integer>
</dict>
</plist>
    
risposta data 03.09.2012 - 08:17
fonte

Leggi altre domande sui tag