我正在运行带有加密主目录(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’,我会得到上面的消息(没有这样的文件),如果我’vwd’来自vim,我得到“(无法访问)/ ***”.
对此的临时修复是运行’cd.’在运行任何其他命令之前,允许git / vim / etc实际查看目录.这非常不方便,因为我经常在tmux中打开很多面板/屏幕,我必须运行’cd’.每次我重新连接时都会在每个上面.最重要的是,我必须确保vim或其他任何东西,在我断开连接之前关闭,否则如果我不小心,我可能会丢失数据.
我看到另一个线程将其归因于在注销时卸载$HOME的encryptfs,但是没有回复.这似乎是一个可能的原因,但我不知道从哪里开始.有帮助吗?
解决方法
@H_301_15@ 如果退出时没有卸载ecryptfs受保护的主目录就足够了,你可以删除〜/ .ecryptfs / auto-umount,它会在你注销时停止卸载(这就是我所做的,debian wheezy).我发现了 this thread on 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 attach上进行cd.如果需要,您可以考虑使用tmux密钥宏向每个窗口和面板发出命令,如果您将应用程序保留在常规位置或者有一种明智的方法来准确检测该窗口或面板中正在运行的应用程序;我个人从未想过这一点.