Wie starte ich den Dropbox-Daemon im Hintergrund?

38

Ich benutze Debian 6 und Dropbox. Ich habe diese Befehle befolgt , um es zu installieren.

Wenn ich renne ~/.dropbox-dist/dropboxd- funktioniert Dropbox und so. Das Problem ist, dass Dropbox beim Schließen des Terminals oder, noch schlimmer, beim Neustart nicht mehr funktioniert und ich den Daemon erneut ausführen muss.

Wie kann ich den Computer diesen Dämon automatisch im Hintergrund starten lassen?

daGrevis
quelle
Haben Sie das unten auf derselben Website verlinkte Python-Skript ausprobiert? Es scheint darauf abzuzielen, den Daemon zu steuern. (Ich habe keinen Zugang zu einem Debian-basierten Geldautomaten, um es selbst zu versuchen).
WhyNotHugo

Antworten:

51

Wenn Sie den Daemon von Ihrem eigenen Konto aus ausführen, starten Sie ihn beim Booten mit Cron . Führen Sie aus crontab -e, um Ihre crontab- Datei zu bearbeiten und die Zeile hinzuzufügen

@reboot ~/.dropbox-dist/dropboxd
Gilles 'SO - hör auf böse zu sein'
quelle
Während dies funktionieren würde, wäre es am besten, das Dienstskript unter /etc/init.d/Verwendung des darin enthaltenen Grundgerüstskripts zu erstellen . Sie können das dann beim service dropbox startNeustart zum Cron hinzufügen und haben weiterhin die Möglichkeit, den Dienst zu stoppen und neu zu starten.
Sparticvs
@sparticvs - Läuft dropbox nicht als root, wenn Sie es in init.d einfügen? dropbox kann so konfiguriert werden, dass es pro Benutzer ausgeführt wird. Kann die Dropboxd von Benutzern mit verschiedenen Dropbox-Konten gemeinsam genutzt werden?
Lord Loh.
@LordLoh. guter Punkt. Sie können jedoch ändern, als wen Sie ausführen möchten. Ich habe diese Ressource gefunden. Sieht neu aus.
Sparticvs
1
@LordLoh. @sparticvs Ich denke, es gibt eine Lösung für das init.dProblem, als root zu laufen. Ich habe eine eigene Antwort gepostet, aber die Lösung unter pixeldust.wikidot.com/linode-setup%3adropbox scheint gut zu funktionieren.
Zac
13

Führen Sie den Befehl folgendermaßen aus:

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

Dadurch wird der Prozess vom eigentlichen Terminal getrennt und in einen realen Hintergrund versetzt.

Sie müssen es jedoch nach einem Neustart immer noch manuell neu starten.

mutek
quelle
11

Hier ist meine Lösung. Dies ist auf Debian 8.

Installieren Sie Dropbox gemäß den Standardanweisungen. Bisher habe ich nur einen Benutzer verbunden, ich weiß nicht, ob dies mit mehreren Benutzern funktionieren wird, da Dropbox den Computer und nicht das Linux-Benutzerkonto zu registrieren scheint. Wenn Sie wissen, wie Sie mehrere Benutzerkonten auf einem Server einrichten können, lassen Sie es uns wissen.

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

Installieren Sie dann die Anweisungen für das Python-Steuerungsskript , aber legen Sie sie in / usr / bin und nicht in Ihrem Ausgangsverzeichnis bin ab.

Erstellen Sie die Datei /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

Aktivieren Sie den Dienst für Benutzer fred:

$ sudo systemctl enable [email protected]

Dann starte den Dienst:

$ sudo systemctl start [email protected]
pointer2null
quelle
Ich mag deine Antwort, nur ein paar Dinge, die ich ändere. Ich würde After=network.targetunter hinzufügen [Unit]und die Python-Datei in /usr/local/binper unix.stackexchange.com/questions/8656/…
meffect
5

Sie können auch als Daemon ausgeführt werden daemon $HOME/.dropbox-dist/dropboxd.

Dies hat den Vorteil, dass Sie den Prozess steuern -n/--namekönnen , wenn Sie zusätzlich das Flag übergeben daemon --[running|restart|stop] -n <name>.

Vielleicht kann jemand anderes einschätzen, wie man Daemons am besten daemonzum Laufen bringt ...

metasoarous
quelle
3

Sie finden Debian- und Ubuntu-init.d-Skripte , kopieren Sie sie einfach nach /etc/init.d/dropbox und passen Sie sie mit dem Benutzernamen an.

In Debian aktivieren mit chkconfig --add dropbox. Dann wie jeder andere Dienst ausführen.

csanchez
quelle
3

Schauen Sie hier:

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

Ein Benutzer erwähnte:

Ich dachte nur, ich würde erwähnen:

(a) Die neuesten Distributionen scheinen dies recht unkompliziert zu machen, laufen Sie einfach dropbox startvon der Kommandozeile aus, ABER (b) achten Sie auf das An- und Abmelden mit X11 weitergeleitet.

