Comment exécuter le démon Dropbox en arrière-plan?

38

J'utilise Debian 6 et Dropbox. J'ai suivi ces commandes pour l'installer.

Quand je cours ~/.dropbox-dist/dropboxd- Dropbox fonctionne et tout. Le problème est que lorsque je ferme le terminal ou, pire encore, lorsque je redémarre, Dropbox cesse de fonctionner et je dois relancer ce démon.

Comment faire en sorte que l'ordinateur lance automatiquement ce démon en arrière-plan?

daGrevis
la source
Avez-vous essayé le script python lié ci-dessous sur ce même site? Il semble être destiné à contrôler le démon. (Je n'ai pas accès à un guichet automatique basé sur Debian pour l'essayer moi-même).
WhyNotHugo

Réponses:

51

Si vous exécutez le démon à partir de votre propre compte, démarrez-le au démarrage avec Cron . Exécuter crontab -epour éditer votre fichier crontab et ajouter la ligne

@reboot ~/.dropbox-dist/dropboxd
Gilles, arrête de faire le mal
la source
Bien que cela puisse fonctionner, idéalement, il serait préférable de créer le script de service en /etc/init.d/utilisant le script squelette contenu dans celui-ci. Vous pouvez ensuite ajouter le service dropbox startcron au redémarrage tout en ayant la possibilité d’arrêter le service et de le redémarrer.
commentaires
@sparticvs - Dropbox ne fonctionnera-t-il pas en tant que root si vous le mettez dans init.d? dropbox peut être configuré pour s'exécuter par utilisateur. Dropboxd peut-il être partagé entre des utilisateurs utilisant différents comptes Dropbox?
Seigneur Loh.
@ LordLoh. bon point. Cependant, vous pouvez changer pour qui vous voulez courir. J'ai trouvé cette ressource. A l'air neuf.
commentaires
1
@ LordLoh. @sparticvs Je pense qu'il existe une solution au problème de init.dfonctionnement en tant que racine. J'ai posté une réponse personnelle, mais la solution sur pixeldust.wikidot.com/linode-setup%3adropbox semble bien fonctionner.
Zac
13

lancez la commande de cette façon:

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

cela détachera le processus du terminal actuel et le placera en arrière-plan.

Cependant, vous devrez toujours le redémarrer manuellement après un redémarrage.

Mutek
la source
11

Voici ma solution. Ceci est sur Debian 8.

Installez Dropbox conformément aux instructions standard. Jusqu'à présent, je n'ai qu'un seul utilisateur connecté, je ne sais pas si cela fonctionnera avec plusieurs utilisateurs car dropbox semble enregistrer la machine et non le compte utilisateur linux. Si vous savez comment faire fonctionner plusieurs comptes d’utilisateur sur un serveur, faites-le nous savoir.

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

Ensuite, installez les instructions du script de contrôle python mais placez-le dans / usr / bin et non dans votre répertoire personnel bin.

Créez le fichier /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

Activer le service pour l'utilisateur fred:

$ sudo systemctl enable [email protected]

Puis démarrez le service:

$ sudo systemctl start [email protected]
pointeur2null
la source
J'aime votre réponse, juste une ou deux choses que je change. Je rajouterais After=network.targetsous [Unit]et placez le fichier python dans /usr/local/binpar unix.stackexchange.com/questions/8656/...
meffect
5

Vous pouvez également vous lancer en tant que démon daemon $HOME/.dropbox-dist/dropboxd.

Cela présente l'avantage que si vous passez également le -n/--namedrapeau, vous pouvez utiliser daemon --[running|restart|stop] -n <name>pour contrôler le processus.

Peut-être que quelqu'un d'autre peut nous dire comment mieux utiliser les démons daemonpour qu'ils s'exécutent au démarrage ...

metasoarous
la source
3

Vous pouvez trouver les scripts init.d pour Debian et Ubuntu , il suffit de les copier dans /etc/init.d/dropbox et de les personnaliser avec un nom d'utilisateur.

Activer dans debian avec chkconfig --add dropbox. Puis lancez comme n'importe quel autre service.

csanchez
la source
3

Regardez ici:

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

Un utilisateur a mentionné:

Je pensais juste mentionner:

(a) les dernières distributions semblent rendre cela assez simple, lancez simplement dropbox startdepuis la ligne de commande, MAIS (b) surveillez les ouvertures de session et de déconnexion avec X11 transféré.

