Bagaimana cara menjalankan daemon Dropbox di latar belakang?

38

Saya menggunakan Debian 6 dan Dropbox. Saya mengikuti perintah ini untuk menginstalnya.

Ketika saya menjalankan ~/.dropbox-dist/dropboxd- Dropbox berfungsi dan semacamnya. Masalahnya adalah ketika saya menutup terminal atau, lebih buruk lagi - reboot, Dropbox berhenti bekerja dan saya perlu menjalankan daemon itu lagi.

Bagaimana saya dapat memiliki komputer secara otomatis memulai daemon di latar belakang?

daGrevis
sumber
Sudahkah Anda mencoba skrip python yang ditautkan di bawah di situs web yang sama? Tampaknya ditargetkan untuk mengendalikan daemon. (Saya tidak memiliki akses ke mesin ATM berbasis debian untuk mencobanya sendiri).
WhyNotHugo

Jawaban:

51

Jika Anda menjalankan daemon dari akun Anda sendiri, mulailah saat boot dengan Cron . Jalankan crontab -euntuk mengedit file crontab Anda dan tambahkan baris

@reboot ~/.dropbox-dist/dropboxd
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Meskipun ini akan berhasil, idealnya akan lebih baik untuk membuat skrip layanan dalam /etc/init.d/memanfaatkan skrip kerangka yang terkandung di dalamnya. Anda kemudian dapat menambahkan service dropbox startke cron saat reboot dan masih memiliki kemampuan untuk menghentikan layanan dan me-restart itu.
sparticvs
@sparticvs - Apakah dropbox tidak akan berjalan sebagai root jika Anda memasukkannya ke init.d? dropbox dapat dikonfigurasikan untuk dijalankan per basis pengguna. Bisakah dropboxd dibagikan antara pengguna menggunakan akun dropbox yang berbeda?
Tuan Loh.
@ LordLoh. poin yang bagus. Namun Anda dapat mengubah siapa yang ingin Anda jalankan. Saya menemukan sumber ini . Terlihat baru.
sparticvs
1
@ LordLoh. @ sparticvs Saya pikir ada solusi untuk init.dmenjalankan sebagai masalah root. Saya memposting jawaban saya sendiri, tetapi solusi di pixeldust.wikidot.com/linode-setup%3adropbox tampaknya bekerja dengan baik.
Zac
13

jalankan perintah dengan cara ini:

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

ini akan melepaskan proses dari terminal aktual dan meletakkannya di latar belakang nyata.

Anda masih harus memulai kembali secara manual setelah reboot.

mutek
sumber
11

Ini solusinya. Ini ada di Debian 8.

Instal Dropbox sesuai instruksi standar. Sejauh ini, saya hanya punya satu pengguna yang terhubung, saya tidak tahu apakah ini akan berfungsi dengan banyak pengguna karena dropbox tampaknya mendaftarkan mesin dan bukan akun pengguna linux. Jika Anda tahu cara mendapatkan beberapa akun pengguna di satu server yang berfungsi, beri tahu kami.

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

Kemudian instal instruksi skrip kontrol python tetapi letakkan di / usr / bin dan bukan direktori home biner Anda.

Buat file /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

Aktifkan layanan untuk fred pengguna:

$ sudo systemctl enable [email protected]

Kemudian mulai layanan:

$ sudo systemctl start [email protected]
pointer2null
sumber
Saya suka jawaban Anda, hanya beberapa hal yang saya ubah. Saya akan menambahkan di After=network.targetbawah [Unit]dan meletakkan file python di /usr/local/binper unix.stackexchange.com/questions/8656/…
meffect
5

Anda juga dapat menjalankan sebagai daemon dengan melakukan daemon $HOME/.dropbox-dist/dropboxd.

Ini memiliki keuntungan bahwa jika Anda juga melewati -n/--nameflag, Anda dapat menggunakannya daemon --[running|restart|stop] -n <name>untuk mengontrol proses.

Mungkin orang lain bisa memanfaatkan cara terbaik untuk mendapatkan daemon yang mulai digunakan daemonuntuk dijalankan saat startup ...

metasoarous
sumber
3

Anda dapat menemukan skrip init.d Debian dan Ubuntu , cukup salin ke /etc/init.d/dropbox dan sesuaikan dengan nama pengguna.

Aktifkan dalam debian dengan chkconfig --add dropbox. Kemudian jalankan sebagai layanan lainnya.

csanchez
sumber
3

Lihat di sini:

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

Seorang pengguna menyebutkan:

Hanya berpikir saya akan menyebutkan:

(a) distribusi terbaru tampaknya membuat jalan ini cukup langsung, jalankan saja dropbox startdari baris perintah, TAPI (b) hati-hati karena masuk dan keluar dengan X11 diteruskan.

