web-dev-qa-db-ja.com

ログオフ後にDropboxが実行されない:init.dとdropbox.py

調査員間でデータを処理および共有するために使用されるサーバーの管理者制御を継承しています。 Dropboxを使用していくつかのファイルを共有しようとしています。 Dropboxはサーバーを引き継いだときにインストールされたため、簡単な方法のように思えました。ただし、Dropboxを継続的に実行し続けることはできません。

XセッションでGUIを使用して、最初にアカウントをDropboxにリンクしました。 Dropbox CLIインターフェース(dropbox.py)とinit.dエントリを追加して、デーモンとして起動します。オンラインで見つけた多くの例の1つを使用しています(現在init.dスクリプトは this one =、実際のスクリプトについては以下を参照してください)。

service dropbox statusを呼び出してサーバーを再起動すると、サーバーが実行中であることを返しますが、dropbox.pyはそうではないことを示し、何も同期しません。 dropbox.pyの使用を手動で開始すると、すべてが同期しますが、Dropboxサービスは実行中でないと報告します。 service dropbox startを介して手動で開始した場合、サービスは実行中でないと報告しますが、dropbox.pyは同期と報告します。ログインして修正するたびに、1〜2日はすべて正常に動作しているように見えますが、その後再び同期が停止します。

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
3
dr.nixon

http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment のスクリプトを使用しています以前は動作していましたが、今日チェックすると動作していませんでした。

最終的に私はその行を見つけました

DAEMON = .dropbox-dist/dropbox

dAEMON = .dropbox-dist/dropboxdに変更する必要があります

今では動作します。

1
mfraser