Crear una aplicación de automatización capaz de iniciarse y salir del dock

2

Tengo un comando de shell que se ejecuta sin fin, hasta que lo detienes usando Control-C . Cuando lo ejecuto desde la Terminal, dice algo así como:

$ /abspath/to/my-command
Command is running ...
Use Control-C to stop it.

Quería poder ejecutar este comando fácilmente desde el dock, así que creé una aplicación Automator, con solo un componente Ejecutar Shell Script , donde escribí /abspath/to/my-command . Luego, guardé "MyApp.app" en mi carpeta de aplicaciones y arrastré & Colóquelo en el muelle.

Hasta ahora, funciona bien, cuando hago clic en la aplicación en el dock, el comando comienza a ejecutarse. Solo hay un gran problema: ¡no puedo abandonar la aplicación! De hecho, en el dock no parece que la aplicación se esté ejecutando. La única solución que he encontrado hasta ahora es hacer ps aux | grep my-command y luego kill -9 <PID> .

¿Cómo puedo salir de "MyApp.app" (como hacer Control-C en la Terminal)?

    
pregunta juliomalegria 05.05.2013 - 02:59

2 respuestas

1

Su aplicación inicia el proceso y luego se cierra de inmediato dejando el proceso en ejecución.

Puede probar y verificar la acción de Automator para ver si el proceso se está ejecutando. si se cierra, si no se inicia,

 isRunning='ps aux | grep -i "Textedit.app"| grep -v grep'

    if [ $isRunning -eq "" ]; then 
        echo "is Not Running" 

/abspath/to/my-command
    else
        echo "is Running"  

# terminate code  here
    fi;

Entonces, cuando haces clic en la aplicación en el Dock. para iniciar el proceso o para detenerlo.

    
respondido por el markhunte 05.05.2013 - 13:03
1

Al abrir una aplicación de Automator se inicia un proceso denominado Application Stub , pero killall Application\ Stub no finaliza sus procesos secundarios.

$ sleep 1 && open ~/Desktop/Untitled.app/ & sudo execsnoop
[1] 650
  UID    PID   PPID ARGS
  501    655    650 open
  501    656    143 Application Stub
  501    657    143 Automator Launch
  501    658    656 bash
  501    658    656 say

pkill -P $(pgrep Application\ Stub) y killall say hizo que Automator muestre un cuadro de diálogo que indica que el flujo de trabajo encontró un error.

Si en su lugar usaste una aplicación AppleScript, podría terminarse desde el Dock o con killall applet .

O si no desea mantener abierta una ventana de shell, use disown o launchctl submit:

say {1..99} & disown $! # stop with killall say
launchctl submit -l my.say say {1..99} # stop with launchctl remove my.say
    
respondido por el user495470 05.05.2013 - 21:07

Lea otras preguntas en las etiquetas