Персональный совет для специалистов по продуктивным данным

Как повысить производительность в 10 раз с помощью Tmux

Для специалистов по данным и инженеров-программистов

Постановка задачи

О нет, я закрыл свой терминал и потерял прогресс для запуска ‹модель ML›

О нет, я потерял свои команды для развертывания скриптов

Хотелось бы, чтобы были простые способы отслеживать мои пробежки в нескольких проектах данных

Добро пожаловать в Tmux

Что такое Tmux?

Tmux означает терминальный мультиплексор. Tmux похож на экран GNU для размещения нескольких терминалов (в сеансе) и отслеживания текущей или предыдущей истории запуска скриптов. Все внутри плиток оконных панелей в среде командной строки (CLI).

Tmux повысит вашу продуктивность в 10 раз, потому что:

  • Аудит: управление историей сценариев для нескольких запущенных проектов.
  • Постоянство: общий макет, который вы всегда можете использовать, чтобы запомнить запуск ваших скриптов даже после того, как вы случайно закроете терминал.
  • Мультихост: легко переключайтесь между несколькими программами в одном терминале, затем отсоединяйте и снова присоединяйте их. Теперь вы можете подключаться и переходить к одновременным сеансам SSH и отслеживать работу вашего сервера ML.

Вот гифка, которая расскажет, что tmux может для вас сделать.

Обратите внимание, что за один сеанс я выполняю несколько операций:

  1. Разделить мой сеанс на несколько панелей в tmux
  2. запустить vmstat на одной панели
  3. Запустить netstat на одной панели
  4. Отредактируйте new-file.txt, чтобы сохранить результаты netstat
  5. Перейдите на отдельную панель сеанса и просмотрите new-file.txt

Обратите внимание, что без tmux вам нужно запустить задачу в одном представлении терминала и потерять прогресс, если вы закроете терминал.

С tmux все можно сделать быстро и без ошибок.

Перейдем к tmux!

Давайте установим Tmux

Tmux размещен на Github как открытый исходный код (это означает, что он бесплатный!). Установить tmux действительно просто. Просто запустите следующие команды

# For Ubuntu and Debian
sudo apt install tmux
# For CentOS and Fedora
sudo yum install tmux
# For macOS
brew install tmux

Покажи мне tmux

Создать сеанс

tmux основан на сессиях. Чтобы начать новый сеанс в tmux, просто введите tmux new в своем терминале. После того, как вы войдете в tmux, единственное, что будет заметно отличаться, - это постоянно присутствующая зеленая полоса внизу (параметры настройки см. В разделе Получение фантазии с пользовательскими темами) .

Tmux вращается вокруг сессий, больших проектов для хранения ваших команд и истории. Это концептуальный единичный блок, который вы можете «прикрепить» / синхронизировать для работы над вашими проектами.

  • Создать новый сеанс: tmux new -s tutorial
  • Присоединиться к существующему сеансу: tmux attach -t tutorial

После подключения к сеансу вы увидите другой интерфейс терминала (с зеленой полосой внизу).

Чтобы выйти из сеанса / панели, вы можете запустить командуexit. Другой командой для обхода всех выходов и выхода из сеансов будет запуск detach

Запустить команду tmux

Использование префикса

Все команды в Tmux начинаются с ярлыка префикса (по умолчанию ctrl + b). Этот префикс будет использоваться каждый раз, когда мы хотим запускать команды tmux. Чтобы запустить подсказку, введите ctrl+b и :.

Примечание: мы можем настроить новый префикс как Ctrl+a. Это помогает выполнять команды быстрее, поскольку набирать Ctrl+a легче, чем Ctrl+b..

Команды tmux

Вот важные команды, которые вы часто используете:

  • Переименовать сеансы Prefix + $
  • Отключить сеансы Prefix + D
  • Создать вертикальное разделение Prefix +%
  • Создать горизонтальное разделение Prefix + “

Для получения дополнительной информации я включил полезную шпаргалку, которую я нашел для изучения. Кредит для linuxacademy.local

Настроить настройку команды tmux и привязки клавиш

Обратите внимание, что есть некоторые сочетания клавиш, которые не являются интуитивно понятными. Например, чтобы создать горизонтальное разделение, вам нужно запустить Prefix + “. Об этом легко забыть, поэтому нам нужно настроить привязку клавиш к более интуитивной.

