วิธีการใช้งาน Dropbox daemon ในพื้นหลัง


38

ฉันใช้ Debian 6 และ Dropbox ฉันทำตามคำสั่งเหล่านี้เพื่อติดตั้ง

เมื่อฉันทำงาน~/.dropbox-dist/dropboxd- Dropbox ใช้งานได้หลายอย่าง ปัญหาคือเมื่อฉันปิดเทอร์มินัลหรือยิ่งแย่ลง - รีบูต Dropbox หยุดทำงานและฉันต้องเรียกใช้ภูตนั้นอีกครั้ง

ฉันจะให้คอมพิวเตอร์เริ่ม daemon นั้นโดยอัตโนมัติในพื้นหลังได้อย่างไร


คุณลองใช้สคริปต์ python ที่ลิงค์ด้านล่างบนเว็บไซต์เดียวกันหรือไม่ ดูเหมือนว่าจะเป็นเป้าหมายในการควบคุมภูต (ฉันไม่สามารถเข้าถึงเครื่อง ATM ที่ใช้เดเบียนเพื่อลองด้วยตนเอง)
WhyNotHugo

คำตอบ:


51

หากคุณกำลังใช้ภูตจากบัญชีของคุณเองเริ่มต้นในเวลาบูตกับCron เรียกใช้crontab -eเพื่อแก้ไขไฟล์crontabของคุณและเพิ่มบรรทัด

@reboot ~/.dropbox-dist/dropboxd

ขณะนี้จะใช้งานได้ แต่เป็นการดีที่สุดที่จะสร้างสคริปต์บริการภายใน/etc/init.d/การใช้สคริปต์โครงกระดูกที่อยู่ภายใน จากนั้นคุณสามารถเพิ่มลงในservice dropbox startcron เมื่อรีบูตและยังคงมีความสามารถในการหยุดบริการและรีสตาร์ทได้
sparticvs

@sparticvs - ดรอปบ็อกซ์จะไม่ทำงานเหมือนรูทหากคุณใส่ไว้ใน init.d? dropbox สามารถกำหนดค่าให้ทำงานต่อผู้ใช้พื้นฐาน Dropbox สามารถแชร์ระหว่างผู้ใช้ที่ใช้บัญชีดรอปบ็อกซ์ต่างกันได้หรือไม่
ลอร์ดโลห์

@LordLoh จุดดี. อย่างไรก็ตามคุณสามารถเปลี่ยนเป็นคนที่คุณต้องการเรียกใช้เป็น ฉันหาทรัพยากรนี้แล้ว ดูใหม่
sparticvs

1
@LordLoh @splicvs ฉันคิดว่ามีวิธีแก้ปัญหาการinit.dทำงานเป็นปัญหาราก ฉันโพสต์คำตอบของฉันเอง แต่โซลูชันที่pixeldust.wikidot.com/linode-setup%3adropboxดูเหมือนว่าจะทำงานได้ดี
Zac

13

รันคำสั่งด้วยวิธีนี้:

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

สิ่งนี้จะแยกกระบวนการออกจากเทอร์มินัลจริงและวางไว้ในพื้นหลังจริง

คุณจะต้องเริ่มต้นการสำรองข้อมูลด้วยตนเองหลังจากรีบูต


11

นี่คือทางออกของฉัน นี่คือ Debian 8

ติดตั้ง Dropbox ตามคำแนะนำมาตรฐาน จนถึงตอนนี้ฉันมีผู้ใช้เพียงคนเดียวที่เชื่อมต่อกันฉันไม่รู้ว่าจะทำงานกับผู้ใช้หลายคนได้หรือไม่เนื่องจากดรอปบ็อกซ์ดูเหมือนว่าจะลงทะเบียนเครื่องและไม่ใช่บัญชีผู้ใช้ linux หากคุณรู้วิธีรับบัญชีผู้ใช้หลายบัญชีในเซิร์ฟเวอร์เดียวทำงานแจ้งให้เราทราบ

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

จากนั้นติดตั้งคำสั่งสคริปต์ควบคุม python แต่วางไว้ใน / usr / bin และไม่ใช่ bin ของโฮมไดเรกทอรีของคุณ

สร้างไฟล์ /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

เปิดใช้งานบริการสำหรับผู้ใช้ fred:

$ sudo systemctl enable dropbox@fred.service

จากนั้นเริ่มบริการ:

$ sudo systemctl start dropbox@fred.service

ฉันชอบคำตอบของคุณแค่สองสามสิ่งที่ฉันเปลี่ยน ฉันจะเพิ่มข้างAfter=network.targetล่าง[Unit]และใส่ไฟล์ไพธ อน/usr/local/binต่อunix.stackexchange.com/questions/8656/…
meffect

5

daemon $HOME/.dropbox-dist/dropboxdนอกจากนี้คุณยังสามารถใช้เป็นภูตด้วยการทำ

นี่เป็นข้อดีที่ถ้าคุณผ่านการ-n/--nameตั้งค่าสถานะเพิ่มเติมคุณสามารถใช้daemon --[running|restart|stop] -n <name>เพื่อควบคุมกระบวนการ

บางทีคนอื่น ๆ ก็สามารถรู้วิธีที่ดีที่สุดในการทำให้ daemons เริ่มต้นdaemonทำงานเมื่อเริ่มต้น ...


3

คุณสามารถค้นหาสคริปต์ Debian และ Ubuntu init.dเพียงคัดลอกไปยัง /etc/init.d/dropbox และปรับแต่งด้วยชื่อผู้ใช้

chkconfig --add dropboxเปิดใช้งานในเดเบียนด้วย จากนั้นเรียกใช้เป็นบริการอื่น ๆ


3

ดูที่นี่:

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

ผู้ใช้ที่กล่าวถึง:

แค่คิดว่าฉันจะพูดถึง:

(a) ดิสทริบิวชันล่าสุดดูเหมือนจะทำให้ตรงไปตรงมานี้เพียงแค่เรียกใช้dropbox startจากบรรทัดคำสั่ง BUT (b) ระวังการล็อกอินและออกด้วย X11 ที่ส่งต่อ

ฉันได้ตั้งชื่อแทน Bash เป็นจำนวนมากสำหรับการเชื่อมต่อกับเครื่องต่างๆและพวกเขาทั้งหมดมี-Xตัวเลือกในการส่งต่อแพ็คเก็ต X11 ด้วยเหตุนี้ Dropbox เก็บไว้ตายบนออกจากระบบของฉันแม้ทำงานภายใต้ และscreen nohupเห็นได้ชัดว่าการส่งต่อ X11 นั้นเป็นสาเหตุให้ Dropbox เชื่อมต่อกระบวนการ dbus บนเครื่องท้องถิ่นของฉันมากกว่าที่จะใช้กับเครื่องระยะไกล ดังนั้นเมื่อฉันขาดการเชื่อมต่อ Dropbox จึงเห็นว่า dbus เลิกใช้แล้วดังนั้นจึงถูกยกเลิกตัวเอง

เพียงแค่ FYI เพราะนี่ทำให้ฉันงุนงงเล็กน้อย กุญแจสำคัญคือฉันต้องกดCtrl- Cแม้หลังจากออกจากระบบ / เรียกใช้exit บนเครื่องระยะไกล เห็นได้ชัดว่า SSH ยังคงเปิดเซสชันอยู่แม้ว่าฉันจะออกจาก Bash แล้วเนื่องจากการเชื่อมต่อที่เหลือเปิดอยู่

วิธีแก้ปัญหานั้นง่ายแม้ว่าหนึ่ง (ด้วยเหตุผลบางอย่าง) ต้องการเก็บ ssh-ing ไว้กับ-X: ก่อนที่จะเปิดตัว Dropbox คุณควร "หยุด" ตัวอย่างเช่น:

$ unset DISPLAY

หากสิ่งนี้ทำในสคริปต์ Bash การส่งต่อจะ "เสียหาย" ภายในสคริปต์ แต่เมื่อดำเนินการแล้ว 'เทอร์มินัล' ยังคงส่งต่ออยู่


3

นี่คือโซลูชันของฉันสำหรับลีนุกซ์ลีนุกซ์ที่ใช้ Upstart 1.4 ขึ้นไป.

บันทึกเนื้อหาด้านล่างลงในไฟล์การกำหนดค่าภายใต้/etc/initตัวอย่างเช่น/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 โดยไม่ต้องเริ่มระบบใหม่:

sudo start db_user

หมายเหตุ:โดยการยกเลิกหมายเหตุบรรทัด setgid ไม่จำเป็นต้องตั้งค่าสถานะ setgid ใน.dropbox.cacheโฟลเดอร์ตามที่ระบุโดยแหล่งอื่น ๆ บนอินเทอร์เน็ต


2

คุณสามารถใช้screen:

screen -dmS ~/.dropbox-dist/dropboxd

สิ่งนี้จะเริ่มเป็น daemon และในโหมดเดี่ยว

คุณก็จะมีการเขียนสคริปต์ init.d ของคุณเองที่จะมีมันทำงานเป็นบริการด้วยวิธีนี้และเพิ่มบรรทัดหลังจาก#!/bin/bashสำหรับchkconfigและเพิ่มระดับความจำเป็นการทำงานเช่น 2, 3, 4, 5 แจกแจงที่แตกต่างกันมีระดับการทำงานแตกต่างกันดังนั้น คุณต้องตรวจสอบสิ่งนี้


1

มีวิธีการที่ดีอย่างเป็นธรรมเพื่อเพิ่มรายการนี้จะเป็นinit.dที่อธิบายไว้ที่นี่ คุณต้องเพิ่มผู้ใช้ที่คุณต้องการให้ Dropbox เริ่มต้นสำหรับสคริปต์เริ่มต้น (ง่ายพอ) และเมื่อระบบบู๊ตระบบจะเริ่มต้น Dropbox daemon สำหรับผู้ใช้แต่ละคน

สิ่งเดียวที่ควรทราบคือพวกเขาระบุว่าDAEMON=.dropbox-dist/dropboxฉันเชื่อว่าไม่ถูกต้อง ผู้เขียนลืมdในตอนท้ายของว่า - DAEMON=.dropbox-dist/dropboxdมันควรจะเป็น


1

อาจไม่มีประโยชน์สำหรับ Linux distros ทั้งหมด แต่ใน CentOS 7 จากApplications / System Tools /เมนูให้เปิด ' Startup Applications ' จากนั้นคลิกเพิ่มและป้อนคำสั่งนี้:

/home/username/.dropbox-dist/dropboxd

หรือ

/home/.dropbox-dist/dropboxd

ป้อนคำอธิบายรูปภาพที่นี่


@roaima ขอบคุณสำหรับการตัดสินของคุณ โซลูชันอื่นใด ฉันเพิ่งโพสต์โซลูชันที่ใช้งานได้สำหรับฉัน
Aryo Z

0

ฉันเพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์. profile ของฉัน ฉันชอบที่จะให้คอมพิวเตอร์บูตที่เทอร์มินัล อย่างไรก็ตามถ้าฉันเริ่ม X11 หลังจากนี้แอปเพล็ตดรอปบ็อกซ์จะไม่ปรากฏบนซิสเต็มเทรย์

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

สมมติว่าคุณทำจริงๆหมายความว่า[ $rv -eq 0](และไม่[ $rv -ne 0 ]) คุณสามารถลดความซับซ้อนทั้งหมดที่มีdropbox running && dropbox start
roaima

0

ไซต์นี้ดูเหมือนจะมีข้อมูลที่ครบถ้วนเกี่ยวกับวิธีการติดตั้งและกำหนดค่าดรอปบ็อกซ์บน Linux รวมถึงการดาวน์โหลดและติดตั้ง CLI การสร้างซอฟต์ลิงก์นอกดรอปบ็อกซ์และการเรียกใช้ดรอปบ็อกซ์เป็น daemon หลังให้สคริปต์ init.d ที่จะช่วยให้dropboxdการควบคุมได้ด้วยและservicechkconfig

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




-2

ฉันคิดว่าวิธีที่ดีที่สุดคือการสร้างไฟล์ใหม่ใน / usr / bin ด้วยรหัสนี้:

#!/bin/bash

~/.dropbox-dist/dropboxd

บันทึกและตั้งชื่อว่า "dropbox" ตอนนี้คุณสามารถเรียกใช้จากคอนโซลในพื้นหลังหรือสร้างทางลัดในเมนู / เดสก์ท็อปของคุณ


2
สิ่งนี้ไม่ถูกต้องเนื่องจากจะทำงานในเบื้องหน้า คุณยังต้องทำdropbox &เพื่อส่งไปที่พื้นหลัง นอกจากนี้หากการเชื่อมต่อเทอร์มินัลสิ้นสุดลงสัญญาณ Hangup จะฆ่ากระบวนการ
sparticvs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.