2013-03-16 11 views
5

Mam kilka zaszyfrowanych dysków, które montuję ręcznie ze skryptem po starcie. Jeden z tych dysków jest hostem mojego folderu Dropbox.Ponowne uruchamianie demona dropboxa, jeśli działa

Muszę sprawdzić, czy Dropbox jest uruchomiony podczas instalacji dysku, aby można było zatrzymać Dropbox, a następnie uruchomić go ponownie, aby poprawnie zsynchronizować.

To jest to, co do tej pory miałem, ale nie mogę go zatrzymać, jeśli już działa.

#!/bash/rc 
if ~/dropbox.py running && [ $? -eq 1 ]; then 
    ~/dropbox.py stop 
else 
    ~/dropbox.py start 
fi 
+0

Możesz użyć '/etc/init.d/dropbox stop' – fedorqui

+0

Problem polega na tym, że nie przestaje on dropbox, tylko mówi, że jest uruchomiony. To, czego chcę, to to, że Dropbox zatrzymuje się, a następnie uruchamia, jeśli zobaczy, że usługa jest uruchomiona. – hild

Odpowiedz

6

Spróbuj

killall dropbox 

To będzie zatrzymać go na pewno! Domyślnie wysyłany jest SIGTERM, który jest właściwym sposobem zatrzymania procesu. Jeśli twój system obsługuje wiele jednoczesnych logowań użytkownika, to polecenie spowoduje zamknięcie skrzynki wszystkich użytkowników lub przynajmniej spróbuje to zrobić. Więc bardziej eleganckim sposobem jest użycie

killall -u myusername dropbox 

a jeśli jesteś aktualnie zalogowany przez tego użytkownika:

killall -u "$(whoami)" dropbox 

Albo nawet

killall -u "$USER" dropbox 

UPDATE: dobrze, Wygląda na to, że ludzie tacy jak ta odpowiedź. Jednak jest jedna ważna rzecz, którą należy wiedzieć. Samo wysłanie sygnału do procesu wcale nie musi oznaczać, że natychmiast się zakończy (lub że killall będzie czekać na jego zakończenie). Jest więc możliwe, że Dropbox podejmie próbę bezpiecznego zakończenia (co może zająć trochę czasu, aby zakończyć), gdy założysz, że już go nie ma. Trzeba się zastanowić.

Powiązane problemy