2013-03-16 15 views
5

Ho un paio di unità crittografate che monto manualmente con uno script dopo l'avvio. Una di queste unità ospita la mia cartella personale.Riavvio di dropbox-daemon se in esecuzione

Devo controllare se Dropbox è in esecuzione quando si monta l'unità in modo da poter interrompere il dropbox e riavviarlo in modo che si sincronizzi correttamente.

Questo è quello che ho finora, ma non riesco a farlo arrestare Dropbox se è già in esecuzione.

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

È possibile utilizzare '/etc/init.d/dropbox stop' – fedorqui

+0

Il problema è che non interrompe mai dropbox, dice solo che è in esecuzione. Quello che voglio è che il dropbox si interrompa e quindi si avvia se vede che il servizio è in esecuzione. – hild

risposta

6

Prova

killall dropbox 

questo sta per smettere di sicuro! Per impostazione predefinita, viene inviato SIGTERM, che è un modo giusto per interrompere un processo. Se il tuo sistema supporta più accessi utente simultanei, allora questo comando chiuderà dropbox per tutti gli utenti, o almeno tenterà di farlo. Così modo più elegante è quello di utilizzare

killall -u myusername dropbox 

e se si sta attualmente effettuato l'accesso da quell'utente:

killall -u "$(whoami)" dropbox 

O forse anche

killall -u "$USER" dropbox 

Aggiornamento: bene, sembra che alla gente piaccia questa risposta. Tuttavia, c'è una cosa importante da sapere. L'invio di un segnale a un processo non significa in realtà che terminerà immediatamente (o che killall sta per aspettare che termini). Quindi è possibile che dropbox tenti di terminare in sicurezza (il che potrebbe richiedere del tempo per terminare) quando si assume che sia già andato. Solo una cosa da considerare.

Problemi correlati