¿Cómo ejecutar Dropbox Daemon en segundo plano?


38

Estoy usando Debian 6 y Dropbox. Seguí estos comandos para instalarlo.

Cuando corro ~/.dropbox-dist/dropboxd, Dropbox funciona y todo eso . El problema es que cuando cierro la terminal o, lo que es peor, reinicio, Dropbox deja de funcionar y necesito ejecutar ese demonio nuevamente.

¿Cómo puedo hacer que la computadora inicie automáticamente ese demonio en segundo plano?


¿Has probado el script de python vinculado a continuación en ese mismo sitio web? Parece estar dirigido a controlar el demonio. (Sin embargo, no tengo acceso a un cajero automático basado en Debian para probarlo).
WhyNotHugo

Respuestas:


51

Si está ejecutando el demonio desde su propia cuenta, inícielo en el momento del arranque con Cron . Ejecute crontab -epara editar su archivo crontab y agregue la línea

@reboot ~/.dropbox-dist/dropboxd

Si bien esto funcionaría, lo ideal sería crear el script de servicio /etc/init.d/utilizando el script de esqueleto que contiene. Luego puede agregarlo service dropbox startal cron al reiniciar y aún así tener la capacidad de detener el servicio y reiniciarlo.
sparticvs

@sparticvs: ¿Dropbox no se ejecutará como root si lo coloca en init.d? Dropbox se puede configurar para ejecutarse por usuario. ¿Se puede compartir el dropboxd entre usuarios que usan diferentes cuentas de dropbox?
Lord Loh

@LordLoh. buen punto. Sin embargo, podría cambiar a quién quiere ejecutar. Encontré este recurso. Parece nuevo
sparticvs

1
@LordLoh. @sparticvs Creo que hay una solución para la init.dejecución como problema raíz. Publiqué una respuesta propia, pero la solución en pixeldust.wikidot.com/linode-setup%3adropbox parece funcionar bien.
Zac

13

ejecuta el comando de esta manera:

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

Esto separará el proceso del terminal real y lo colocará en segundo plano real.

Sin embargo, aún tendrá que iniciarlo manualmente después de un reinicio.


11

Aquí está mi solución. Esto está en Debian 8.

Instale Dropbox según las instrucciones estándar. Hasta ahora, solo tengo un usuario conectado, no sé si esto funcionará con varios usuarios, ya que Dropbox parece registrar la máquina y no la cuenta de usuario de Linux. Si sabe cómo hacer funcionar varias cuentas de usuario en un servidor, infórmenos.

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

Luego instale las instrucciones del script de control de Python, pero póngalo en / usr / bin y no en su directorio de inicio.

Cree el archivo /lib/systemd/system/dropbox@.service:

