O Dropbox não está em execução após o logoff: init.d vs. dropbox.py

3

Estou herdando o controle administrativo de um servidor usado para processar e compartilhar dados entre os pesquisadores. Estamos tentando usar o Dropbox para compartilhar alguns dos arquivos. O Dropbox foi instalado quando assumi o servidor, então parecia um método fácil. No entanto, não consigo que o Dropbox continue funcionando de maneira consistente.

Inicialmente, vinculei minha conta ao Dropbox usando a GUI em uma sessão X. Eu adicionei a interface Dropbox CLI (dropbox.py) e uma entrada init.d para iniciá-lo como um daemon, usando um dos muitos exemplos encontrados on-line (atualmente o script init.d é modelado após isso , veja abaixo o roteiro atual).

Quando eu reinicio o servidor chamando service dropbox status retorna que está em execução, mas o dropbox.py afirma que não está, e nada sincroniza. Se eu começar a usar manualmente o dropbox.py, tudo será sincronizado, mas o serviço da caixa de depósito informará que ele não está sendo executado. Se eu iniciar manualmente por meio de service dropbox start , o serviço informará que não está sendo executado, mas o dropbox.py relata isso como sincronização. Sempre que eu faço login e conserto, tudo parece rodar bem por um ou dois dias, mas depois ele pára de sincronizar novamente.

Eu tentei matar o script init.d, removendo todas as entradas e reinstalando. Eu tentei reinstalar o Dropbox via linha de comando. Eu não consigo descobrir qual é o problema, e os exemplos que eu estou achando em outro lugar todos assumem que o servidor está rodando sem cabeça apenas (o que não é - vários usuários estão acessando principalmente via desktop remoto).

Eu não me importo se o Dropbox começa no login da GUI ou não, eu só quero que ele seja executado em segundo plano em todos os momentos, esteja eu logado ou não. E eu definitivamente não quero que ele pare se eu fizer login (seja CLI ou sessão X), o que eu li pode acontecer dependendo de como ele foi iniciado inicialmente.

(Dropbox 2.10.3, x64, no Ubuntu 12.04.5 LTS)

Alguma sugestão?

script init.d / dropbox em uso (exemplo aqui usa nome de usuário fictício):

#!/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 \ }''
    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
    
por dr.nixon 11.08.2014 / 18:48

1 resposta

1

Eu tenho usado o script em link que estava funcionando anteriormente, mas quando eu chequei hoje não estava funcionando.

Eventualmente, descobri que a linha

DAEMON = .dropbox-dist / dropbox

necessário mudar para DAEMON = .dropbox-dist / dropboxd

Agora funciona.

    
por mfraser 25.09.2014 / 12:01