Ich habe viele Bash-Aliase für die Verbindung mit verschiedenen Computern eingerichtet, und alle enthalten die -XOption, X11-Pakete weiterzuleiten. Aus diesem Grund starb Dropbox bei meiner Abmeldung weiter und lief sogar unter screenund mit nohup. Anscheinend führte die Weiterleitung von X11 dazu, dass Dropbox den dbus-Prozess auf meinem lokalen Computer und nicht auf dem Remotecomputer anschloss. Als ich die Verbindung unterbrach, sah Dropbox, dass dbus beendet war und sich selbst beendete.

Nur zu Ihrer Information, das hat mich ein bisschen verblüfft. Der Schlüssel war, dass ich drücken musste Ctrl- Cauch nach dem Abmelden / Ausführen exit auf dem Remote-Computer. Anscheinend hielt SSH die Sitzung offen, obwohl ich Bash wegen der noch offenen Verbindung verlassen hatte.

Die Lösung ist einfach, auch wenn man (aus irgendeinem Grund) weiterhin mit dem -Xfolgenden Befehl arbeiten möchte : Bevor Sie Dropbox starten, sollten Sie die Weiterleitung "unterbrechen", indem Sie beispielsweise Folgendes tun:

$ unset DISPLAY

Wenn dies in einem Bash-Skript gemacht wird, ist die Weiterleitung innerhalb des Skripts "unterbrochen", aber sobald dies ausgeführt wird, leitet das "Terminal" immer noch weiter.

Matteo Duranti
quelle
3

Hier ist meine Lösung für Linux-Distributionen mit Upstart 1.4 und höher.

Speichern Sie die Inhalte unten in eine Konfigurationsdatei unter /etc/init, zum Beispiel: /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

So starten Sie den Daemon ohne Neustart:

sudo start db_user

HINWEIS: Wenn Sie die setgid-Zeile auskommentieren, ist es nicht erforderlich, das setgid-Flag für den .dropbox.cacheOrdner zu setzen, wie von anderen Quellen im Internet angegeben.

Alain
quelle
2

Sie könnten verwenden screen:

screen -dmS ~/.dropbox-dist/dropboxd

Dadurch wird es als Daemon und im getrennten Modus gestartet.

Sie müssten dann Ihr eigenes init.d-Skript schreiben, damit es auf diese Weise als Dienst ausgeführt wird, und eine Zeile nach #!/bin/bashfor chkconfighinzufügen und die erforderlichen Ausführungsebenen wie 2, 3, 4, 5 hinzufügen das müsstest du überprüfen.

Brian
quelle
1

Es ist eine ziemlich nette Art und Weise , dies hinzuzufügen init.dbeschrieben hier . Sie müssen dem Init-Skript hinzufügen, für welche Benutzer Dropbox gestartet werden soll (einfach genug), und wenn das System startet, wird der Dropbox-Daemon für jeden dieser Benutzer gestartet.

Das einzige, was zu beachten ist, ist, dass sie angeben, DAEMON=.dropbox-dist/dropboxwas ich für falsch halte. Der Autor hat das dam Ende vergessen - es sollte sein DAEMON=.dropbox-dist/dropboxd.

Zac
quelle
1

Es ist vielleicht nicht für alle Linux - Distributionen, aber in CentOS 7, von Nutzen seiner Anwendungen / Systemprogramme / Menü öffnen ‚ Startup - Anwendungen ‘. Klicken Sie dann auf Hinzufügen und geben Sie den folgenden Befehl ein:

/home/username/.dropbox-dist/dropboxd

oder

/home/.dropbox-dist/dropboxd

Bildbeschreibung hier eingeben

Aryo Z
quelle
@roaima danke für dein Urteil. Welche andere Lösung? Ich habe gerade die Lösung gepostet, die für mich funktioniert hat.
Aryo Z
0

Ich habe die folgenden Zeilen an das Ende meiner .profile-Datei angehängt. Ich ziehe es vor, den Computer am Terminal hochzufahren. Wenn ich danach X11 starte, wird das Dropbox-Applet jedoch nicht in der Taskleiste angezeigt.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi
Lord Loh.
quelle
Vorausgesetzt, Sie meinen [ $rv -eq 0](und nicht [ $rv -ne 0 ]) wirklich, Sie könnten das alles mitdropbox running && dropbox start
roaima
0

Diese Site enthält anscheinend vollständige Informationen zum Installieren und Konfigurieren von Dropbox unter Linux, einschließlich Herunterladen und Installieren der CLI, Erstellen von Softlinks außerhalb von Dropbox und Ausführen von Dropbox als Dämon. Letzteres stellt ein init.d-Skript dropboxdzur Verfügung, mit dem die Steuerung mit serviceund möglich ist chkconfig.

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

MidnightJava
quelle
-1

Die Lösung ist wie bei anderen Python-Programmen:

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

Ich denke, der beste Weg ist, eine neue Datei in / usr / bin mit diesem Code zu erstellen:

#!/bin/bash

~/.dropbox-dist/dropboxd

Speichern und benennen Sie es "Dropbox". Jetzt können Sie von der Konsole im Hintergrund ausführen oder eine Verknüpfung in Ihrem Menü / Desktop erstellen

Azihak
quelle
2
Dies ist falsch, da es nur im Vordergrund laufen würde. Sie müssten noch tun dropbox &, um es in den Hintergrund zu senden. Wenn die Terminalverbindung beendet wird, bricht das Hangup-Signal den Vorgang ab.
Sparticvs