Tmux не работает под терминалом?

Я начинаю использовать tmux и нахожу интересную вещь,

В gnome-terminal

$ pstree -asp $
systemd,1 splash
  └─systemd,14385 --user
      └─gnome-terminal-,15157
          └─bash,17525
              └─pstree,17551 -asp 17525

Понятно, что ток pstree -asp $ работает под gnome-terminal

Однако при запуске tmux

$ pstree -asp $
systemd,1 splash
  └─systemd,14385 --user
      └─tmux: server,16469
          └─bash,17699
              └─pstree,17794 -asp 17699

Почему tmux не входит в gnome-terminal?

0
задан 17 May 2019 в 02:53

1 ответ

Большая разница - это gnome-terminal приложение GUI, окно. Это - своего рода интерфейс к оболочке, но они являются чрезвычайно отдельными. Когда приложение GUI выходит, сервер GUI (X11 и по-видимому Уэйленд также) очищает окна и закрывает их. gnome-terminal будучи родителем оболочки, отправит SIGHUP для закрытия дочерних процессов, и это закроет сеанс оболочки. Аналогичная ситуация происходит с консолями TTY или ssh. В TTY Вы имеете agetty процесс, который примет Ваши данные для входа в систему и затем запустит конкретную программу, обычно оболочка, хотя в определенных случаях он мог быть настроен для выполнения чего-то еще полностью.

Теперь, tmux отличается - это - консольное приложение и не зависит от входа в систему (хотя Вы могли заставить его появиться после входа в систему tty). Скажите, что у Вас есть сервер в Нью-Йорке, но Вы находитесь в Калифорнии. Вы хотите запустить длительную команду, возможно, обновить и разъединиться от удаленного сеанса. То, что можно сделать, является запуском tmux, запустите команду в оболочке tmux открывается, и через Ctrl+b и отсоединение d от сессии. Команда останется работать в экземпляре оболочки, управляемом tmux в отличие от этого, gnome-terminal. На следующий день можно сделать

$ tmux ls
0: 1 windows (created Fri May 17 13:42:54 2019) [167x48]

найти рабочие сессии и соединиться назад с ним через

$ tmux attach

для новой сессии или через

$ tmux attach -t 0

присоединить к сессии, названной 0 как в моем примере. В целом tmux сделал, чтобы клиент сервера приблизился, где Вы соединяетесь с конкретная сессия, обработанная серверным процессом, и та коммуникация продолжается через сокет домена Unix (по умолчанию в /tmp/tmux-<UID> ), пока система не была перезагружена.

Под капотом, обоими tmux и gnome-terminal использовать pts устройство виртуального терминала (в отличие от этого, tty который используется для последовательных консолей или виртуальной tty1 консоли, например). Они оба способны к запуску интерактивной оболочки и отдельных команд от /bin или /usr/bin, или что-то Вы сделанный на заказ. Все же их существенная цель отличается.

См. также

1
ответ дан 17 May 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: