Tmux と encryptfs が再接続時に「(到達不能)」ディレクトリを引き起こす

Tmux と encryptfs が再接続時に「(到達不能)」ディレクトリを引き起こす

暗号化されたホーム ディレクトリ (encryptfs) を持つ Ubuntu 13.04 サーバーを実行しています。開発環境 (vim など) を保持する tmux セッションを開いたままにしています。切断すると、tmux セッションがデタッチされ、次に ssh 接続が切断されます。その後、再接続して tmux セッションを再接続すると、次のようなエラーが発生します。

fatal: Could not change back to '(unreachable)/*****': No such file or directory

これは多くの場合、vim (切り離されている間も開いたまま) が間違った場所に保存し、実際にはファイルをディスクに書き込まず、一時的な「到達不可能な」ディレクトリにのみ書き込むことを意味します。

もし私が走ったらパスワード' bashから(再接続してから何もしていない)適切なディレクトリを取得します/家/***/***'git status'を実行すると、上記のメッセージ(そのようなファイルはありません)が表示され、':パスワード' vim 内から、"(到達不能)/***「」。

これを一時的に修正するには、「CD 。' を他のコマンドを実行する前に実行することで、git/vim/etc が実際にディレクトリを参照できるようになります。これは非常に不便です。tmux で多くのパネル/画面を開いていることが多いため、' を実行する必要があります。CD 。' を毎回再接続するときに、それぞれに入力します。さらに、切断する前に vim やその他のプログラムが閉じられていることを確認する必要があります。そうしないと、注意しないとデータが失われる可能性があります。

どこかで、encryptfsのマウント解除が原因だとする別のスレッドを見ました$ホームログアウト時に応答がありませんでした。これが原因の可能性があるようですが、どこから始めたらよいかわかりません。何か助けはありますか?

答え1

ログアウト時にecryptfsで保護されたホームディレクトリがアンマウントされなければ十分であれば、~/.ecryptfs/auto-umountを削除すれば、ログアウト時にアンマウントされなくなります(これは私が行っていることです、debian wheezy)。askubuntuのこのスレッドほぼ同じことですが、提示されたスクリプトは機能しません。機能する修正バージョンを以下に示します。

#!/bin/bash

if tmux ls 2>&1 >/dev/null; then
  # tmux is still running, do not auto-unmount
  rm $HOME/.ecryptfs/auto-umount
else
  # no tmux server, auto-unmount is OK.
  touch $HOME/.ecryptfs/auto-umount
fi

そのスレッドで述べたように、ログアウト スクリプトの一部として実行することができます。

残念ながら、アンマウントして、tmux のアタッチ時にすべてのアプリケーションを自動的に cd できるようにする良い方法はありません。それが必要なら、アプリケーションを通常の場所に置いている場合、またはそのウィンドウまたはパネルで実行されているアプリケーションを正確に検出する健全な方法がある場合は、各ウィンドウとパネルにコマンドを発行する tmux キー マクロを検討してください。私は個人的にはそれを理解できませんでした。

関連情報