2013-03-16 35 views
5

Tôi có một vài ổ đĩa được mã hóa mà tôi gắn kết thủ công bằng tập lệnh sau khi bắt đầu. Một trong những ổ đĩa đó lưu trữ thư mục dropbox của tôi.Khởi động lại dropbox-daemon nếu chạy

Tôi cần kiểm tra xem dropbox có đang chạy hay không khi gắn ổ đĩa để tôi có thể dừng dropbox và sau đó khởi động lại để nó đồng bộ hóa chính xác.

Đây là những gì tôi có cho đến nay, nhưng tôi không thể làm cho nó ngừng dropbox nếu nó đã chạy.

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

Bạn có thể sử dụng '/etc/init.d/dropbox stop' – fedorqui

+0

Vấn đề là nó không bao giờ dừng dropbox, chỉ nói rằng nó đang chạy. Điều tôi muốn là dropbox dừng lại và sau đó bắt đầu nếu nó thấy rằng dịch vụ đang chạy. – hild

Trả lời

6

Hãy thử

killall dropbox 

Điều này sẽ ngăn chặn nó cho chắc chắn! Theo mặc định SIGTERM được gửi, đó là một cách đúng để ngăn chặn một quá trình. Nếu hệ thống của bạn hỗ trợ nhiều lần đăng nhập người dùng đồng thời, thì lệnh này sẽ chấm dứt dropbox cho tất cả người dùng hoặc ít nhất nó sẽ cố gắng làm như vậy. Vì vậy, cách thanh lịch hơn là sử dụng

killall -u myusername dropbox 

và nếu bạn hiện đang đăng nhập bằng cách sử dụng rằng:

killall -u "$(whoami)" dropbox 

Hoặc thậm chí có thể

killall -u "$USER" dropbox 

Cập nhật: tốt, nó có vẻ như những người như câu trả lời này. Tuy nhiên, có một điều quan trọng cần biết. Chỉ cần gửi một tín hiệu đến một quá trình không thực sự có nghĩa là nó sẽ chấm dứt ngay lập tức (hoặc killall sẽ đợi nó chấm dứt). Vì vậy, có thể dropbox sẽ cố gắng chấm dứt an toàn (có thể mất chút thời gian để hoàn thành) khi bạn cho rằng nó đã biến mất. Chỉ cần một điều để xem xét.

Các vấn đề liên quan