Saya telah menyiapkan banyak alias Bash untuk menghubungkan ke berbagai mesin, dan mereka semua menyertakan -Xopsi untuk meneruskan paket X11. Karena itu, Dropbox terus sekarat di logout saya, bahkan menjalankannya di bawah screendan dengan nohup. Rupanya, meneruskan X11 menyebabkan Dropbox menghubungkan proses dbus pada mesin lokal saya dan bukan pada mesin jarak jauh; jadi, ketika saya memutuskan koneksi, Dropbox melihat dbus telah diakhiri dan dengan demikian memutuskan sendiri.

Hanya FYI, karena ini sedikit membuatku bingung. Kuncinya adalah saya harus menekan Ctrl- Cbahkan setelah keluar / berjalan exit pada mesin jarak jauh. Rupanya, SSH menjaga sesi terbuka, meskipun saya telah keluar dari Bash, karena koneksi terbuka yang tersisa.

Solusinya sederhana bahkan jika satu (karena alasan tertentu) ingin tetap ssh-ing dengan -X: sebelum meluncurkan Dropbox Anda harus "memecah" penerusan misalnya melakukan:

$ unset DISPLAY

Jika ini dilakukan dalam skrip Bash, penerusan "rusak" tepat di dalam skrip tetapi setelah ini dieksekusi 'terminal' masih meneruskan.

Matteo Duranti
sumber
3

Inilah solusi saya untuk distribusi Linux menggunakan Upstart 1.4 dan lebih tinggi.

Simpan konten di bawah ini ke file konfigurasi di bawah /etc/init, misalnya /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

Untuk memulai daemon tanpa me-reboot:

sudo start db_user

CATATAN: Dengan menghapus komentar pada baris setgid, bendera setgid tidak perlu ditetapkan pada .dropbox.cachefolder seperti yang ditunjukkan oleh sumber lain di internet.

Alain
sumber
2

Anda bisa menggunakan screen:

screen -dmS ~/.dropbox-dist/dropboxd

Ini akan memulainya sebagai daemon dan dalam mode terpisah.

Anda kemudian harus menulis skrip init.d Anda sendiri untuk menjalankannya sebagai layanan dengan cara ini dan menambahkan baris setelah #!/bin/bashuntuk chkconfigdan menambahkan level run yang diperlukan, seperti 2, 3, 4, 5. Distribusi yang berbeda memiliki level run yang berbeda sehingga Anda harus memeriksa ini.

Brian
sumber
1

Ada cara yang cukup bagus untuk menambahkan ini ke init.ddijelaskan di sini . Anda harus menambahkan pengguna mana yang Anda inginkan untuk memulai Dropbox ke skrip init (cukup mudah), dan ketika sistem melakukan boot, ia akan memulai daemon Dropbox untuk masing-masing pengguna tersebut.

Satu-satunya hal yang perlu diperhatikan adalah bahwa mereka menentukan DAEMON=.dropbox-dist/dropboxyang saya percaya salah. Penulis lupa dpada akhir itu - seharusnya DAEMON=.dropbox-dist/dropboxd.

Zac
sumber
1

Ini mungkin tidak berguna untuk semua distro Linux, tetapi di CentOS 7, dari menu Applications / System Tools / menu, buka ' Aplikasi Startup '. Kemudian klik Tambah, dan masukkan perintah ini:

/home/username/.dropbox-dist/dropboxd

atau

/home/.dropbox-dist/dropboxd

masukkan deskripsi gambar di sini

Aryo Z
sumber
@roaima terima kasih atas penilaian Anda. Solusi lain apa? Saya baru saja memposting solusi yang bekerja untuk saya.
Aryo Z
0

Saya menambahkan baris berikut ke akhir file profil saya. Saya lebih suka boot komputer di terminal. Namun, jika saya mulai X11 setelah ini, applet dropbox tidak ditampilkan pada baki sistem.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi
Tuan Loh.
sumber
Dengan asumsi Anda benar-benar berarti [ $rv -eq 0](dan tidak [ $rv -ne 0 ]), Anda bisa menyederhanakan semua itu dengandropbox running && dropbox start
roaima
0

Situs ini tampaknya memiliki informasi lengkap tentang cara menginstal dan mengkonfigurasi dropbox di Linux, termasuk mengunduh dan menginstal CLI, membuat tautan lunak di luar dropbox, dan menjalankan dropbox sebagai daemon. Yang terakhir menyediakan skrip init.d yang akan memungkinkandropboxd untuk dikontrol dengan servicedan chkconfig.

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

MidnightJava
sumber
-1

Solusinya adalah seperti program python lainnya:

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

Saya pikir cara terbaik adalah membuat file baru di / usr / bin dengan kode ini:

#!/bin/bash

~/.dropbox-dist/dropboxd

simpan dan beri nama "dropbox". Sekarang Anda dapat menjalankan dari konsol di latar belakang atau membuat pintasan di menu / desktop Anda

Azihak
sumber
2
Ini tidak benar karena hanya akan berjalan di latar depan. Anda harus tetap melakukannya dropbox &untuk mengirimnya ke latar belakang. Selain itu jika koneksi terminal berakhir, maka sinyal Hangup akan mematikan proses.
sparticvs