Настройку tmux можно найти в .tmux.conf file, вы можете отредактировать файл, выполнив команду nano в своем терминале bash или просто открыв его в любом текстовом редакторе.

Вы можете следить за моей конфигурацией и обновлять ее по своему вкусу.

# Set prefix (Ctrl+a)
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
 
# Use Alt-arrow keys to switch panes (Alt+left/right/up/down)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
 
# Shift arrow to switch windows (Shft+left/right/up/down))
bind -n S-Left previous-window
bind -n S-Right next-window
 
# Mouse mode to alter windows
setw -g mouse on
 
# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v
 
# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
#Set Tmux plugin to resurrect every time workstation restarted (Ctrl+A Ctrl+S to Save / Ctrl+A Ctrl+R to Resurrect)
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# Automatically restore tmux windows when tmux starts.
set -g @continuum-restore 'on'
# Don't auto-launch tmx at machine boot.  Give me a chance to gcert first.
set -g @continuum-boot 'off'
# Preserves what was readable in each pane.
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-strategy-vim 'session'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Это все! Поздравляю, вы только что узнали полезные советы по повышению вашей продуктивности.

Воскреси свой Tmux!

Tmux воскрешает на помощь

Я думаю, что этот урок никогда не будет полным без упоминания tmux resurrect. Ключевой вопрос, который следует задать: «Как мы можем сохранить историю tmux после перезагрузки».

Идея похожа на сохранение файла памяти в играх Final Fantasy.

Вы повысились в новом подземелье. По пути вы собирали предметы и улучшали экипировку своего персонажа. В конце дня вы научили их новым навыкам борьбы с боссом.

Но прежде чем рискнуть умереть во время схваток с боссами, вы бежали к точке сохранения, надеясь сохранить текущее состояние персонажей.

Когда вы проиграли битву, вы вздохнули с облегчением, зная, что вы сохранили свою игру и можете попробовать еще раз, пока не одержите победу.

Точно так же tmux resurrect сохраняет и загружает ваше последнее состояние.

Это очень полезно, особенно после того, как вы запустите свои файлы сборки, чтобы поэкспериментировать с новыми моделями, и быстро сгенерируете код сценария .sh для запуска обучения без учителя. Самое страшное - потерять все истории команд для доступа к журналам машинного обучения.

Поэтому разумный вариант, если вы потеряете свой прогресс, - это загрузить последнее состояние в память. Затем вы можете быстро перейти к проекту и получить все последние состояния терминала в течение нескольких секунд.

Чтобы сохранить свое состояние с помощью tmux resurrect, вы можете просто запустить Prefix + Ctrl+S.

Чтобы загрузить свое состояние в новый сеанс, вы можете просто запустить Prefix + Ctrl+R.

Если все сделано правильно, вы восстановите все истории команд и сеансы, которые важны для вашего текущего проекта.

Поздравляем, теперь вы готовы творить крутые вещи с tmux!

Ссылка:

Ниже приведены некоторые ссылки, которые вы должны прочитать после того, как подключились к tmux.

В заключение: Tmux повышает вашу продуктивность в 10 раз

  • Аудит: управление историей сценариев для нескольких запущенных проектов.
  • Постоянство: общий макет, который вы всегда можете использовать, чтобы запомнить запуск ваших скриптов даже после того, как вы случайно закроете терминал.
  • Мультихост: легко переключайтесь между несколькими программами в одном терминале, затем отсоединяйте и снова присоединяйте их. Теперь вы можете подключаться и переходить к одновременным сеансам SSH и отслеживать работу вашего сервера ML.

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

Соли део глория

об авторе

Винсент борется со злоупотреблениями в Интернете с помощью ML @ Google. Винсент использует передовую аналитику данных, машинное обучение и разработку программного обеспечения для защиты пользователей Chrome и Gmail.

Помимо работы в Google, Винсент также является выпускником магистратуры Технологического университета Джорджии, триатлонистом и ведущим автором журнала Towards Data Science Medium, чтобы направлять начинающих практиков машинного обучения и данных с более чем 1 млн зрителей по всему миру.

Наконец, свяжитесь с Винсентом через LinkedIn, Medium или Youtube Channel.