私はUbuntuボックスでDropboxを使用しており、Dropboxフォルダーは/ etc/fstabのエントリを介してマウントされたドライブに存在します。再起動するたびに、少し煩わしいことがあります。ログインすると、Dropboxフォルダがないというメッセージが表示されます。ただし、実際にログインした時点では、ブートプロセスでマウントがすぐに完了したため、フォルダーは既に存在しています。
プロンプトを終了してからドロップボックスを再起動するだけで、問題は発生しません。
だから、私の質問は-ドロップボックスランチャーに保留中のすべての/ etc/fstabマウントが完了するのを待つようにするにはどうすればよいですか?
NFSマウントは、Ubuntuの仮想hdd(VMWare)のサーバーに使用されるサーバーと同じサーバー上にあるため、マシンの起動と共有が存在しないという問題はほとんど発生しません。
.debパッケージではなく https://www.dropbox.com/download?plat=lnx.x86 を使用したとすると、Dropboxランチャーを待機させる方法として考えられるのはシェルスクリプトです。 。 実際には、「ファイルマネージャーにパッチを適用した」と言ったので.debパッケージを使用したと思います。とにかく、以下のスクリプトはインストール方法に関係なく動作するはずです。
私が見る限り、mountall(8)
はUbuntuで「アップスタートジョブ」として実行されます(それが何であれ)。すべてのファイルシステム(NFSを含む)がマウントされるまで実行されます。実行中か起動できるか確認できます。そのプロセスでUSR1信号を受信すると、すべてのNFSシステムがマウントされます。マウントが成功すると、mountall
は停止します。このスクリプトは、スーパーユーザーとして実行する必要があります。
#!/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のスタートアップジョブとの統合のために:
# 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; }
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)