Como executar o daemon do Dropbox em segundo plano?

38

Estou usando o Debian 6 e o ​​Dropbox. Eu segui esses comandos para instalá-lo.

Quando eu corro ~/.dropbox-dist/dropboxd- o Dropbox funciona e tudo mais. O problema é que, quando fecho o terminal ou, pior ainda, reinicializo, o Dropbox para de funcionar e preciso executar o daemon novamente.

Como posso o computador iniciar automaticamente esse daemon em segundo plano?

daGrevis
fonte
Você já experimentou o script python vinculado abaixo no mesmo site? Parece ter como objetivo controlar o daemon. (Eu não tenho acesso a uma máquina ATM baseada em debian para tentar por conta própria).
WhyNotHugo

Respostas:

51

Se você estiver executando o daemon a partir de sua própria conta, inicie-o no momento da inicialização com o Cron . Execute crontab -epara editar seu arquivo crontab e adicione a linha

@reboot ~/.dropbox-dist/dropboxd
Gilles 'SO- parar de ser mau'
fonte
Enquanto isso funcionaria, o ideal seria criar o script de serviço /etc/init.d/utilizando o script de esqueleto contido nele. Em seguida, você pode adicionar o service dropbox startcron ao reinício e ainda pode interromper o serviço e reiniciá-lo.
Sparticvs
@sparticvs - O dropbox não será executado como root se você o colocar no init.d? O dropbox pode ser configurado para ser executado por usuário. O dropboxd pode ser compartilhado entre usuários usando diferentes contas do dropbox?
Senhor Loh.
@LordLoh. bom ponto. No entanto, você pode mudar para quem você deseja executar. Eu encontrei este recurso. Parece novo.
Sparticvs
11
@LordLoh. @sparticvs Acho que existe uma solução para o init.dproblema de execução como raiz. Publiquei uma resposta minha, mas a solução em pixeldust.wikidot.com/linode-setup%3adropbox parece funcionar bem.
Zac
13

execute o comando desta maneira:

($HOME/.dropbox-dist/dropboxd &)&

isso irá desanexar o processo do terminal real e colocá-lo em segundo plano.

Você ainda terá que iniciá-lo manualmente após uma reinicialização.

mutek
fonte
11

Aqui está a minha solução. Isso está no Debian 8.

Instale o Dropbox conforme as instruções padrão. Até agora, só tenho um usuário conectado, não sei se isso funcionará com vários usuários, pois o dropbox parece registrar a máquina e não a conta de usuário linux. Se você sabe como obter várias contas de usuário em um servidor, informe-nos.

https://www.dropbox.com/en_GB/install?os=lnx

Em seguida, instale as instruções do script de controle python, mas coloque-o em / usr / bin e não no seu diretório home.

Crie o arquivo /lib/systemd/system/[email protected]:

[Unit]
Description=Dropbox as a system service user %i

[Service]
Type=forking
ExecStart=/usr/bin/dropbox start
ExecStop=/usr/bin/dropbox stop
User=%i
Group=%i
# 'LANG' might be unnecessary, since systemd already sets the
# locale for all services according to "/etc/locale.conf".
# Run `systemctl show-environment` to make sure.
Environment=LANG=en_US.utf-8

[Install]
WantedBy=multi-user.target

Ative o serviço para o usuário fred:

$ sudo systemctl enable [email protected]

Em seguida, inicie o serviço:

$ sudo systemctl start [email protected]
pointer2null
fonte
Eu gosto da sua resposta, apenas algumas coisas que eu mudo. Eu adicionaria After=network.targetabaixo [Unit]e colocaria o arquivo python em /usr/local/binpor unix.stackexchange.com/questions/8656/…
meffect
5

Você também pode executar como um daemon fazendo isso daemon $HOME/.dropbox-dist/dropboxd.

Isso tem a vantagem de que, se você passar a -n/--namesinalização adicionalmente , poderá usar daemon --[running|restart|stop] -n <name>para controlar o processo.

Talvez alguém possa descobrir a melhor forma de começar a usar os daemons daemonpara executar na inicialização ...

metasoário
fonte
3

Você pode encontrar os scripts init.d do Debian e do Ubuntu , basta copiar para /etc/init.d/dropbox e personalizar com o nome de usuário.

Ativar no debian com chkconfig --add dropbox. Em seguida, execute como qualquer outro serviço.

csanchez
fonte
3

Dê uma olhada aqui:

https://community.spiceworks.com/topic/131973-dropbox-headless-workstation?page=1#entry-6076539

Um usuário mencionou:

Só pensei em mencionar:

(a) as distribuições mais recentes parecem tornar isso bastante simples, basta executar a dropbox startpartir da linha de comando, MAS (b) atente para efetuar login e logout com o X11 encaminhado.

Eu configurei muitos aliases do Bash para conectar-se a várias máquinas e todos incluem a -Xopção de encaminhar pacotes X11. Por causa disso, o Dropbox continuava morrendo no meu logout, mesmo executando-o sob screene com nohup. Aparentemente, ter o X11 encaminhado estava fazendo com que o Dropbox conectasse o processo dbus na minha máquina local e não na máquina remota; então, quando eu quebrei a conexão, o Dropbox estava vendo o dbus como encerrado e, portanto, estava se encerrando.

