Tmux和encryption导致重新连接“(不可达)”目录

我正在运行带有encryption主目录(encryptfs)的Ubuntu 13.04服务器。 我打开一个tmux会话,持有我的开发环境(vim等)。 当我断开连接时,我将分离tmux会话,然后断开ssh连接。 后来,当我重新连接,并重新连接tmux会话,我会得到错误,如:

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

这通常意味着vim(在分离时仍然是打开的)保存到错误的位置,并且不会实际将文件写入到磁盘,而是仅仅到达“不可到达”目录,这似乎是暂时的。

如果我从bash运行“ pwd ”(从重新安装以来没有做其他事情),我得到正确的目录/ home / *** / *** 。 如果我运行'git status',我得到上面的消息(没有这样的文件),如果我从'vim'中input' pwd ',就会得到“ (无法访问)/ *** ”。

暂时的解决办法是运行' cd。 '之前运行任何其他命令,它允许git / vim / etc实际上看到目录。 这是非常不方便的,因为我经常在tmux中打开很多面板/屏幕,我必须运行“ cd”。 每次我重新连接时, 最重要的是,我必须确保vim或其他任何东西,在我断开连接之前closures,否则,如果我不小心,可能会丢失数据。

我看到另一个线程在某个地方,这归因于在注销时encryption卸载$ HOME ,但没有答复。 这似乎是一个可能的原因,但我不知道从哪里开始。 任何帮助?

如果您登出ecryptfs保护的主目录时没有卸载,您可以删除〜/ .ecryptfs / auto-umount,当您注销时(这是我所做的,debian wheezy)它将停止卸载。 我在askubuntu上find了关于同一事物的这个线程 ,但是提供的脚本不起作用。 这是一个修改后的版本。

 #!/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 

正如在该线程中提到的那样,您可以将其作为注销脚本的一部分执行。

不幸的是,没有一个很好的方法来允许它卸载并让所有的应用程序自动cd上tmux连接。 如果这是必需的,你可以考虑一个tmux keymacros来向每个窗口和面板发出一个命令,如果你把应用程序保存在常规位置或者有一个明智的方法来准确地检测在那个窗口或面板上运行的应用程序; 我个人从来没有想过这个。