Creare un'applicazione di automazione in grado di avviarsi e uscire dal dock

2

Ho un comando shell che gira all'infinito, finché non lo interrompi usando Control-C . Quando lo eseguo dal terminale, va qualcosa del tipo:

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

Volevo essere in grado di lanciare questo comando facilmente dal dock, così ho creato un'applicazione di Automator, con solo un componente Esegui script di shell , dove ho scritto /abspath/to/my-command . Quindi, ho salvato "MyApp.app" nella mia cartella Applicazioni e trascina & rilasciatelo sul dock.

Finora, funziona alla grande, quando faccio clic sull'app sul dock, il comando inizia a girare. C'è solo un enorme problema: non posso uscire dall'applicazione! Infatti, nel dock non sembra nemmeno che l'applicazione sia in esecuzione. L'unica soluzione che ho trovato finora è di fare ps aux | grep my-command e poi kill -9 <PID> .

Come posso uscire da "MyApp.app" (come fare Control-C nel terminale)?

    
posta juliomalegria 05.05.2013 - 02:59
fonte

2 risposte

1

La tua app avvia il processo e si chiude immediatamente lasciando il processo in esecuzione.

Potresti provare a controllare l'azione di Automator per vedere se il processo è in esecuzione. se è uscito, se non lo avvia.

 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;

Quindi quando fai clic sull'app nel Dock. per avviare il processo o interromperlo.

    
risposta data 05.05.2013 - 13:03
fonte
1

L'apertura di un'applicazione di Automator avvia un processo denominato Application Stub , ma killall Application\ Stub non termina i suoi processi figli.

$ 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) e killall say hanno fatto in modo che Automator mostrasse una finestra di dialogo in cui il flusso di lavoro ha riscontrato un errore.

Se invece hai usato un'applicazione AppleScript, potrebbe essere terminata dal Dock o con killall applet .

O se non vuoi mantenere aperta una finestra della shell, usa 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
    
risposta data 05.05.2013 - 21:07
fonte

Leggi altre domande sui tag