如何在后台运行Dropbox守护程序?


38

我正在使用Debian 6和Dropbox。我按照以下命令进行安装。

当我运行时~/.dropbox-dist/dropboxd-Dropbox可以正常工作。问题是,当我关闭终端,或更糟糕的是,重新启动时,Dropbox停止工作,我需要再次运行该守护程序。

我如何让计算机在后台自动启动该守护程序?


您是否尝试过在同一网站上链接下面的python脚本?它似乎旨在控制守护程序。(尽管我自己无法使用基于Debian的机器ATM进行尝试)。
WhyNotHugo 2012年

Answers:


51

如果您使用自己的帐户运行守护程序,请在启动时使用Cron启动它。运行crontab -e以编辑您的crontab文件并添加行

@reboot ~/.dropbox-dist/dropboxd

尽管这将起作用,但理想情况下,最好是/etc/init.d/利用其中包含的框架脚本来创建服务脚本。然后,您可以service dropbox start在重新启动时将Cron 添加到cron中,并且仍然能够停止服务并重新启动它。
sparticvs 2013年

@sparticvs-如果将dropbox放在init.d中,它将不会以root身份运行吗?可以将Dropbox配置为按用户运行。可以使用不同的保管箱帐户在用户之间共享保管箱吗?
卢勋爵。

@LordLoh。好点子。但是,您可以更改为要作为谁运行。我确实找到了这个资源。看起来很新。
sparticvs

1
@LordLoh。@sparticvs我认为init.d以root 身份运行有解决方案。我发布了自己的答案,但是该解决方案在pixeldust.wikidot.com/linode-setup%3adropbox中似乎很好用。
扎克2014年

13

以这种方式运行命令:

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

这将使该过程脱离实际终端,并将其置于实际背景下。

不过,重新启动后,您仍然必须手动启动它以进行备份。


11

这是我的解决方案。这是在Debian 8上。

按照标准说明安装Dropbox。到目前为止,我只连接了一个用户,我不知道这是否可以与多个用户一起使用,因为Dropbox似乎是在注册计算机,而不是Linux用户帐户。如果您知道如何在一台服务器上运行多个用户帐户,请告诉我们。

https://www.dropbox.com/zh_CN/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]python文件,并将其放在/usr/local/bin每个unix.stackexchange.com/questions/8656/…中
效果是

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

一位用户提到:

只是以为我会提到:

(a)最新的发行版似乎很简单,只需从命令行运行dropbox start,但(b)注意在转发X11的情况下进行登录和注销。

我已经设置了许多Bash别名以连接到各种计算机,并且它们都包含-X转发X11数据包的选项。因此,Dropbox在注销时一直死于我,甚至在screen和下运行它 也是如此nohup。显然,转发X11导致Dropbox在我的本地计算机而不是远程计算机上连接dbus进程。因此,当我断开连接时,Dropbox认为dbus已终止,因此终止了自身。

仅供参考,这让我感到难过。关键是我必须按下Ctrl- C即使在注销/ exit 在远程计算机上运行后也是如此。显然,即使我退出了Bash,SSH仍使会话保持打开状态,因为仍然保持了打开的连接。

即使一个人(出于某种原因)想要继续使用ssh-ing,该解决方案也很简单-X:在启动Dropbox之前,您应该“中断”转发,例如:

$ unset DISPLAY

如果在Bash脚本中完成此操作,则仅在脚本内部进行“中断”转发,但是一旦执行,“终端”仍在转发。


3

这是我使用Upstart 1.4及更高版本的Linux发行版的解决方案。

将以下内容保存到位于下的配置文件中/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按Internet上其他来源所示在文件夹上设置setgid标志。


2

您可以使用screen

screen -dmS ~/.dropbox-dist/dropboxd

这会将其作为守护程序并以分离模式启动。

然后,您将必须编写自己的init.d脚本,以使其以这种方式作为服务运行,并在#!/bin/bashfor 之后添加一行,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



-1

解决方案与其他python程序一样:

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

-2

我认为最好的方法是使用以下代码在/ usr / bin中创建一个新文件:

#!/bin/bash

~/.dropbox-dist/dropboxd

保存并将其命名为“ Dropbox”。现在,您可以在后台从控制台运行,也可以在菜单/桌面中创建快捷方式


2
这是不正确的,因为它只会在前台运行。您将仍然dropbox &需要将其发送到后台。此外,如果终端连接结束,则挂断信号将终止该过程。
sparticvs 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.