Intereting Posts
Загрузите с помощью wget в другой каталог, чем текущий каталог Клавиши управления и увеличения / уменьшения в терминале для использования emacs Можно ли добавить пароль для перемещения или копирования определенных файлов в Linux? Как я могу продлить аренду, когда он продолжал печатать eth0, срок аренды истек x секунд назад? Как запускать несколько сценариев одновременно? Что делает запуск «<./somefile.txt» в оболочке? Получение PuTTY для корректной работы с FreeBSD Почему fstrim обрезает все свободное пространство на моем зеркале mdraid после перезагрузки? копировать файлы с одного пути на другой путь в Linux Застрял на заставке Fedora после установки OpenBox3 / tint2 Как предоставить пользователю доступ к определенной папке в домашнем каталоге xterm подсветка всегда белая, а не обратная файл списка файлов для пакета 'gucharmap' отсутствует окончательная новая строка Почему «kill -l» не отображает номера сигналов 32 и 33? Установите Cython с python3 в Docker

убедитесь, что все сеансы tmux прекращаются, когда сеанс SSH заканчивается

Прежде всего, чтобы предвидеть путаницу: это действительно задание противоположности вашего вопроса о мельничном tmux.

Как можно гарантировать, что если туннель SSH умирает, сеанс tmux вообще не протекает. При запуске нескольких оболочек за один сеанс SSH завершение сеанса и экземпляр tmux на одном терминале по-прежнему вызывает утечку экземпляров tmux в других терминалах. Это может вызвать всевозможные проблемы, если, например, один забыл прекратить процесс потребления ресурсов, который задерживался в некоторой фоновой области. Не круто.

Я использую tmux почти исключительно как эмулятор терминала и мало использую, если таковые имеются, для его функции «отсоединить». Не редкость, что у меня есть несколько экземпляров tmux в терминалах, обращающихся к одному и тому же компьютеру за один сеанс SSH. Если я хочу запустить фоновый процесс, я прошу оболочку disown него или запустить его в systemd. К сожалению, многие системы, с которыми я работаю изо дня в день, еще не обновлены до systemd и вряд ли сделают это в ближайшем будущем, поэтому KillUserProcesses не является вариантом.

В идеале я бы просто вызвал tmux с помощью некоторого переключателя командной строки, который не позволяет ему работать в фоновом режиме, поэтому я могу использовать псевдоним tmux .

Какие SSH туннели?

Одно соединение OpenSSH, обслуживающее несколько сеансов.

Что такое сеанс tmux?

Отдельные экземпляры tmux, по одному на сеанс SSH.

Что утечки?

Утечки экземпляров tmux. Как и в: SSH в машину. Запустите еще один сеанс оболочки по тому же соединению. Запустите экземпляр tmux в каждом сеансе SSH. Теперь у вас есть два экземпляра tmux. Остановить tmux за один сеанс ( <Cd> ); затем остановите соединение SSH (снова <Cd> ): другой сеанс SSH закрыт, но экземпляр tmux, запущенный внутри него, просочился со всеми его дочерними процессами.

Опишите: (1), какая у вас настройка,

Stock OpenSSH, фондовый tmux, некоторая оболочка. В основном обратные SSH-соединения, которые я не могу восстановить, но это не имеет значения.

и (2) какой сценарий вы пытаетесь предотвратить.

Процессы остаются в живых в другом сеансе tmux.

Обратите внимание, что это разные блоки, в которые входит SSH'd, поэтому цель состоит в том, чтобы предотвратить даже ожидание одного экземпляра tmux после завершения соединения. Кроме того, поскольку я сильно использую разделенные панели и фоновые окна, я действительно желаю, чтобы все дочерние процессы были собраны.

При входе в новую сессию ssh вы можете использовать что-то вроде tmux attach -d || tmux new tmux attach -d || tmux new для присоединения любого существующего сеанса tmux или создания нового сеанса, если сеансы tmux не существуют. Хотя это не будет препятствовать tmux сеанса tmux в фоновом режиме, если вы ssh соединение ssh , это предотвратит накопление этих заброшенных сеансов.