Работа в удаленном терминале

В предыдущей статье я рассказал, как я подготавливаю Linux сервер к работе. Открывая тему моего набора инструментов на сервере, я хочу начать с первых программ, с помощью которых осуществляется подключение и работа в удаленном терминале. Это mosh, zsh и tmux.

mosh (mobile shell)

Mosh – современная замена старого доброго SSH. Ладно, это не полная его замена, поскольку для работы mosh нужен все тот-же ssh, можем сказать, что это новое дыхание для ssh ;). После того, как произошло соединение, запускается mosh-server с использованием одного из UDP портов в диапазоне от 60000 до 60010. Дальнейшее взаимодействие между клиентом и сервером происходит по UDP.

Основные преимущества mosh:

  • IP поменялось, а соединение не оборвалось! Переключаясь между Wifi, 3G или ethernet, меня всегда раздражало, что надо заново устанавливать все открытые ssh соединения, поскольку они “подвисают” и “отваливаются”. С mosh такой проблемы просто нет. И это очень радует 🙂
  • Ноутбук заснул – не проблема! Часто мой MacBook уходит в сон, а возвращаясь с него, я вижу уже закрытые ssh соединения. Больше такого нет.
  • Мобильный интернет – все работает нормально! Будучи подключен по ssh через мобильный 3G или Edge интернет, очень сложно работать в том же Vim редакторе – потери пакетов, зависание и т.д. Опять же, mosh нивелирует и эту проблему.

zsh и oh-my-zsh

Долгое время я использовал bash в качестве командной оболочки. Но, после того, как я однажды попробовал zsh, он стал для меня основным на Linux и OSX. А с помощью расширения oh-my-zsh, консоль оживает заново. Работать становиться очень удобно. Я могу написать:

vi /u/l/e/an/h

нажать Tab и получить:

vi /usr/local/etc/ansible/hosts

Могу ввести 1 команду и с помощью вверх либо вниз найти все варианты ввода. И, конечно, подсказки на нажатие Tab:

docker-compose help
    help               — Get help on a command

zsh облегчает работы в разы, делая ежедневное общение с терминалом приятным 🙂

Так же, вместе с установкой zsh, я устанавливаю свой конфигурационный файл .zshrc, в котором уже прописаны некоторые плагины и полезные сокращения. В частности:

  • myextip позволяет получить внешний адрес. Полезно, если сервер за NAT.
  • clr – просто очистка консоли.
  • hist10 – 10 наиболее часто вводимых в терминале команд.
  • hgrep – поиск по истории вводимых в терминале команд.
  • mynetcon – все открытые соединения с сервером.

mynetcon

tmux

tmux – многооконный эмулятор терминала. Мой конфиг .tmux.conf сделает работу с tmux схожей на Vim редактор.

Все команды выполняются после вызова префикса, который установлен у меня в Ctrl+a. К примеру, что бы создать новое окно, необходимо нажать Ctrl+a и потом c.

Запомните основные команды (после вызова префикса):

  • c – создать новое окно
  • s – разделить окно на два окна по горизонтали
  • v – разделить окно на два окна по вертикали
  • ] – перейти к следующему окну
  • [ – вернуться к предыдущему окну
  • & – убить окно
  • w – показать список окон
  • , – переименовать окно
  • Escape – режим копирования. Теперь мы можем осуществлять навигацию по выводу терминала
  • m – включить режим мыши. Доступна работа с помощью мышки (изменить размеры окон, прокрутить листинг и т.д.)
  • M – отключить режим мыши

И главное, что бы создать новую сессию, необходимо выполнить tmux new в терминале. В любой момент мы можем отключиться нажав Ctrl+a и потом d (или даже закрыть ssh соединение), но, после возврата, все наши команды все так же будут выполняться внутри tmux сессии. Просмотреть список активных сессий – tmux ls и подключиться к одной из них – tmux attach -t 0, где 0 – это идентификатор сессии.

Теперь мы готовы к работе с другими не менее полезными программами. Но, об этом уже будет в следующей статье.

1 Comment on "Работа в удаленном терминале"


  1. А мне нравиться yakuake хотя tmux я не пробовал 🙂
    mosh действительно очень удобная вещь.
    Ну а остальное нужно пробовать.
    Спасибо:)

Leave a Reply

Your email address will not be published. Required fields are marked *