web-dev-qa-db-fra.com

Dropbox ne fonctionne pas après la déconnexion: init.d vs dropbox.py

J'hérite du contrôle de l'administrateur sur un serveur utilisé pour traiter et partager des données entre enquêteurs. Nous avons essayé d'utiliser Dropbox pour partager certains fichiers. Dropbox a été installé lorsque j'ai repris le serveur. Cela semblait donc être une méthode simple. Cependant, je ne parviens pas à faire en sorte que Dropbox continue à fonctionner régulièrement.

J'ai initialement lié mon compte à Dropbox à l'aide de l'interface graphique dans une session X. J'ai ajouté l'interface CLI Dropbox (dropbox.py) et une entrée init.d pour le démarrer en tant que démon, en utilisant l'un des nombreux exemples que j'ai trouvés en ligne (le script init.d est actuellement modelé d'après celui-ci =, voir ci-dessous pour le script actuel).

Lorsque je redémarre le serveur appelant service dropbox status, il renvoie son exécution, mais dropbox.py indique que ce n'est pas le cas et que rien ne se synchronise. Si je commence manuellement à utiliser dropbox.py, tout se synchronise - mais le service dropbox le signale comme ne fonctionnant pas. Si je démarre manuellement via service dropbox start, le service se signale qu'il n'est pas en cours d'exécution, mais dropbox.py le signale en tant que synchronisation. Chaque fois que je me connecte et que je répare le problème, tout semble fonctionner correctement pendant un jour ou deux, mais la synchronisation s'arrête à nouveau.

J'ai essayé de tuer le script init.d, en supprimant toutes les entrées et en les réinstallant. J'ai essayé de réinstaller Dropbox via la ligne de commande. Je n'arrive pas à comprendre le problème, et les exemples que je trouve ailleurs supposent tous que le serveur fonctionne uniquement sans tête (ce qui n'est pas le cas - plusieurs utilisateurs y accèdent principalement via un poste de travail distant).

Peu importe que Dropbox démarre ou non avec la connexion à l’interface graphique, je veux simplement qu’elle soit exécutée en arrière-plan à tout moment, que je sois connecté ou non. Et je ne veux surtout pas que cela cesse si je me connecte (que ce soit en session CLI ou X), ce que j'ai lu peut se produire en fonction de la façon dont le processus a été lancé.

(Dropbox 2.10.3, x64, sur Ubuntu 12.04.5 LTS)

Aucune suggestion?

script init.d/dropbox en cours d'utilisation (l'exemple utilisé ici utilise un nom d'utilisateur factice):

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

J'utilise le script sur http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment qui avait fonctionnait auparavant, mais lorsque j’ai vérifié aujourd’hui, cela ne fonctionnait pas.

Finalement, j'ai trouvé que la ligne

DAEMON = .dropbox-dist/dropbox

nécessaire de passer à DAEMON = .dropbox-dist/dropboxd

Maintenant ça marche.

1
mfraser