Як запустити демона Dropbox у фоновому режимі?


38

Я використовую Debian 6 та Dropbox. Я дотримувався цих команд, щоб встановити його.

Коли я запускаю ~/.dropbox-dist/dropboxd- Dropbox працює і працює. Проблема полягає в тому, що коли я закриваю термінал або, що ще гірше - перезавантажуюсь, Dropbox перестає працювати, і мені потрібно запустити цей демон ще раз.

Як я можу змусити комп'ютер автоматично запустити цей демон у фоновому режимі?


Ви спробували сценарій python, зв'язаний нижче на тому самому веб-сайті? Здається, він орієнтований на контроль демона. (У мене немає доступу до банкоматів на базі Debian, щоб спробувати сам).
WhyNotHugo

Відповіді:


51

Якщо ви запускаєте демон зі свого власного облікового запису, запустіть його під час завантаження із Cron . Запустіть, crontab -eщоб відредагувати файл crontab та додати рядок

@reboot ~/.dropbox-dist/dropboxd

Хоча це буде працювати, в ідеалі найкраще було б створити сервісний скрипт у межах /etc/init.d/використання сценарію скелета, який міститься всередині. Потім ви можете додати service dropbox startcron при перезавантаженні і все ще мати можливість зупинити послугу та перезапустити її.
sparticvs

@sparticvs - Чи папка для запуску не працюватиме як корінь, якщо ви помістите її в init.d? dropbox може бути налаштований на запуск кожного користувача. Чи можна спільно використовувати папку, яка використовує різні облікові записи?
Лорд Лох.

@LordLoh. влучне зауваження. Однак ви можете змінити того, ким ви хочете балотуватися. Я знайшов цей ресурс. Виглядає новим.
sparticvs

1
@LordLoh. @sparticvs Я думаю, що існує рішення проблеми, що init.dпрацює як кореня. Я опублікував власну відповідь, але рішення на pixeldust.wikidot.com/linode-setup%3adropbox, здається, працює добре.
Зак

13

запустіть команду таким чином:

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

це відірве процес від фактичного терміналу і поставить його у реальний фон.

Однак вам доведеться все-таки запускати його вручну після перезавантаження.


11

Ось моє рішення. Це на Debian 8.

Встановіть Dropbox відповідно до стандартних інструкцій. Поки що у мене підключений лише один користувач, я не знаю, чи це буде працювати з декількома користувачами, оскільки, здається, в папці "box" зареєстровано машину, а не обліковий запис користувача Linux. Якщо ви знаєте, як отримати кілька облікових записів користувачів на одному сервері, повідомте про це.

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

Потім встановіть інструкції сценарію управління python, але покладіть їх у / usr / 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]і поставив файл python в /usr/local/binper unix.stackexchange.com/questions/8656/…
meffect

5

Ви також можете бігати як демон, виконуючи дії daemon $HOME/.dropbox-dist/dropboxd.

Це має ту перевагу, що якщо ви додатково передаєте -n/--nameпрапор, ви можете використовувати daemon --[running|restart|stop] -n <name>для управління процесом.

Можливо, хтось ще може чіпнути, як найкраще змусити демонів почати використовувати daemonдля запуску при запуску ...


3

Ви можете знайти сценарії Debian і Ubuntu init.d , просто скопіюйте в /etc/init.d/dropbox та налаштуйте під ім'я користувача.

Увімкнути в debian за допомогою chkconfig --add dropbox. Потім запустіть, як і будь-яку іншу службу.


3

Подивіться тут:

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

Користувач згадав:

Просто думав, що згадаю:

(а) останні дистрибуції, здається, роблять це досить просто, просто запустіть dropbox startз командного рядка, АЛЕ (б) стежте за входом у систему та виходом із перенаправленого 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

Ось моє рішення для дистрибутивів Linux із використанням версії 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

Щоб запустити демон без перезавантаження:

sudo start db_user

ПРИМІТКА: Коментуючи встановлену строку, не потрібно встановлювати прапорець setgid на .dropbox.cacheпапку, як зазначено в інших джерелах в Інтернеті.


2

Ви можете використовувати screen:

screen -dmS ~/.dropbox-dist/dropboxd

Це розпочнеться як демон і в окремому режимі.

Ви б тоді написати свій власний сценарій init.d , щоб запустити його як сервіс так і додати рядок після того, як #!/bin/bashдля chkconfigі додати необхідні рівні виконання, наприклад, 2, 3, 4, 5. Різні збірки мають різні рівні бігти так вам доведеться це перевірити.


1

Існує досить приємний спосіб додати це до init.dописаного тут . Ви повинні додати користувачів, яких ви хочете, щоб Dropbox запустився до сценарію init (досить просто), і коли система завантажиться, він запустить демон Dropbox для кожного з цих користувачів.

Єдине, що слід зазначити, це те, що вони вказують, DAEMON=.dropbox-dist/dropboxщо я вважаю неправильним. Автор забув про dкінець цього - це має бути DAEMON=.dropbox-dist/dropboxd.


1

Це може бути корисним не для всіх дистрибутивів Linux, але в CentOS 7 в меню Програми / системні інструменти / меню відкрийте « Запуск програм ». Потім натисніть кнопку Додати та введіть цю команду:

/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

Здається, цей сайт містить повну інформацію про те, як встановити та налаштувати dropbox в Linux, включаючи завантаження та встановлення CLI, створення м'яких посилань поза dropbox та запуск dropbox як демон. Останній надає скрипт init.d, який дозволить dropboxdкеруватися за допомогою serviceта chkconfig.

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




-2

Я думаю, що найкращим способом є створення нового файлу в / usr / bin з цим кодом:

#!/bin/bash

~/.dropbox-dist/dropboxd

збережіть і назвіть його "dropbox". Тепер ви можете запустити з консолі у фоновому режимі або створити ярлик у своєму меню / робочому столі


2
Це неправильно, оскільки це було б просто на передньому плані. Вам доведеться все-таки зробити, dropbox &щоб надіслати його на другий план. Крім того, якщо термінальне з'єднання закінчено, сигнал Хангуп вбиває процес.
sparticvs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.