web-dev-qa-db-ja.com

NFSマウントされたフォルダー上のDropbox

私はUbuntuボックスでDropboxを使用しており、Dropboxフォルダーは/ etc/fstabのエントリを介してマウントされたドライブに存在します。再起動するたびに、少し煩わしいことがあります。ログインすると、Dropboxフォルダがないというメッセージが表示されます。ただし、実際にログインした時点では、ブートプロセスでマウントがすぐに完了したため、フォルダーは既に存在しています。

プロンプトを終了してからドロップボックスを再起動するだけで、問題は発生しません。

だから、私の質問は-ドロップボックスランチャーに保留中のすべての/ etc/fstabマウントが完了するのを待つようにするにはどうすればよいですか?

NFSマウントは、Ubuntuの仮想hdd(VMWare)のサーバーに使用されるサーバーと同じサーバー上にあるため、マシンの起動と共有が存在しないという問題はほとんど発生しません。

4
petr

.debパッケージではなく https://www.dropbox.com/download?plat=lnx.x86 を使用したとすると、Dropboxランチャーを待機させる方法として考えられるのはシェルスクリプトです。 。 実際には、「ファイルマネージャーにパッチを適用した」と言ったので.debパッケージを使用したと思います。とにかく、以下のスクリプトはインストール方法に関係なく動作するはずです。

私が見る限り、mountall(8)はUbuntuで「アップスタートジョブ」として実行されます(それが何であれ)。すべてのファイルシステム(NFSを含む)がマウントされるまで実行されます。実行中か起動できるか確認できます。そのプロセスでUSR1信号を受信すると、すべてのNFSシステムがマウントされます。マウントが成功すると、mountallは停止します。このスクリプトは、スーパーユーザーとして実行する必要があります。

/ usr/local/bin/dropbox-wait-mount

#!/bin/sh
runas={$1:-root}
mpid=`pidof mountall`
if [ -z "$mpid" ] ; then
        mountall --daemon --no-events -q
        mpid=`pidof mountall`
else
        echo mountall is running, going to notify it to mount nfs shares
fi

kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
mpid=`pidof mountall`

while [ -n "$mpid" ]; do
        echo waiting for all mounts
        sleep 30
        kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
        sleep 1
        mpid=`pidof mountall`
done

echo should be safe to run dropbox now
exec su $runas -c /home/$runas/.dropbox-dist/dropboxd

マニュアルページでは、mountallの機能に依存しないようにアドバイスしていますが、「一時的な解決策」の性質を考えると、しばらくの間これを使用できると思います。

そして、Ubuntuのスタートアップジョブとの統合のために:

/etc/init/dropbox.conf

# based on ssh.conf

description     "Dropbox daemon"
env RUNAS=root # use /etc/init/dropbox.override

#start on stopped mountall-net RESULT=ok
start on remote-filesystems
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none

pre-start script
    test -x /usr/local/bin/dropbox-wait-mount || { stop; exit 0; }
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/local/bin/dropbox-wait-mount $RUNAS || { stop; exit 0; }

/etc/init/dropbox.override

env RUNAS=jaroslav

この例は、すべてのネットワークファイルシステムがマウントされた後にのみ実行する必要がありますが、手動で実行することもできます。

start dropbox #RUNAS=jaroslav

Autofsを使用してnfsをマウントする方がはるかに簡単で、オンデマンドで同期を心配する必要はありません。

これが私の設定です

$ grep home  /etc/auto.master 
/home2 /etc/auto.home

$ cat /etc/auto.home

dropbox -intr,nfsv4,soft NFS.intranet:/backups/dropbox

$ echo $HOME
/home2/dropbox

$ id
uid=1001(dropbox) gid=1001(dropbox) groups=1001(dropbox)
0
chris scott