Резюме : Я намагаюся з’ясувати, чому мій сеанс tmux вмирає, коли я відключаюсь від ssh
Деталі :
У мене встановлений tmux в системі Arch Linux. Коли я запускаю tmux сеанс, я можу відключитися від нього та знову приєднатись, поки активна сесія ssh. Але якщо я закінчу свою сеанс ssh, тоді сесія tmux вбивається.
Я знаю, що це не нормальна поведінка, тому що у мене є інша система, де сеанс tmux продовжується, навіть якщо сеанс ssh закінчився, і я можу приєднатися до сесії tmux після встановлення нового з'єднання ssh. Система, у якої є проблема, і та, яка працює правильно, мають дуже схожі конфігурації, тому я не знаю, що перевірити.
Я запускаю tmux версії 1.9a. Система, у якої є проблема (до якої я маю кореневий доступ), має версію ядра Linux 3.17.4-1, а система, яка працює правильно, має версію ядра 3.16.4-1-ARCH (у мене немає цього коріння система). Я сумніваюся, що версія ядра є джерелом проблеми, але я помітив лише одну різницю.
Я думав, що попросив би побачити, чи хтось бачив подібну проблему і знає можливе рішення.
Точні кроки, які призводять до проблеми:
- ssh to machine
- запустіть
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 вбивається. Ось фрагмент заключної частини виведення страз.
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. Мені потрібно буде витратити деякий час на вирішення цього питання, щоб з'ясувати, чому, але я подумав, що оновлю своє питання, оскільки пропозиція про напругу була корисною.