Jak uruchomić demona Dropbox w tle?


38

Używam Debiana 6 i Dropboksa. Postępowałem zgodnie z tymi poleceniami, aby go zainstalować.

Kiedy uruchamiam ~/.dropbox-dist/dropboxd- Dropbox działa i takie tam. Problem polega na tym, że kiedy zamykam terminal lub, co gorsza - restartuję, Dropbox przestaje działać i muszę ponownie uruchomić tego demona.

W jaki sposób komputer może automatycznie uruchamiać tego demona w tle?


Czy wypróbowałeś skrypt Pythona, do którego link znajduje się poniżej w tej samej witrynie? Wydaje się, że jest ukierunkowany na kontrolowanie demona. (Nie mam jednak dostępu do bankomatu opartego na Debianie, aby samemu spróbować).
WhyNotHugo

Odpowiedzi:


51

Jeśli uruchamiasz demona ze swojego konta, uruchom go w czasie rozruchu za pomocą Crona . Uruchom, crontab -eaby edytować plik crontab i dodać linię

@reboot ~/.dropbox-dist/dropboxd

Chociaż działałoby to idealnie, najlepiej byłoby utworzyć skrypt usługi przy /etc/init.d/użyciu skryptu szkieletowego, który jest zawarty w nim. Następnie możesz dodać service dropbox startkomendę do crona przy ponownym uruchomieniu i nadal mieć możliwość zatrzymania usługi i zrestartowania jej.
sparticvs

@sparticvs - Czy dropbox nie będzie działał jako root, jeśli umieścisz go w init.d? Dropbox można skonfigurować do uruchamiania dla poszczególnych użytkowników. Czy dropboxd można udostępniać użytkownikom korzystającym z różnych kont Dropbox?
Lord Loh.

@LordLoh. Słuszna uwaga. Możesz jednak zmienić osobę, którą chcesz uruchomić. Znalazłem ten zasób. Wygląda na nowy.
sparticvs 16.08.13

1
@LordLoh. @sparticvs Myślę, że istnieje rozwiązanie problemu z init.duruchomieniem jako root. Opublikowałem własną odpowiedź, ale wydaje się , że rozwiązanie na pixeldust.wikidot.com/linode-setup%3adropbox działa dobrze.
Zac

13

uruchom polecenie w ten sposób:

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

spowoduje to odłączenie procesu od rzeczywistego terminala i umieszczenie go w rzeczywistym tle.

Jednak nadal będziesz musiał uruchomić go ręcznie po ponownym uruchomieniu.


11

Oto moje rozwiązanie. To jest na Debianie 8.

Zainstaluj Dropbox zgodnie ze standardowymi instrukcjami. Do tej pory mam tylko jednego użytkownika podłączonego, nie wiem, czy to będzie działać z wieloma użytkownikami, ponieważ Dropbox wydaje się rejestrować maszynę, a nie konto użytkownika Linux. Jeśli wiesz, jak uzyskać dostęp do wielu kont użytkowników na jednym serwerze, daj nam znać.

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

Następnie zainstaluj instrukcje skryptu sterującego python, ale umieść go w katalogu / usr / bin, a nie w katalogu katalogu domowego.

Utwórz plik /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

Włącz usługę dla użytkownika Freda:

$ sudo systemctl enable dropbox@fred.service

Następnie uruchom usługę:

$ sudo systemctl start dropbox@fred.service

Podoba mi się twoja odpowiedź, tylko kilka rzeczy, które zmieniam. Chciałbym dodać After=network.targetmocy [Unit]i umieścić plik Pythona w /usr/local/binjednej unix.stackexchange.com/questions/8656/...
meffect

5

Możesz także działać jako demon daemon $HOME/.dropbox-dist/dropboxd.

Ma to tę zaletę, że jeśli dodatkowo zdasz -n/--nameflagę, możesz użyć daemon --[running|restart|stop] -n <name>do sterowania procesem.

Być może ktoś inny może dowiedzieć się, jak najlepiej uruchomić demony daemondo uruchamiania podczas uruchamiania ...


3

Możesz znaleźć skrypty init.dian Debian i Ubuntu , po prostu skopiuj je do /etc/init.d/dropbox i dostosuj za pomocą nazwy użytkownika.

Włącz w debianie za pomocą chkconfig --add dropbox. Następnie uruchom jak każdą inną usługę.


3

Spójrz tutaj:

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

Wspomniany użytkownik:

Pomyślałem, że wspomnę:

(a) najnowsze dystrybucje sprawiają, że jest to dość proste, wystarczy uruchomić dropbox startz wiersza poleceń, ALE (b) uważaj na logowanie i wylogowanie z przekazanym X11.

