2010-04-02 10 views
10

Tengo un script bash que usa growlnotify para enviar notificaciones. Sin embargo, growlnotify no funciona si Growl aún no se está ejecutando, y tampoco arrancará automáticamente Growl si lo necesita. Así que quiero poder verificar si Growl se está ejecutando, y luego iniciarlo si no es así.
Estoy pensando en hacer algo como:cómo comenzar a gruñir a través de la línea de comando

g=$(ps -e | grep Growl | grep -v grep) 
if [ -z "$g" ] # Growl isn't running 
then 
# (start Growl) 
fi 

¿cómo iba a empezar a gruñir a través de la línea de comandos?

+0

Puede acortar su primera dos líneas para: 'si! ps -e | grep [G] rowl>/dev/null 2> & 1' –

+0

gracias. pero ¿quisiste decir 'si! ps -e | grep [Gg] rowl>/dev/null 2> & 1'? de todos modos, el proceso que estamos buscando siempre tendrá Growl.GrowlHelperApp en el nombre, por lo que puede grep para growl en mayúsculas. – anoda9

+0

No, no quise verificar ninguno de los casos, ya que sabía que el proceso que estaba buscando comenzaba con una G. mayúscula. Hacerlo de la forma en que lo mostraba es un truco para evitar tener que 'grep -v' con' ps'. –

Respuesta

11

Normalmente el instalador Growl se asegurará de que el usuario que realiza la instalación consigue un elemento de inicio de sesión que se inicia , el demonio de notificación de Growl. La aplicación está integrada en Growl PreferencePane, por lo que no puedes garantizar dónde se ubicará; puede estar en /Library/PreferencePanes o ~/Library/PreferencePanes, dependiendo de cómo se haya instalado Growl. Si usted siente que no puede confiar en que el usuario haga lo correcto, puede iniciar manualmente la aplicación de ayuda desde la línea de comandos de una manera independiente de la ubicación utilizando su identificador de paquete:

open -b com.Growl.GrowlHelperApp 
+0

¡Gracias! eso es exactamente lo que estaba buscando. – anoda9

+0

Bueno, eso casi funciona. Si mira en el panel de preferencias del sistema después, dirá Growl se está ejecutando, probablemente porque comprueba GrowlHelperApp en los procesos. Pero si intentas usar growlnotify, obtienes un error: "no pude encontrar GrowlApplicationBridgePathway local, recurriendo a NSDNC" – anoda9

+0

Me funciona. Probablemente no funcionará si el usuario no está conectado al servidor de la ventana. Y esto es con Growl 1.2 en OS X 10.6.3. No hay garantías de que funcione con ninguna otra combinación o de que no se rompa. El resultado final: si un usuario desea usar Growl para recibir notificaciones, el usuario debe instalar Growl como está documentado. –

0
pgrep growlnotify || growlnotify <options> & 
+1

No, eso no es lo que estoy preguntando. Quiero comprobar si Growl se está ejecutando, no growlnotify. Y si no es así, quiero iniciar Growl, no enviar un mensaje con growlnotify. – anoda9

+0

mira si tienes 'growlctl'. utilízalo para comenzar/parar. En cuanto al comando, puedes probar grepping para 'growl' en lugar de' Growl' (o dar -i a 'grep') – ghostdog74

+2

growlctl se suspendió después de la versión Growl 0.7.6, y la versión actual de Growl es 1.2 ... Además, fue compilado para PowerPC, por lo que debe descargar el software Rosetta para usarlo en las Macs Intel. Podría hacer que el script descargue e instale Rosetta, y descargue la versión anterior de Growl para obtener growlctl, pero me gustaría hacer las cosas de la manera más sencilla posible. ¿No hay una manera fácil de comenzar un proceso como Growl desde la línea de comandos? – anoda9

Cuestiones relacionadas