[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

Habilite el servicio para el usuario fred:

$ sudo systemctl enable dropbox@fred.service

Luego inicie el servicio:

$ sudo systemctl start dropbox@fred.service

Me gusta tu respuesta, solo un par de cosas que cambio. Yo añadiría After=network.targetbajo [Unit]y poner el archivo en Python /usr/local/binpor unix.stackexchange.com/questions/8656/...
meffect

5

También puedes correr como un demonio haciendo daemon $HOME/.dropbox-dist/dropboxd.

Esto tiene la ventaja de que si además pasa la -n/--namebandera, puede usar daemon --[running|restart|stop] -n <name>para controlar el proceso.

Quizás alguien más pueda aportar la mejor forma de comenzar a usar los demonios daemonpara ejecutarse en el inicio ...



3

Echa un vistazo aquí:

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

Un usuario mencionó:

Solo pensé en mencionar:

(a) las últimas distribuciones parecen hacer que esto sea bastante sencillo, simplemente ejecute dropbox startdesde la línea de comando, PERO (b) tenga cuidado al iniciar y cerrar sesión con X11 reenviado.

He configurado muchos alias Bash para conectarse a varias máquinas, y todos incluyen la -Xopción de reenviar paquetes X11. Debido a esto, Dropbox seguía muriendo en mi al cerrar sesión, incluso ejecutándolo bajo screeny con nohup. Aparentemente, haber reenviado X11 estaba causando que Dropbox conectara el proceso dbus en mi máquina local en lugar de en la máquina remota; entonces, cuando rompí la conexión, Dropbox vio que dbus había terminado y, por lo tanto, se estaba terminando.

Solo para tu información, ya que esto me dejó perplejo un poco. La clave era que tenía que presionar Ctrl, Cincluso después de cerrar sesión / ejecutar exit en la máquina remota. Aparentemente, SSH mantenía la sesión abierta, a pesar de que había salido de Bash, debido a la conexión abierta restante.

La solución es simple incluso si uno (por alguna razón) quiere seguir compartiendo con -X: antes de iniciar Dropbox, debe "interrumpir" el reenvío, por ejemplo:

$ unset DISPLAY

Si esto se hace en una secuencia de comandos Bash, el reenvío se "rompe" dentro de la secuencia de comandos, pero una vez que se ejecuta, el "terminal" sigue reenviando.


3

Aquí está mi solución para distribuciones de Linux usando Upstart 1.4 y superior.

Guarde el contenido a continuación en un archivo de configuración /etc/init, por ejemplo /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 el demonio sin reiniciar:

sudo start db_user

NOTA: Al descomentar la línea setgid no es necesario establecer el indicador setgid en la .dropbox.cachecarpeta como lo indican otras fuentes en Internet.


2

Podrías usar screen:

screen -dmS ~/.dropbox-dist/dropboxd

Esto lo iniciará como un demonio y en modo separado.

A continuación, tendría que escribir su propio guión init.d para que se ejecute como servicio de esta manera y añadir una línea después #!/bin/bashde chkconfigy añadir los niveles necesarios de ejecución, como por ejemplo 2, 3, 4, 5. Las diferentes distribuciones tienen diferentes niveles de ejecución por lo tendrías que comprobar esto.


1

Hay una manera bastante agradable de agregar esto a lo init.ddescrito aquí . Debe agregar los usuarios para los que desea que inicie Dropbox al script de inicio (lo suficientemente fácil), y cuando el sistema se inicia, iniciará el demonio de Dropbox para cada uno de esos usuarios.

Lo único a tener en cuenta es que especifican DAEMON=.dropbox-dist/dropboxcuál creo que es incorrecto. El autor olvidó el dal final de eso, debería ser DAEMON=.dropbox-dist/dropboxd.


1

Puede que no sea útil para todas las distribuciones de Linux, pero en CentOS 7, desde el menú Aplicaciones / Herramientas del sistema / , abra ' Aplicaciones de inicio '. Luego haga clic en Agregar e ingrese este comando:

/home/username/.dropbox-dist/dropboxd

o

/home/.dropbox-dist/dropboxd

ingrese la descripción de la imagen aquí


@roaima gracias por tu juicio. ¿Qué otra solución? Acabo de publicar la solución que funcionó para mí.
Aryo Z

0

Agregué las siguientes líneas al final de mi archivo .profile. Prefiero que la computadora arranque en la terminal. Sin embargo, si inicio X11 después de esto, el applet de Dropbox no se muestra en la bandeja del sistema.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi

Suponiendo que realmente quiere decir [ $rv -eq 0](y no [ $rv -ne 0 ]) que podría simplificar todo eso condropbox running && dropbox start
roaima



-1

La solución es como otros programas de Python:

shell$ nohup ~/.dropbox-dist/dropboxd & 

-2

Creo que la mejor manera es crear un nuevo archivo en / usr / bin con este código:

#!/bin/bash

~/.dropbox-dist/dropboxd

guárdelo y asígnele el nombre "dropbox". Ahora puede ejecutar desde la consola en segundo plano o crear un acceso directo en su menú / escritorio


2
Esto es incorrecto ya que simplemente se ejecutaría en primer plano. Tendría que hacerlo dropbox &para enviarlo a un segundo plano. Además, si se finaliza la conexión del terminal, la señal de Hangup matará el proceso.
sparticvs
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.