Skonfigurowałem wiele aliasów Bash do łączenia się z różnymi maszynami, a wszystkie one zawierają -Xopcję przekazywania pakietów X11. Z tego powodu Dropbox wciąż umierał przy moim wylogowaniu, nawet uruchamiając go pod screeni z nohup. Najwyraźniej przekazanie X11 spowodowało, że Dropbox połączył proces dbus na mojej maszynie lokalnej, a nie na maszynie zdalnej; więc, kiedy zerwałem połączenie, Dropbox widział, że dbus zakończył pracę, a zatem sam się kończy.

Tylko do waszej wiadomości, ponieważ trochę mnie to zaskoczyło. Kluczem było to, że musiałem nacisnąć Ctrl- Cnawet po wylogowaniu / uruchomieniu exit na zdalnym komputerze. Najwyraźniej SSH utrzymywał sesję otwartą, mimo że opuściłem Bash, z powodu pozostałego otwartego połączenia.

Rozwiązanie jest proste, nawet jeśli ktoś (z jakiegoś powodu) chce nadal ssh-sować za pomocą -X: przed uruchomieniem Dropbox należy „przerwać” przekazywanie, na przykład wykonując:

$ unset DISPLAY

Jeśli odbywa się to w skrypcie Bash, przekazywanie jest „przerywane” tylko w skrypcie, ale po wykonaniu „terminal” nadal przekazuje.


3

Oto moje rozwiązanie dla dystrybucji Linuksa korzystających z Upstart 1.4 i wyższych.

Zapisz poniższą zawartość w pliku konfiguracyjnym /etc/initna przykład /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

Aby uruchomić demona bez ponownego uruchamiania:

sudo start db_user

UWAGA: Odkomentowanie linii setgid nie wymaga ustawiania flagi setgid w .dropbox.cachefolderze, jak wskazują inne źródła w Internecie.


2

Możesz użyć screen:

screen -dmS ~/.dropbox-dist/dropboxd

Spowoduje to uruchomienie go jako demona i w trybie odłączonym.

Będziesz wtedy musiał napisać własny skrypt init.d mają działać jako usługa w ten sposób i dodać linię po #!/bin/bashza chkconfigi dodać odpowiednie poziomy biegać, tak jak 2, 3, 4, 5. Różne dystrybucje mają różne poziomy run więc musisz to sprawdzić.


1

Istnieje dość dobry sposób na dodanie tego do init.dopisanego tutaj . Musisz dodać użytkowników, dla których Dropbox ma być uruchamiany (do łatwego), a kiedy system się uruchomi, uruchomi demona Dropbox dla każdego z tych użytkowników.

Jedyną rzeczą do odnotowania jest to, że określają, DAEMON=.dropbox-dist/dropboxktóre moim zdaniem są nieprawidłowe. Autor zapomniał o tym dna końcu - tak powinno być DAEMON=.dropbox-dist/dropboxd.


1

Może to nie być przydatne dla wszystkich dystrybucji Linuksa, ale w CentOS 7, z menu Aplikacje / Narzędzia systemowe / otwórz „ Aplikacje startowe ”. Następnie kliknij Dodaj i wprowadź to polecenie:

/home/username/.dropbox-dist/dropboxd

lub

/home/.dropbox-dist/dropboxd

wprowadź opis zdjęcia tutaj


@roaima dzięki za twój osąd. Jakie inne rozwiązanie? Właśnie opublikowałem rozwiązanie, które działało dla mnie.
Aryo Z

0

Na końcu mojego pliku .profile dodałem następujące wiersze. Wolę mieć rozruch komputera z terminala. Jeśli jednak uruchomię X11, aplet dropbox nie będzie wyświetlany na pasku zadań.

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

Zakładając, że naprawdę masz na myśli [ $rv -eq 0](i nie [ $rv -ne 0 ]), możesz to wszystko uprościćdropbox running && dropbox start
roaima



-1

Rozwiązaniem jest, podobnie jak inne programy python:

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

-2

Myślę, że najlepszym sposobem jest utworzenie nowego pliku w / usr / bin za pomocą tego kodu:

#!/bin/bash

~/.dropbox-dist/dropboxd

zapisz i nazwij to „dropbox”. Teraz możesz uruchomić z konsoli w tle lub utworzyć skrót w menu / pulpicie


2
Jest to niepoprawne, ponieważ po prostu działałoby na pierwszym planie. Trzeba jeszcze zrobić, dropbox &aby wysłać go w tle. Dodatkowo, jeśli połączenie terminalu zostanie zakończone, sygnał rozłączenia zabije proces.
sparticvs
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.