Резюме : я пытаюсь выяснить, почему мой сеанс tmux умирает, когда я отключаюсь от ssh
Детали :
Я установил tmux в систему Arch Linux. Когда я запускаю сеанс tmux, я могу отсоединиться от него, а затем снова подключиться, пока сеанс ssh активен. Но если я закончу свою сессию ssh, то сессия tmux будет уничтожена.
Я знаю, что это не нормальное поведение, потому что у меня есть другая система, в которой сеанс tmux продолжает работать, даже если сеанс ssh завершен, и я могу подключиться к сеансу tmux после установления нового соединения ssh. Система, в которой возникла проблема, и система, которая работает правильно, имеют очень похожие конфигурации, поэтому я не уверен, что проверять.
Я использую tmux версии 1.9a. Система, в которой возникла проблема (для которой у меня есть доступ с правами root), имеет версию ядра Linux 3.17.4-1, а система, которая работает правильно, имеет версию ядра 3.16.4-1-ARCH (у меня нет root на этом система). Я сомневаюсь, что версия ядра является источником проблемы, но я заметил только одно отличие.
Я решил спросить, видел ли кто-нибудь похожую проблему и знает ли ее решение.
Точные шаги, которые приводят к проблеме:
- SSH к машине
- беги
tmux
чтобы запустить tmux ctrl-B D
отсоединить (в этот момент я мог прикрепить сtmux attach
- закрыть сессию ssh (на данный момент сессия tmux прервана, я смог наблюдать это, когда я вошел в систему как root на другом терминале)
- переподключитесь с ssh и запустите,
tmux attach
и я получаю сообщениеno sessions
и запускаюtmux ls
возвратыfailed to connect to server: Connection refused
. Это имеет смысл, потому что подача не работает. Что не имеет смысла для меня, так это то, почему он убивается на шаге 4, когда я отключаюсь от сеанса ssh.
данные страйса:
В ответ на один из комментариев я использовал strace, чтобы увидеть, какие системы вызывает процесс сервера tmux. Похоже, что когда я выхожу из сеанса ssh (набирая exit
или ctrl-d
нажимая), процесс tmux уничтожается. Вот фрагмент заключительной части вывода strace.
poll([{fd=4, events=POLLIN}, {fd=11, events=POLLIN}, {fd=6, events=POLLIN}], 3, 424) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
sendto(3, "\17", 1, 0, NULL, 0) = 1
+++ killed by SIGKILL +++
Я сравнил это с другой системой, в которой tmux работает должным образом, и в этой системе процесс tmux продолжает выполняться даже после моего выхода. Таким образом, основной причиной является то, что процесс tmux завершается, когда я закрываю сессию ssh. Мне нужно потратить некоторое время на устранение неполадок, чтобы выяснить, почему, но я подумал, что обновлю свой вопрос, так как предложение strace было полезным.