Как запустить Dropbox в фоновом режиме?

38

Я использую Debian 6 и Dropbox. Я следовал этим командам, чтобы установить его.

Когда я бегу ~/.dropbox-dist/dropboxd- Dropbox работает и все такое. Проблема в том, что когда я закрываю терминал или, что еще хуже, перезагружаюсь, Dropbox перестает работать, и мне нужно снова запустить этот демон.

Как я могу заставить компьютер автоматически запускать этого демона в фоновом режиме?

daGrevis
источник
Вы пробовали скрипт python, указанный ниже на этом же сайте? Кажется, он нацелен на управление демоном. (У меня нет доступа к банкомату на базе Debian, чтобы попробовать сам).
WhyNotHugo
Возможно nohup? unix.stackexchange.com/questions/56495/…
njsg

Ответы:

51

Если вы запускаете демон из своей учетной записи, запустите его во время загрузки с помощью Cron . Запустите, crontab -eчтобы отредактировать ваш файл crontab и добавить строку

@reboot ~/.dropbox-dist/dropboxd
Жиль "ТАК - прекрати быть злым"
источник
Хотя это будет работать, в идеале было бы лучше создать сценарий службы, /etc/init.d/используя сценарий скелета, который содержится внутри. Затем вы можете добавить service dropbox startcron при перезагрузке и при этом иметь возможность остановить службу и перезапустить ее.
sparticvs
@sparticvs - Dropbox не будет работать как root, если вы поместите его в init.d? Dropbox может быть настроен для запуска для каждого пользователя. Можно ли разделить dropboxd между пользователями, использующими разные учетные записи dropbox?
Лорд Ло.
@LordLoh. хорошая точка зрения. Однако вы можете изменить на того, кем вы хотите работать. Я нашел этот ресурс. Выглядит новым
sparticvs
1
@LordLoh. @sparticvs Я думаю, что есть решение проблемы init.dзапуска с правами root. Я отправил свой собственный ответ, но решение на pixeldust.wikidot.com/linode-setup%3adropbox, похоже, работает хорошо.
Зак
13

запустите команду следующим образом:

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

это отсоединит процесс от реального терминала и поместит его в реальный фон.

Вам все равно придется запустить его вручную после перезагрузки.

Mutek
источник
11

Вот мое решение. Это на Debian 8.

Установите Dropbox в соответствии со стандартными инструкциями. Пока у меня только один подключенный пользователь, я не знаю, будет ли это работать с несколькими пользователями, так как Dropbox, кажется, регистрирует машину, а не учетную запись пользователя Linux. Если вы знаете, как заставить работать несколько учетных записей пользователей на одном сервере, сообщите нам.

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

Затем установите инструкции сценария управления питоном, но поместите его в / 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
pointer2null
источник
Мне нравится твой ответ, просто пара вещей, которые я меняю. Я хотел бы добавить 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>для управления процессом.

Возможно, кто-то еще может подсказать, как лучше всего запустить демоны daemonдля запуска при запуске ...

metasoarous
источник
3

Вы можете найти сценарии Debian и Ubuntu init.d , просто скопируйте их в /etc/init.d/dropbox и настройте под именем пользователя.

Включить в Debian с помощью chkconfig --add dropbox. Затем запустите как любой другой сервис.

csanchez
источник
3

Посмотрите здесь:

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

Пользователь упомянул:

Просто подумал, что упомяну:

(a) последние дистрибутивы, кажется, делают это довольно простым, просто запускаются dropbox startиз командной строки, НО (b) следите за входом и выходом с переадресованным X11.

Я установил много псевдонимов Bash для подключения к различным машинам, и все они включают -Xопцию пересылки пакетов X11. Из-за этого Dropbox продолжал умирать на моем при выходе из системы, даже запуская его под screenи с nohup. Очевидно, что пересылка X11 заставляла Dropbox подключать процесс dbus на моем локальном компьютере, а не на удаленном компьютере; поэтому, когда я разорвал соединение, Dropbox увидел, что dbus завершил работу и, таким образом, завершил сам себя.

Просто к вашему сведению, так как это немного озадачило меня. Ключ был в том, что мне приходилось нажимать Ctrl- Cдаже после выхода из системы / запуска exit на удаленной машине. Очевидно, SSH оставлял сеанс открытым, хотя я и вышел из Bash из-за оставшегося открытого соединения.

Решение простое, даже если кто-то (по какой-то причине) хочет продолжить работу с -X:: перед запуском Dropbox вы должны «прервать» переадресацию, например, выполнив:

$ unset DISPLAY

Если это делается в скрипте Bash, пересылка «прерывается» только внутри скрипта, но как только это выполняется, «терминал» все еще пересылает.

Маттео Дуранти
источник
3

Вот мое решение для дистрибутивов Linux с использованием 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

Чтобы запустить демон без перезагрузки:

sudo start db_user

ПРИМЕЧАНИЕ. Раскомментируя строку setgid, нет необходимости устанавливать флаг setgid для .dropbox.cacheпапки, как указано другими источниками в Интернете.

Alain
источник
2

Вы можете использовать screen:

screen -dmS ~/.dropbox-dist/dropboxd

Это запустит его как демон и в отдельном режиме.

Затем вам придется написать свой собственный скрипт init.d, чтобы он выполнялся таким образом, как сервис, и добавить строку после #!/bin/bashfor chkconfigи добавить необходимые уровни запуска, такие как 2, 3, 4, 5. Разные дистрибутивы имеют разные уровни запуска, поэтому Вы должны проверить это.

Брайан
источник
1

Есть довольно хороший способ добавить это к init.dописанному здесь . Вы должны добавить, для каких пользователей вы хотите, чтобы Dropbox запускался, в скрипт инициализации (достаточно просто), и при загрузке системы он запускает демон Dropbox для каждого из этих пользователей.

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

Zac
источник
1

Это может быть полезно не для всех дистрибутивов Linux, но в CentOS 7 в меню Приложения / Системные инструменты / откройте « Запуск приложений ». Затем нажмите «Добавить» и введите эту команду:

/home/username/.dropbox-dist/dropboxd

или

/home/.dropbox-dist/dropboxd

введите описание изображения здесь

Aryo Z
источник
@roaima спасибо за ваше мнение. Какое другое решение? Я только что опубликовал решение, которое работает для меня.
Aryo Z
0

Я добавил следующие строки в конец моего файла .profile. Я предпочитаю, чтобы компьютер загружался на терминале. Однако, если я запустил X11 после этого, апплет dropbox не отобразится в системном трее.

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

MidnightJava
источник
-1

Решение, как и другие программы на Python:

shell$ nohup ~/.dropbox-dist/dropboxd & 
ivo_stefanoff
источник
-2

Я думаю, что лучший способ - создать новый файл в / usr / bin с этим кодом:

#!/bin/bash

~/.dropbox-dist/dropboxd

сохраните и назовите его «dropbox». Теперь вы можете запустить из консоли в фоновом режиме или создать ярлык в вашем меню / на рабочем столе

Azihak
источник
2
Это неверно, так как это будет просто работать на переднем плане. Вам все равно придется сделать это, dropbox &чтобы отправить его на задний план. Кроме того, если соединение с терминалом завершено, сигнал Hangup завершит процесс.
sparticvs