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