Я использую сервер Ubuntu 13.04 с зашифрованным домашним каталогом (encryptfs). Я держу открытым сеанс tmux, в котором находится моя среда разработки (vim и т. д.). Когда я отключаюсь, я отключаю сеанс 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
Как упоминалось в этой теме, вы можете сделать так, чтобы он выполнялся как часть вашего скрипта выхода из системы.
К сожалению, нет хорошего способа разрешить ему отмонтироваться и автоматически присоединить все ваши приложения к cd на tmux. Если это необходимо, вы можете рассмотреть макрос tmux key для выдачи команды каждому окну и панели, если вы храните свои приложения в обычных местах или у вас есть разумный способ точно определить, какое приложение запущено в этом окне или панели; я лично так и не понял этого.