2010-04-02 20 views
10

Mam skrypt bash, który używa programu growlnotify do wysyłania powiadomień. Jednak growlnotify nie działa, jeśli Growl nie jest już uruchomiony, i nie uruchomi się automatycznie Growl, jeśli jest to potrzebne. Chcę więc móc sprawdzić, czy Growl działa, a następnie uruchomić go, jeśli tak nie jest.
mam na myśli zrobienie czegoś takiego:jak rozpocząć warknięcie za pomocą wiersza poleceń

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

Jak zacznę Growl za pośrednictwem wiersza polecenia?

+0

można skrócić Twoja pierwsza dwie linie do: 'if! ps -e | grep [G] rowl>/dev/null 2> & 1' –

+0

dzięki. ale czy miałeś na myśli "jeśli! ps -e | grep [Gg] rowl>/dev/null 2> & 1'? W każdym razie szukany przez nas proces zawsze będzie zawierał Growl.GrowlHelperApp w nazwie, więc możesz po prostu grep na wielkie Growl. – anoda9

+0

Nie, nie chciałem sprawdzać żadnej z tych spraw, ponieważ wiedziałem, że proces, którego szukasz, zaczyna się od dużego G. Robiąc to tak, jak pokazałem, jest sztuczką, aby uniknąć konieczności robienia 'grep -v' z' ' ps'. –

Odpowiedz

11

Normalnie instalator Growl zapewni, że użytkownik robi instalowanie dostaje element startowy logowania, który uruchamia , demon powiadomień dla Growl. Aplikacja jest wbudowana w preferencje Growl PreferencePane, więc nie możesz zagwarantować, gdzie będzie zlokalizowany; może być w /Library/PreferencePanes lub ~/Library/PreferencePanes, w zależności od instalacji programu Growl. Jeśli czujesz, że nie można ufać użytkownikowi zrobić dobry uczynek, można ręcznie uruchomić aplikację pomocnika z wiersza poleceń w sposób niezależny od lokalizacji za pomocą swojego identyfikatora wiązki:

open -b com.Growl.GrowlHelperApp 
+0

Dziękujemy! właśnie tego szukałem. – anoda9

+0

Cóż, to prawie działa. Jeśli zajrzysz w okienko preferencji systemu, pokaże się, że Growl działa, prawdopodobnie dlatego, że sprawdza on GrowlHelperApp w procesach. Ale jeśli spróbujesz użyć funkcji growlnotify, pojawi się błąd: "nie można znaleźć lokalnej GrowlApplicationBridgePathway, cofając się do NSDNC" – anoda9

+0

Działa dla mnie. Prawdopodobnie nie zadziała, jeśli użytkownik nie jest połączony z serwerem Windows. A to z Growl 1.2 na OS X 10.6.3. Brak gwarancji, że zadziała z jakąkolwiek inną kombinacją lub że się nie zepsuje. Najważniejsze: jeśli użytkownik chce używać Growl do otrzymywania powiadomień, musi zainstalować Growl zgodnie z dokumentacją. –

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

Nie, nie o to pytam. Chcę sprawdzić, czy Growl działa, a nie growlnotify. A jeśli tak nie jest, chcę rozpocząć Growl, nie wysyłać wiadomości z growlnotify. – anoda9

+0

Zobacz, czy masz 'growlctl'. użyj tego, aby rozpocząć/zatrzymać. Jeśli chodzi o polecenie, możesz spróbować grepping dla 'growl' zamiast' Growl' (lub dać -i na 'grep') – ghostdog74

+2

growlctl został wycofany po wersji Growl 0.7.6, a obecna wersja Growl to 1.2 ... został skompilowany dla PowerPC, więc musisz pobrać oprogramowanie Rosetta, aby użyć go na Intel mac. Mógłbym pobrać i zainstalować skrypt Rosetta, i pobrać starą wersję Growl, aby uzyskać growlctl, ale chciałbym robić rzeczy tak prosto, jak to tylko możliwe. Czy nie ma łatwego sposobu uruchamiania procesu takiego jak Growl z wiersza poleceń? – anoda9

Powiązane problemy