8

我有几个加密驱动器,我在启动后使用脚本手动安装它们。其中一个驱动器托管我的保管箱文件夹。

我需要在安装驱动器时检查 dropbox 是否正在运行,以便我可以停止 dropbox,然后重新启动它,以便正确同步。

这是我到目前为止所拥有的,但如果它已经在运行,我无法让它停止 Dropbox。

#!/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

更新:好吧,似乎人们喜欢这个答案。但是,有一件重要的事情要知道。仅仅向进程发送信号并不意味着它会立即终止(或者 killall 将等待它终止)。因此,当您假设它已经消失时,Dropbox 可能会尝试安全终止(这可能需要一些时间才能完成)。只是要考虑的事情。

于 2013-08-20T08:22:54.190 回答