J'ai configuré de nombreux alias Bash pour la connexion à diverses machines, et ils incluent tous l' -Xoption de transférer les paquets X11. À cause de cela, Dropbox mourait de faim, même sous screenet avec nohup. Apparemment, le transfert de X11 obligeait Dropbox à connecter le processus dbus sur ma machine locale plutôt que sur la machine distante; ainsi, quand j'ai rompu la connexion, Dropbox considérait que dbus était terminé et se terminait ainsi.

Juste pour votre information, car cela m'a stoppé pendant un moment. La clé était que je devais appuyer sur Ctrl- Cmême après la déconnexion / exécution exit sur la machine distante. Apparemment, SSH gardait la session ouverte, même si j'avais quitté Bash, à cause de la connexion restante ouverte.

La solution est simple même si l’on (pour une raison quelconque) veut garder ssh-ing avec le -X: avant de lancer Dropbox, vous devez "interrompre" le transfert, par exemple en effectuant:

$ unset DISPLAY

Si cela est fait dans un script Bash, le transfert est "interrompu" juste à l'intérieur du script, mais une fois exécuté, le "terminal" est toujours en cours de transfert.

Matteo Duranti
la source
3

Voici ma solution pour les distributions Linux utilisant Upstart 1.4 et supérieur.

Enregistrez le contenu ci-dessous dans un fichier de configuration sous /etc/init, par exemple /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

Pour démarrer le démon sans redémarrer:

sudo start db_user

REMARQUE: En supprimant la mise en commentaire de la ligne setgid, il n'est pas nécessaire de définir l'indicateur setgid sur le .dropbox.cachedossier, comme indiqué par d'autres sources sur Internet.

Alain
la source
2

Vous pouvez utiliser screen:

screen -dmS ~/.dropbox-dist/dropboxd

Cela le lancera en tant que démon et en mode détaché.

Vous devrez alors écrire votre propre script init.d pour le faire fonctionner comme service, puis ajouter une ligne après #!/bin/bashpour chkconfiget ajouter les niveaux d'exécution nécessaires, tels que 2, 3, 4, 5. Les différentes distributions ont des niveaux d'exécution différents. il faudrait vérifier cela.

Brian
la source
1

Il y a une manière assez agréable d'ajouter ceci à init.ddécrit ici . Vous devez ajouter les utilisateurs pour lesquels vous souhaitez que Dropbox soit lancé au script init (assez simple), et lorsque le système démarrera, le démon Dropbox démarrera pour chacun de ces utilisateurs.

La seule chose à noter est qu'ils spécifient DAEMON=.dropbox-dist/dropboxce qui, à mon avis, est incorrect. L'auteur a oublié le dà la fin de cela - cela devrait être DAEMON=.dropbox-dist/dropboxd.

Zac
la source
1

Cela peut ne pas être utile pour toutes les distributions Linux, mais dans CentOS 7, dans le menu Applications / Outils système / , ouvrez « Applications de démarrage ». Puis cliquez sur Ajouter et entrez cette commande:

/home/username/.dropbox-dist/dropboxd

ou

/home/.dropbox-dist/dropboxd

entrez la description de l'image ici

Aryo Z
la source
@ Raima merci pour votre jugement. Quelle autre solution? Je viens de poster la solution qui a fonctionné pour moi.
Aryo Z
0

J'ai ajouté les lignes suivantes à la fin de mon fichier .profile. Je préfère que l'ordinateur démarre au terminal. Cependant, si je lance X11 après cela, l'applet Dropbox ne s'affiche pas dans la barre d'état système.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi
Seigneur Loh.
la source
En supposant que vous pensiez vraiment [ $rv -eq 0](et pas [ $rv -ne 0 ]), vous pourriez simplifier tout cela avecdropbox running && dropbox start
roaima
0

Ce site semble disposer d'informations complètes sur la procédure d'installation et de configuration de Dropbox sous Linux, notamment le téléchargement et l'installation de la CLI, la création de liens symboliques en dehors de Dropbox et l'exécution de Dropbox en tant que démon. Ce dernier fournit un script init.d qui permettra dropboxdd’être contrôlé avec serviceet chkconfig.

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

MinuitJava
la source
-1

La solution est comme d’autres programmes python:

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

Je pense que le meilleur moyen est de créer un nouveau fichier dans / usr / bin avec ce code:

#!/bin/bash

~/.dropbox-dist/dropboxd

sauvegardez-le et nommez-le "dropbox". Maintenant, vous pouvez exécuter à partir de la console en arrière-plan ou créer un raccourci dans votre menu / bureau

Azihak
la source
2
Ceci est incorrect car cela se déroulerait au premier plan. Il faudrait quand même le faire dropbox &pour l'envoyer en arrière-plan. De plus, si la connexion du terminal est terminée, le signal de raccrochage interrompt le processus.
commentaires