Apenas para sua informação, pois isso me surpreendeu um pouco. A chave era que eu estava tendo que pressionar Ctrl- Cmesmo depois de sair / executar exit na máquina remota. Aparentemente, o SSH estava mantendo a sessão aberta, mesmo que eu tivesse saído do Bash, por causa da conexão aberta restante.

A solução é simples, mesmo que alguém (por algum motivo) queira continuar com o ssh -X: antes de iniciar o Dropbox, você deve "interromper" o encaminhamento, por exemplo, fazendo:

$ unset DISPLAY

Se isso for feito em um script Bash, o encaminhamento será "interrompido" apenas dentro do script, mas uma vez executado, o 'terminal' ainda será encaminhado.

Matteo Duranti
fonte
3

Aqui está minha solução para distribuições Linux usando o Upstart 1.4 e superior.

Salve o conteúdo abaixo em um arquivo de configuração em /etc/init, por exemplo /etc/init/db_user.conf::

# Dropbox upstart script for user db_user, db_user can be replaced by anything you like.

description "Dropbox db_user"
author "myth384"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

setuid db_user
# The next two lines are optional. I use these to be able to share the 
#   Dropbox using Samba. Within group shareusers are all Samba users.
# setgid shareusers
# umask 0002

# The next line is necessary to be able to synchronise files with non-ASCII characters.

env LANG="en_US.UTF-8"     
exec /home/db_user/.dropbox-dist/dropbox

Para iniciar o daemon sem reiniciar:

sudo start db_user

NOTA: Ao descomentar a linha setgid, não é necessário definir o sinalizador setgid na .dropbox.cachepasta, conforme indicado por outras fontes na Internet.

Alain
fonte
2

Você poderia usar screen:

screen -dmS ~/.dropbox-dist/dropboxd

Isso o iniciará como um daemon e no modo desanexado.

Você teria que escrever seu próprio script init.d para executá-lo como serviço dessa maneira e adicionar uma linha depois #!/bin/bashpara chkconfige adicionar os níveis de execução necessários, como 2, 3, 4, 5. Distribuições diferentes têm níveis de execução diferentes, você teria que verificar isso.

Brian
fonte
1

Existe uma maneira bastante agradável de adicionar isso ao init.ddescrito aqui . Você precisa adicionar para quais usuários deseja iniciar o Dropbox no script init (bastante fácil) e, quando o sistema inicializar, iniciará o daemon do Dropbox para cada um desses usuários.

A única coisa a notar é que eles especificam o DAEMON=.dropbox-dist/dropboxque acredito estar incorreto. O autor esqueceu dno final disso - deveria ser DAEMON=.dropbox-dist/dropboxd.

Zac
fonte
1

Pode não ser útil para todas as distros do Linux, mas no CentOS 7, em Aplicativos / Ferramentas do Sistema / menu, abra ' Aplicativos de Inicialização '. Em seguida, clique em Adicionar e insira este comando:

/home/username/.dropbox-dist/dropboxd

ou

/home/.dropbox-dist/dropboxd

insira a descrição da imagem aqui

Aryo Z
fonte
@roaima obrigado pelo seu julgamento. Qual outra solução? Acabei de publicar a solução que funcionou para mim.
Aryo Z
0

Eu adicionei as seguintes linhas ao final do meu arquivo .profile. Eu prefiro ter o computador inicializado no terminal. No entanto, se eu iniciar o X11 depois disso, o miniaplicativo da caixa de depósito não será exibido na bandeja do sistema.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi
Lorde Loh.
fonte
Supondo que você realmente quer dizer [ $rv -eq 0](e não [ $rv -ne 0 ]), você pode simplificar tudo o que comdropbox running && dropbox start
roaima
0

Este site parece ter informações completas sobre como instalar e configurar o dropbox no Linux, incluindo o download e a instalação da CLI, a criação de links flexíveis fora do dropbox e a execução do dropbox como um daemon. Este último fornece um script init.d que permitirádropboxd ser controlado com servicee chkconfig.

http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-centos-gui-required

MidnightJava
fonte
-1

A solução é como outros programas python:

shell$ nohup ~/.dropbox-dist/dropboxd & 
ivo_stefanoff
fonte
-2

Eu acho que a melhor maneira é criar um novo arquivo em / usr / bin com este código:

#!/bin/bash

~/.dropbox-dist/dropboxd

salve e nomeie-o como "caixa de depósito". Agora você pode executar a partir do console em segundo plano ou criar um atalho no menu / área de trabalho

Azihak
fonte
2
Isso está incorreto, pois seria executado apenas em primeiro plano. Você ainda teria que dropbox &enviá-lo para segundo plano. Além disso, se a conexão do terminal for encerrada, o sinal Hangup interromperá o processo.
Sparticvs