7

Как и в заголовке, всякий раз, когда я пытаюсь запустить tmux в 64-битном Cygwin (Win7), с любыми аргументами или без них, кроме --help , я получаю следующую ошибку:

$ tmux
failed to connect to server: No error

Я не могу воспроизвести это на Linux. Любая помощь будет принята с благодарностью.

Спасибо!

5 ответов5

6

Это работает для меня тоже на 32-битной Win7. Но мне нужно каждый раз удалять каталог перед запуском tmux, поэтому я просто добавил псевдоним в .bashrc.

alias tmux='rm -rf /tmp/tmux* && tmux'
4

Метод псевдонима, предложенный bender, на самом деле не работает, если вы пытаетесь присоединить его заново, потому что он убивает существующие сеансы. Следующее, кажется, решило проблему для меня:

  1. Сохраните скрипт Perl по адресу http://pastebin.com/nN6zX37K в "~/bin/tmux" или в любом другом месте на вашем пути, перед /usr /bin.

  2. Дайте ему права на выполнение: "chmod +x ~/bin/tmux".

  3. Выйдите и снова откройте Cygwin.

  4. Запустите команды tmux нормально.

Это работает, потому что он обнаруживает состояние, в котором tmux полностью закрылся, но не удаляет свой временный каталог, который он решает, удаляя временный каталог (как предлагает bender), но затем запускает нужную команду.

2

Многие решения для простого удаления файлов tmux в /tmp прервут повторное подключение к отдельному сеансу, если tmux действительно работает.

Это решение похоже на решение Perl в том, что оно имеет некоторые средства защиты перед удалением содержимого в /tmp, но реализовано в bash.

Добавьте это к вашему ~/.bashrc

tmux() {
  local tmux_cmd
  if ! tmux_cmd=$(which tmux); then
    echo "error: tmux not installed" >&2
    return 1
  fi
  if ! $tmux_cmd ls > /dev/null 2>&1; then
    # tmux ls returned error, so lets try cleaning up /tmp
    /bin/rm -rf /tmp/tmux*
  fi
  $tmux_cmd "$@"
}
2

попробуйте команду strace -f -o strace.out tmux new и затем проверьте файл strace.out на возможные причины. У меня была такая же ошибка и я удалил папку /tmp /tmux-XXXXX, у нее были неправильные разрешения.

-1

просто удалите папку /tmp /tmux- * при запуске:

cat rm -r /tmp /tmux- * >> ~ /.bashrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .