Ваш конфигурационный файл работает, но есть несколько сложностей.
Краткосрочные Команды
Во-первых, команды, которые вы запускаете (экземпляры ls ), заканчиваются очень быстро. Окна и панели для команд созданы, но они исчезают при выходе из каждой команды.
Если ваша цель состоит в том, чтобы реально использовать такие команды «один выстрел» в вашей окончательной конфигурации, то вы , вероятно , следует использовать опцию окна remain-on-exit
(и , возможно, параметр сеанса , set-remain-on-exit
чтобы обеспечить по умолчанию для всех окон , созданных в сессии). Когда remain-on-exit
задано окно, оно не исчезнет при выходе из команды. Вы, вероятно, захотите сопоставить respawn-window
клавишу с ключом (примечание: respawn-window
возродит исходную команду; respawn-pane
также доступно в tmux 1.5 для перезапуска отдельных панелей).
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
Или, если вы не возражаете против того, чтобы ваше первоначальное окно было номером 1 вместо номера 0, тогда мы можем избежать изменения глобального значения:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
Если вы использовали только ls
в качестве упрощенной команды-заполнителя и на самом деле намереваетесь создавать интерактивные команды какого-либо типа в своих окнах / панелях, то вам, вероятно, следует просто создать команду, которую вы намеревались выполнить. Если ваша намеченная команда слишком долго запускается, чтобы использовать ее во время тестирования tmux , замените оболочку или другую простую интерактивную команду (например top
, sqlite3
и т. Д.).
new-session
Команда по умолчанию
Во-вторых, запуск tmux без аргумента команды (например tmux
) эквивалентен использованию new-session
команды (то tmux
есть так же, как tmux new-session
). Вы .tmux.conf
создаете сеанс для своих окон / панелей ( new
это псевдоним new-session
), и создается другой сеанс для неявной new-session
команды, указанной при запуске tmux без аргумента команды. Если вы используете строку состояния по умолчанию, вы увидите [1]
в левой части строки состояния, когда вы находитесь в «дополнительном» сеансе (начальный сеанс, созданный в .tmux.conf
это номер 0).
Если вы хотите избежать создания дополнительного сеанса, используйте tmux attach
вместо обычного tmux
. Ваши команды .tmux.conf
будут выполняться, создавая сессию 0, а затем ваш клиент будет присоединяться к этому сеансу вместо создания нового.
splitw
он - больше ничего - и я все еще не получаю разделенный экран, потому что он говорит это не могу установить текущий сеанс. Если я добавлюnew
перед этим, я получу ... одно окно, одну панель. Я не могу себе представить, чтобы за всю жизнь получить две панели при запуске.new
, затемsplitw
работает для меня, когда я запускаю tmux черезtmux attach
. Следует помнить, что.tmux.conf
(или файл, указанный с помощью-f
параметра) используется только в том случае, если сервер еще не запущен. Проверьте, работает ли сервер черезtmux ls
. Если вы хотите запускать команды из файла, когда сервер уже запущен, сделайте это следующим образом:tmux source-file /path/to/conf-file-that-creates-a-session-and-windows \; attach
(если вы запускаете это, когда нет сервера, ваш.tmux.conf
(или-f
файл) будет запускаться первым, а затем вашsource-file
файл).tmux new -f myconfig
. Содержимое этого файла конфигурации содержит толькоnew
послеsplitw
. Я убиваю все процессы tmux перед тем, как попробовать командную строкуtmux -f myconfig
. Я не получаю две панели. Я действительно в недоумении, что делать после этого (кроме того, чтобы просто отказаться от tmux).-f
или нет,tmux
аргумент команды без аргумента совпадает сtmux new-session
(что для новых серверов создаст новый сеанс поверх того, что делает ваш файл конфигурации). Ваше предварительно разделенное окно создается в сеансе 0, но неявнаяnew-session
команда создает (и присоединяется) дополнительный сеанс (сеанс 1; ищите[1]
в строке состояния). Используйте,tmux -f myconfig attach
чтобы избежать создания нового сеанса, который скрывает ваше предварительно разделенное окно.Я не уверен, что понимаю, что вы подразумеваете под «ручным вводом», но я так и делаю. Я написал скрипт автозапуска, который запускает мой оконный менеджер. Это содержит:
где каждый файл .session выглядит примерно так:
Подождите, это еще не все! У меня постоянно растет число файлов .session, которые я загружаю с помощью konsole:
где work_console.tabs выглядит примерно так:
Затем я нажимаю F12, чтобы запустить консоль.
источник
Предположим, вы хотите запустить 3 задачи мониторинга сервера (здесь ping localhost), не нужно связываться с файлами конфигурации и сохраненными сеансами. Все это можно сделать из командной строки.
источник
Я считаю, что teamocil очень полезен для автоматизации окон / сессий tmux.
Он написан на Ruby, поэтому вам нужно установить его.
Вот пример конфигурации:
Вы можете иметь расположение окон и расколов.
источник
Еще одна альтернатива, похожая на teamcoil, - это tmuxinator , она находится в активной разработке и работает довольно хорошо. Также рекомендуется (и отчасти рецензируется) на удивительной tmux: продуктивной разработке без мыши от The Pragmatic Bookshelf .
источник
**
Лучше сохраните свою сессию!
** Я обнаружил, что для такого ленивого администратора, как я, я бы предпочел сохранить сеанс tmux, а не тратить часы на его идеальную сборку. Я администрирую более 30 серверов, и мои сеансы tmux являются динамическими, с постоянно меняющейся конфигурацией. Это была боль в шее, пока я недавно не обнаружил tmux-воскресить, этот плагин просто великолепен. Попробуйте. В настоящее время в репозиториях Ubuntu есть tmux 1.8, этому плагину требуется 1.9, поэтому вам нужно будет обновить его вручную
После чего вы можете установить его по
Затем добавьте эту строку в конец ~ / .tmux.conf (если ~ / .tmux.conf недоступен, создайте пустой файл)
Я также добавляю эту строку в конец файла ~ / .tmux.conf, чтобы плагин сохранял сессии для всех программ, которые я запускаю
Затем перезагрузите среду tmux.
Это оно! Вы сделали. Теперь запустите tmux как обычно, измените размеры панелей, создайте новые панели, создайте новые сессии ... и т. Д. Если вы довольны достигнутой конфигурацией (в нескольких окнах и нескольких сеансах), просто нажмите Ctrl + B, затем Ctrl + S, чтобы сохранить сеанс. Чтобы проверить результаты, просто убейте все tmux
Затем снова запустите tmux
Затем из tmux нажмите Ctrl + B, затем Ctrl + R (для восстановления). Волшебным образом все ваши окна, панели и сеансы восстанавливаются с одинаковой геометрией и расположением. Надеюсь, что это поможет.
источник