16 votos

Relanzar automáticamente una aplicación cerrada

Tengo una aplicación que se abre cuando me conecto.

¿Hay alguna forma de relanzarla automáticamente si se bloquea o si la cierro sin querer? (la aplicación en cuestión es Transmission si hay alguna solución específica para esta app)

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

Gracias.

0 votos

Duplicado de / similar a: apple.stackexchange.com/questions/3030/

29voto

Aquí está mi launchd script para mantener SomeApp siempre en marcha.

Nómbralo SomeApp.restart.plist y colocarlo en ~/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>
</dict>
</plist>

Cárguelo una vez con

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

Launchctl lo ejecutará después de los reinicios.

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

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

8voto

Mark Porter Puntos 189

Puedes escribir un launchd script para hacerlo. Launchd puede vigilar las aplicaciones y reiniciarlas si desaparecen. Puede que tenga uno en alguna parte si está 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>

0 votos

Esto es algo que puedo explorar. ¿Podría enviarme un ejemplo?

0 votos

He borrado mi comentario porque no he podido formatear el código.

0 votos

Lo siento, acepté la otra respuesta porque el script parecía más completo y estaba la referencia a Lingon. Pero has sido el primero en dar la respuesta correcta, así que gracias por ello ;)

0voto

Puedes abrir aplicaciones en segundo plano con open -jg o el 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>

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X