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?


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

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.


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

Aktifkan layanan untuk fred pengguna:

$ sudo systemctl enable dropbox@fred.service

Kemudian mulai layanan:

$ sudo systemctl start dropbox@fred.service

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 ...


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.


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.


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.


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.


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.


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


@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

Dengan asumsi Anda benar-benar berarti [ $rv -eq 0](dan tidak [ $rv -ne 0 ]), Anda bisa menyederhanakan semua itu dengandropbox running && dropbox start
roaima



-1

Solusinya adalah seperti program python lainnya:

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

-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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.