Relançou automaticamente uma aplicação fechada -- acos campo com launchd camp apple Relacionado O problema

Automatically relaunch a closed application


10
vote

problema

português

Eu tenho um aplicativo que se abre quando eu fizer o login.

Existe uma maneira de relançar automaticamente se ele trava ou se eu fechar inadvertidamente? (O aplicativo em questão é transmissão se houver qualquer solução específica para este aplicativo)

Em um mundo perfeito, pode até ser lançado mesmo sem eu abrir uma sessão.

obrigado.

english

I have an application that opens when I login.

Is there a way to relaunch it automatically if it crashes or if I close it inadvertently? (the application in question is Transmission if there is any solution specific to this app)

In a perfect world, it could even be launched even without me opening a session.

thanks.

     
 
 

Lista de respostas

17
 
vote
vote
Melhor resposta
 

Aqui está meu script de lançado para manter o SOMEAPP sempre em execução. É em ~ / biblioteca / lançamentos / e chamado somapp.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>    

Carregue uma vez com

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

launchctl executará isso após reinicializações.

  • runatload lançará o aplicativo na primeira vez que o LaunchCTL executa este
  • Keepalive vai reiniciá-lo se o aplicativo acabar (cmd + q ou falha)

deve correr para sempre. Se você quiser uma ferramenta GUI para ajudar, Lingon trabalha mesmo que o desenvolvimento tenha parado.

 

Here is my launchd script to keep SomeApp always running. It is in ~/Library/LaunchAgents/ and called 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> 

Load it once with

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

Launchctl will run this after reboots.

  • RunAtLoad will launch the application the first time launchctl runs this
  • KeepAlive will restart it if the application quits (CMD+Q or crash)

Should run forever. If you want a GUI tool to help, Lingon works even though development has stopped.

 
 
       
       
7
 
vote

Você poderia escrever um script de lançado para fazer isso. Launchd pode assistir para aplicativos e reiniciá-los se eles desaparecerem. Eu poderia ter um em algum lugar se você estiver interessado.

Atualizado com um exemplo ...

Veja o exemplo do Mankoff. Aqui está o meu, é um pouco diferente, mas funciona o mesmo ...

  <?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>      
 

You could write a launchd script to do it. Launchd can watch for applications and restart them if they disappear. I might have one somewhere if you are interested.

Updated with an example...

See mankoff's example. Here's mine, it's slightly different but works the same...

<?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
 
vote

Você pode abrir aplicativos no contexto com open -jg ou o comando launch no AppleScript.

  #!/bin/bash  open -jg -a FastScripts -a Mail osascript -e 'launch app "Alfred"'    

KeepAlive não é necessário. RunAtLoad também executará o programa no intervalo 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>    
 

You can open applications on the background with open -jg or the launch command in AppleScript.

#!/bin/bash  open -jg -a FastScripts -a Mail osascript -e 'launch app "Alfred"' 

KeepAlive is not needed. RunAtLoad would also run the program on the zeroth interval.

<?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> 
 
 

Perguntas relacionadas

4  Desinstalando o Genieo quebrou meu sistema  ( Uninstalling genieo broke my system ) 
Atualizar abaixo, o restante é mais ou menos informações de fundo. Depois de descobrir uma instalação de Genieo, eu recuperei vagamente sendo, bem, não conf...

0  Onde o log de eventos do AppleScript é quando é executado em Launchd?  ( Where does applescript event log go when run under launchd ) 
ou, como registrar um AppleScript (salvo como aplicativo) e / ou visualizar o log de eventos? Nenhuma das instruções de log do AppleScript pode ser encontra...

3  Abrindo uma imagem de disco OS X com um agente de lançamento enquanto a exibição está dormindo  ( Opening an os x disk image with a launchd agent while the display is sleeping ) 
Eu criei um abcdefghijklmnlaunchd agente que abre uma imagem de disco esparsa protegida por senha (e monta seu volume solitário) diariamente às 2h45 em prep...

2  Alterar a extensão de arquivo plist do daemon impedir que ela seja carregada?  ( Does changing a daemons plist file extension prevent it from being loaded ) 
Eu particularmente quero desabilitar: ABCDEFGHIJKLMNABCDEFGHIJKLMN0 , mas em geral para qualquer daemon. Alterar seu ABCDEFGHIJKLMNABCDEFGHIJKLMN1 Extensã...

10  Relançou automaticamente uma aplicação fechada  ( Automatically relaunch a closed application ) 
Eu tenho um aplicativo que se abre quando eu fizer o login. Existe uma maneira de relançar automaticamente se ele trava ou se eu fechar inadvertidamente? (O...

2  AGENTES DE LANÇAMENTO NÃO LAUCHING NA STIREUÇÃO DO SISTEMA  ( Launch agents not lauching at system startup ) 
Eu tenho vários arquivos de plist na pasta ~/Library/LaunchAgents . Todos têm as mesmas permissões, mas duas delas ( Dotjs e pow ) não está lançando no log...

4  Fazer Localizador.Updatedb Run Diariamente no Snow Leopard sem Hacking / System / Library?  ( Make locator updatedb run daily on snow leopard w o hacking system library ) 
No banco de dados ABCDEFGHIJKLMNABCDEFGHIJKLMBCDefGHIJKLMN1 é atualizado uma vez por semana por um trabalho de lançamento, /System/Library/LaunchDaemons/co...

30  Parando lançamentos e daemons  ( Stopping launchagents and daemons ) 
Eu trabalho como administrador em um ambiente universitário. Um dos desafios é parar os serviços instalados por alunos com o CS Major. Algum tempo atrás, eles...

4  Devo estar preocupado se o processo de ajuda estiver comendo RAM após um upgrade para o leão?  ( Should i be concerned if the helpd process is eating ram after an upgrade to lio ) 
HALLO, eu recentemente atualizei para o Mac OS Lion do Snow Leopard no meu MacBook Unibody 2009. Agora, verificando o monitor de atividades, muitas vezes enco...

4  Código de erro 4960 ao salvar um .plist  ( Error code 4960 when saving a plist ) 
Estou tentando criar um arquivo .plist em textwangler, algo que eu nunca fiz antes. Estou usando estas instruções O que me diz para: . Salvar código como ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.