注销后 Dropbox 不运行:init.d 与 dropbox.py

注销后 Dropbox 不运行:init.d 与 dropbox.py

我接管了一台用于处理和在调查人员之间共享数据的服务器的管理控制权。我们一直试图使用 Dropbox 来共享一些文件。我接管服务器时安装了 Dropbox,所以这似乎是一种简单的方法。但是,我无法让 Dropbox 持续运行。

我最初使用 X 会话中的 GUI 将我的帐户链接到 Dropbox。我添加了 Dropbox CLI 界面 (dropbox.py) 和一个 init.d 条目,以将其作为守护进程启动,使用了我在网上找到的众多示例之一(目前 init.d 脚本是仿照这个(请参阅下面的实际脚本)。

当我重新启动服务器时,调用service dropbox status返回它正在运行,但 dropbox.py 指出它没有运行,并且没有同步任何内容。如果我手动开始使用 dropbox.py,所有内容都会同步 - 但 dropbox 服务会报告它未运行。如果我通过手动启动service dropbox start,服务会报告自身未运行,但 dropbox.py 会报告它正在同步。每当我登录并修复它时,一切似乎都运行良好一两天,但随后它又停止同步。

我尝试过终止 init.d 脚本,删除所有条目并重新安装。我尝试过通过命令行重新安装 Dropbox。我似乎无法弄清楚问题出在哪里,而且我在其他地方找到的示例都假设服务器仅在无头模式下运行(但事实并非如此 - 许多用户主要通过远程桌面访问它)。

我不在乎 Dropbox 是否在 GUI 登录时启动,我只希望它始终在后台运行,无论我是否登录。而且我绝对不希望它在我登录时停止(无论是 CLI 还是 X 会话),据我所知,这取决于它最初的启动方式。

(Dropbox 2.10.3,x64,在 Ubuntu 12.04.5 LTS 上)

有什么建议么?

正在使用的 init.d/dropbox 脚本(此处的示例使用虚拟用户名):

#!/bin/sh
### BEGIN INIT INFO
# Provides: dropbox
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: false
# Short-Description: dropbox service
### END INIT INFO

# Replace with linux users you want to run Dropbox clients for
DROPBOX_USERS="my_user_name"

start() {
  echo "Starting dropbox..."
  for dbuser in $DROPBOX_USERS; do
    HOMEDIR=$(getent passwd $dbuser | cut -d: -f6)

    DAEMON=$(find $HOMEDIR/.dropbox-dist/dropbox-lnx.* -name dropboxd)

    if [ -x $DAEMON ]; then
      HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $DAEMON -p "$HOMEDIR/.dropbox/dropbox.pid"
    fi
  done
}

stop() {
  echo "Stopping dropbox..."
    for dbuser in $DROPBOX_USERS; do
      HOMEDIR=$(getent passwd $dbuser | cut -d: -f6)

      DAEMON=$(find $HOMEDIR/.dropbox-dist/dropbox-lnx.* -name dropbox)

      if [ -x $DAEMON ]; then
        start-stop-daemon -o -c $dbuser -K -u $dbuser -x $DAEMON
      fi
  done
}

status() {
  for dbuser in $DROPBOX_USERS; do
    dbpid=`ps -u $dbuser -o pid,cmd | grep "$HOMEDIR"/"$DAEMON"\$ | awk '{ print \$1 }'`
    if [ -z $dbpid ] ; then
      echo "dropboxd for USER $dbuser: not running."
    else
      echo "dropboxd for USER $dbuser: running (pid $dbpid)"
    fi
 done
}

case "$1" in

start)
start
;;

stop)
stop
;;

restart|reload|force-reload)

stop
start
;;

status)
status
;;

*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1

esac

exit 0

答案1

我一直在使用脚本http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment以前它一直正常工作,但是今天我检查时它却不工作了。

最终我发现

DAEMON=.dropbox-dist/dropbox

需要更改为 DAEMON=.dropbox-dist/dropboxd

现在它可以工作了。

相关内容