Dropbox arka plan programı arka planda nasıl çalıştırılır?


38

Debian 6 ve Dropbox kullanıyorum. Yüklemek için bu komutları takip ettim.

Çalıştığımda ~/.dropbox-dist/dropboxd- Dropbox çalışıyor ve çalışıyor. Sorun şu ki, terminali kapattığımda ya da daha da kötüsü - yeniden başlattığımda, Dropbox'ın çalışmayı bırakması ve bu cini yeniden çalıştırmam gerekiyor.

Bilgisayarın arka planda otomatik olarak bu arka plan programı başlatmasını nasıl sağlayabilirim?


Aynı web sitesinde aşağıda verilen python betiğini denediniz mi? Daemon'u kontrol etmeyi hedefliyor gibi görünüyor. (Ancak kendim denemek için debian tabanlı bir makine ATM'sine erişimim yok).
WhyNotHugo

Yanıtlar:


51

Arka plan programı kendi hesabınızdan çalıştırıyorsanız, önyükleme sırasında Cron ile başlatın . Crontab dosyanızı crontab -edüzenlemek ve satır eklemek için çalıştırın

@reboot ~/.dropbox-dist/dropboxd

Bu işe yarar olsa da, ideal olarak içinde yer /etc/init.d/alan iskelet betiğini kullanarak hizmet betiğini oluşturmak en iyisi olacaktır . Daha sonra service dropbox startyeniden başlatırken cron'a ekleyebilirsiniz ve hala servisi durdurup yeniden başlatma özelliğine sahip olursunuz.
sparticvs

@ sparticvs - init.d içine koyarsanız dropbox root olarak çalışmaz mı? dropbox kullanıcı bazında çalışacak şekilde konfigüre edilebilir. Dropboxd, farklı dropbox hesapları kullanan kullanıcılar arasında paylaşılabilir mi?
Lord Loh.

@LordLoh. iyi bir nokta. Ancak, kimi çalıştırmak istediğinizi değiştirebilirsiniz. Bu kaynağı buldum . Yeni görünüyor
sparticvs

1
@LordLoh. @ sparticvs Bence init.dkök problemi olarak çalışmanın bir çözümü var . Kendi cevabımı gönderdim, ancak pixeldust.wikidot.com/linode-setup%3adropbox adresindeki çözüm iyi çalışıyor gibi görünüyor.
Zac

13

komutu bu şekilde çalıştırın:

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

bu, işlemi gerçek terminalden ayıracak ve gerçek arkaplana koyacaktır.

Yine de, yeniden başlatma sonrasında manuel olarak yeniden başlatmanız gerekecek.


11

İşte benim çözümüm. Bu Debian 8'de.

Dropbox'ı standart talimatlara göre yükleyin. Şimdiye kadar, sadece bir tane kullanıcı bağladım, dropbox makineyi kaydettirdiği için linux kullanıcı hesabına değil, birden fazla kullanıcıyla çalışıp çalışmayacağını bilmiyorum. Çalışan bir sunucuda birden fazla kullanıcı hesabının nasıl alınacağını biliyorsanız, bize bildirin.

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

Ardından python kontrol komut dosyası talimatlarını kurun, ancak onu ev dizininiz kutusuna değil / usr / bin içine koyun.

/Lib/systemd/system/dropbox@.service dosyasını oluşturun:

[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

Fred kullanıcısı için hizmeti etkinleştir:

$ sudo systemctl enable dropbox@fred.service

Ardından servisi başlatın:

$ sudo systemctl start dropbox@fred.service

Cevabını beğendim, değiştirdiğim birkaç şey. Ben eklemek istiyorum After=network.targetaltında [Unit]ve içinde piton dosyasını koymak /usr/local/binbaşına unix.stackexchange.com/questions/8656/...
meffect

5

Ayrıca yaparak daemon olarak da çalışabilirsiniz daemon $HOME/.dropbox-dist/dropboxd.

Bu, -n/--namebayrak ek olarak iletirseniz, daemon --[running|restart|stop] -n <name>işlemi kontrol etmek için kullanabileceğiniz avantajına sahiptir .

Belki bir başkası daemon'ların daemonbaşlangıçta kaçmaya başlamaya başlamasının en iyi yolunu arayabilir ...



3

Buraya bir göz atın:

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

Bahsedilen bir kullanıcı:

Sadece bahsettiğimi düşündüm:

(a) en son dağıtımlar bunu oldukça açık hale getirmiş gibi görünmektedir, sadece dropbox startkomut satırından çalıştırın , BUT (b) X11 iletilirken giriş ve çıkış yapmaya dikkat edin.

Çeşitli makinelere bağlanmak için pek çok Bash takma adı oluşturdum ve hepsinde -XX11 paketlerini iletme seçeneği de mevcut. Bu nedenle, Dropbox oturumu kapattığımda ölümü sürdürdü, hatta altında screenve altında çalışıyor nohup. Görünüşe göre, X11'in iletilmesi, Dropbox'ın uzak makineden ziyade yerel makineme dbus işlemini bağlamasına neden oluyordu; bu yüzden, bağlantıyı kestiğimde, Dropbox dbus'ı sonlandırılmış olarak görüyordu ve bu yüzden kendisini sonlandırıyordu.

Sadece FYI, bu beni biraz şaşırttı. Anahtar ise basına sahip olmasıydı Ctrl- Chatta / çıkış işlemini çalıştırdıktan sonra exit uzak makinede. Görünüşe göre SSH, oturumu açık tutuyordu, buna rağmen Bash'ten çıkmış olmama rağmen kalan açık bağlantı yüzünden.

Çözüm bir (bazı nedenlerden dolayı) şununla devam etmek istese bile: basittir -X: Dropbox'ı başlatmadan önce yönlendirmeyi "kırmanız" gerekir; örneğin:

$ unset DISPLAY

Eğer bir Bash betiğinde yapılırsa, yönlendirme sadece betiğin içinde "bozulur" fakat bu bir kez çalıştırıldıktan sonra 'terminal' hala iletiliyor.


3

İşte Linux dağıtımları için Upstart 1.4 ve daha üstünü kullanan çözümüm.

Aşağıdaki içerikleri /etc/init, örneğin altındaki bir yapılandırma dosyasına kaydedin /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

Daemon'u yeniden başlatmadan başlatmak için:

sudo start db_user

NOT: Setgid satırını açarak, setgid bayrağını .dropbox.cacheinternetteki diğer kaynaklar tarafından belirtildiği şekilde klasöre ayarlamak gerekli değildir .


2

Kullanabilirsiniz screen:

screen -dmS ~/.dropbox-dist/dropboxd

Bu bir daemon olarak ve ayrılmış modda başlayacaktır.

Daha sonra o hizmet olarak bu şekilde çalıştırmak zorunda ve sonra bir satır eklemek için Kendi init.d senaryo yazmaya olurdu #!/bin/bashiçin chkconfiggerekli çalışma seviyelerini gibi 2, 3, 4, 5. Farklı dağılımları farklı çalışma seviyeleri var eklemek bunu kontrol etmek zorundasın.


1

Bunu buradainit.d açıklananlara eklemek için oldukça iyi bir yol var . Hangi kullanıcıların Dropbox'ın init betiğine başlamasını istediğinizi eklemeniz gerekir (yeterince kolay) ve sistem önyüklendiğinde, bu kullanıcıların her biri için Dropbox arka planını başlatır.

Unutulmaması gereken tek şey, DAEMON=.dropbox-dist/dropboxhangisinin yanlış olduğuna inandıklarıdır. Yazar dbunun sonunda unutmuş - olması gerektiği gibi DAEMON=.dropbox-dist/dropboxd.


1

Tüm Linux dağıtımları için faydalı olmayabilir, ancak CentOS 7'de Uygulamalar / Sistem Araçları / menüsünden, ' Başlangıç ​​Uygulamaları'nı açın . Ardından Ekle'ye tıklayın ve bu komutu girin:

/home/username/.dropbox-dist/dropboxd

veya

/home/.dropbox-dist/dropboxd

görüntü tanımını buraya girin


@roaima, kararın için teşekkürler. Başka hangi çözüm? Az önce benim için çalışan çözümü yayınladım.
Aryo Z

0

.Profile dosyamın sonuna şu satırları ekledim. Bilgisayarın önyüklemesini terminalde yapmayı tercih ediyorum. Ancak, bundan sonra X11'i başlatırsam, dropbox uygulaması sistem tepsisinde görüntülenmez.

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

Gerçekten demek istediğinizi [ $rv -eq 0](ve yapmadığınızı [ $rv -ne 0 ]) varsayarak her şeyi basitleştirebileceğinizi dropbox running && dropbox start
varsayalım



-1

Çözüm, diğer python programları gibidir:

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

-2

Bence en iyi yol / usr / bin içinde bu kodla yeni bir dosya oluşturmak:

#!/bin/bash

~/.dropbox-dist/dropboxd

kaydedin ve "dropbox" olarak adlandırın. Artık konsoldan arka planda koşabilir veya menünüzde / masaüstünüzde kısayol oluşturabilirsiniz.


2
Bu sadece ön planda çalışacağı gibi yanlıştır. dropbox &Arka plana göndermek için hala yapmanız gerekir. Ek olarak, terminal bağlantısı sona ererse, Hangup sinyali işlemi sonlandırır.
sparticvs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.