Reiniciar automáticamente una aplicación cerrada

6

Tengo una aplicación que se abre cuando inicio mi sesión.

¿Hay una manera de relanzarlo automáticamente si se bloquea o si lo cierro inadvertidamente? (la aplicación en cuestión es Transmisión si hay alguna solución específica para esta aplicación)

En un mundo perfecto, incluso podría lanzarse sin que yo abra una sesión.

gracias.

    
pregunta Pierre 30.08.2010 - 08:11

3 respuestas

10

Aquí está mi script de lanzamiento para mantener SomeApp siempre en ejecución. Está en ~ / Library / LaunchAgents / y se llama 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>

Cárgalo una vez con

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

Launchctl ejecutará esto después de reiniciar.

  • RunAtLoad lanzará la aplicación la primera vez que launchctl ejecute esto
  • KeepAlive lo reiniciará si la aplicación se cierra (CMD + Q o se bloquea)

Debería correr para siempre. Si desea una herramienta GUI para ayudar, Lingon funciona aunque el desarrollo se haya detenido.

    
respondido por el user588 01.09.2010 - 01:37
7

Podrías escribir un script launchd para hacerlo. Launchd puede ver las aplicaciones y reiniciarlas si desaparecen. Podría tener uno en algún lugar si estás interesado.

Actualizado con un ejemplo ...

Ver el ejemplo de mankoff. Aquí está el mío, es ligeramente diferente pero funciona igual ...

<?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>  
    
respondido por el Henry 30.08.2010 - 08:42
0

Puedes abrir aplicaciones en segundo plano con open -jg o el comando launch en AppleScript.

#!/bin/bash

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

KeepAlive no es necesario. RunAtLoad también ejecutaría el programa en el intervalo cero.

<?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>
    
respondido por el user495470 03.09.2012 - 08:17

Lea otras preguntas en las etiquetas