8

起動後にスクリプトを使用して手動でマウントする暗号化されたドライブがいくつかあります。それらのドライブの1つは、私のドロップボックスフォルダーをホストします。

ドライブをマウントするときにドロップボックスが実行されているかどうかを確認して、ドロップボックスを停止してから再起動して正しく同期できるようにする必要があります。

これは私がこれまでに持っているものですが、それがすでに実行されている場合、ドロップボックスを停止させることはできません。

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

1 に答える 1

10

試す

killall dropbox

これは確かにそれを止めるつもりです!デフォルトでは、SIGTERMが送信されます。これは、プロセスを停止する正しい方法です。システムが複数の同時ユーザーログインをサポートしている場合、このコマンドはすべてのユーザーのドロップボックスを終了するか、少なくともそうしようとします。よりエレガントな方法は

killall -u myusername dropbox

現在そのユーザーがログインしている場合:

killall -u "$(whoami)" dropbox

または多分さえ

killall -u "$USER" dropbox

更新:まあ、人々はこの答えが好きなようです。ただし、知っておくべき重要なことが1つあります。プロセスにシグナルを送信するだけでは、プロセスがすぐに終了することを意味するわけではありません(または、killallがプロセスの終了を待機することを意味します)。そのため、dropboxがすでになくなっていると想定した場合、dropboxが安全に終了しようとする可能性があります(終了するまでに時間がかかる場合があります)。考慮すべきことです。

于 2013-08-20T08:22:54.190 に答える