Dropboxデーモンをバックグラウンドで実行する方法は?


38

Debian 6とDropboxを使用しています。私は、その後、これらのコマンドを、それをインストールします。

実行する~/.dropbox-dist/dropboxdと、Dropboxが動作します。問題は、ターミナルを閉じるか、さらに悪いことに再起動すると、Dropboxが動作しなくなり、そのデーモンを再度実行する必要があることです。

コンピューターがそのデーモンをバックグラウンドで自動的に起動するようにするにはどうすればよいですか?


同じWebサイトで以下にリンクされているpythonスクリプトを試しましたか?デーモンの制御を目的としているようです。(しかし、自分で試してみるためにdebianベースのマシンATMにアクセスすることはできません)。
-WhyNotHugo

回答:


51

自分のアカウントからデーモンを実行している場合は、起動時にCronを使用して起動します。実行crontab -eしてcrontabファイルを編集し、行を追加します

@reboot ~/.dropbox-dist/dropboxd

これは機能しますが、理想的に/etc/init.d/は、含まれるスケルトンスクリプトを利用してサービススクリプトを作成するのが最善です。その後service dropbox start、再起動時にcronを追加しても、サービスを停止して再起動することができます。
sparticvs

@sparticvs-init.dに配置すると、dropboxはrootとして実行されませんか?dropboxは、ユーザーごとに実行するように構成できます。異なるDropboxアカウントを使用しているユーザー間でDropboxdを共有できますか?
ローLord。

@LordLoh。いい視点ね。ただし、実行者を変更することもできます。私はこのリソースを見つけました。新しく見えます。
sparticvs

1
@LordLoh。@sparticvs init.dルートとして実行する問題には解決策があると思います。私は自分の回答を投稿しましたが、pixeldust.wikidot.com / linode-setup%3adropboxのソリューションはうまく機能しているようです。
ザック14年

13

この方法でコマンドを実行します。

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

これにより、プロセスが実際の端末から切り離され、実際のバックグラウンドに置かれます。

ただし、再起動後に手動でバックアップを開始する必要があります。


11

これが私の解決策です。これはDebian 8にあります。

標準の指示に従ってDropboxをインストールします。これまでのところ、私は1人のユーザーしか接続していませんが、DropboxがLinuxユーザーアカウントではなくマシンを登録しているように見えるので、これが複数のユーザーで機能するかどうかわかりません。1台のサーバーで複数のユーザーアカウントを取得する方法がわかっている場合はお知らせください。

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

次に、Python制御スクリプト命令をインストールしますが、ホームディレクトリbinではなく/ 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]unix.stackexchange.com/usr/local/bin / questions
meffect

5

また、デーモンとして実行することもできますdaemon $HOME/.dropbox-dist/dropboxd

これには、-n/--nameフラグを追加で渡すとdaemon --[running|restart|stop] -n <name>、プロセスの制御に使用できるという利点があります。

おそらく、他の誰かがdaemon、起動時に実行するためにデーモンを使い始めるのに最適な方法を見つけることができます...



3

こちらをご覧ください:

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

ユーザーの言及:

私が言及すると思った:

(a)最新のディストリビューションではdropbox start、コマンドラインから実行するだけで、これはかなり簡単になりますが、(b)X11を転送した状態でのログインとログアウトに注意してください。

さまざまなマシンに接続するために多くのBashエイリアスを設定しましたが、それらにはすべて-XX11パケットを転送するオプションが含まれています。このため、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ことにより、インターネット上の他のソースで示されているように、フォルダーにsetgidフラグを設定する必要はありません。


2

以下を使用できますscreen

screen -dmS ~/.dropbox-dist/dropboxd

これにより、デーモンとしてデタッチモードで起動します。

その後、独自のinit.dスクリプトを作成して、この方法でサービスとして実行し、2、3、4、5 などの必要な実行レベルの後#!/bin/bashに行chkconfigを追加して追加する必要があります。これを確認する必要があります。


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、あなたの判断に感謝します。他のソリューションはどれですか?私はちょうど私のために働いたソリューションを投稿しました。
アリョ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

このサイトには、CLIのダウンロードとインストール、Dropboxの外部でのソフトリンクの作成、Dropboxのデーモンとしての実行など、LinuxにDropboxをインストールおよび構成する方法に関する完全な情報があるようです。後者は、およびdropboxdで制御できるようにするinit.dスクリプトを提供します。servicechkconfig

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



-1

解決策は他のPythonプログラムと同じです:

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

-2

最善の方法は、次のコードを使用して/ usr / binに新しいファイルを作成することです。

#!/bin/bash

~/.dropbox-dist/dropboxd

保存して「dropbox」という名前を付けます。バックグラウンドでコンソールから実行するか、メニュー/デスクトップにショートカットを作成できるようになりました


2
フォアグラウンドで実行されるだけなので、これは正しくありません。あなたはdropbox &それをバックグラウンドに送るためにまだしなければならないでしょう。さらに、端末接続が終了すると、ハングアップ信号によりプロセスが強制終了されます。
sparticvs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.