Если эффективной работе в cli/bash/vim посвящены сотни статей, то теме организации рабочего окружения сисадмина — едва ли несколько штук. Чаще всего это скриншоты какого-нибудь Enlightenment с 1 прозрачным терминалом, часам, календарем, 15 виджетами загрузки CPU и голой анимешной бабой на фоне. Подходит для фильма «Хакеры», не подходит для работы. Нам требуется, чтобы терминал появлялся еще до того, как мы об этом подумали, выполнял свою работу и исчезал бесследно до следующего такта.

Disclaimer

Предполагается, что вы уже лет пять работаете админом/devops'ом и умеете находить ответы в гугле. Моя задача — задать нужные вопросы. Примеры реализации будут даны для Windows. Альтернативы для *nix-образных систем предлагаю читателям, как домашнее задание.

Авторизация

Во-первых, вся авторизация должна быть по ключу. Не видел ничего более неуклюжего, чем вбивание хоста по памяти каждый раз, после чего ввод логина и копирование пароля из специального секретного файла passwords.txt на десктопе. Ключ (или ключи, если вы сохраняете хорошие отношения с работодателями) должен быть загружен в агента. Ключ, само собой, должен быть запаролен. Ведь он, наверняка, лежит в My Documents. А они бекапятся в какой-нибуть сторадж Dropbox/Wuala/ownCloud. А этот сторадж наверняка подключен в любимом мобильнике с запоминанием пароля. Потерял мобильник — ходи по всем всем всем хостам, где бывал твой ключ, и меняй. Звучит как филиал ада, не правда ли?
Реализация: установите PuTTY. Сгенерите и поместите свой .ppk в папку Start-up. Pageant сделает остальное.

Быстрый доступ

Во-вторых, выбор нужного хоста должен занимать не более 700мс. Многие догадываются создать для всех хостов сессии в Pageant, но после все равно ищут мышкой крошечную иконку в трее, выбирают Saved Sessions, ищут в огромном списке нужное имя… Пропущу очевидный пункт о том, что вся работа должна вестись с клавиатуры. Ну разве что ленивое листание веб-страниц, используя mouse gestures, но это не наш случай. Требуется доступ к списку хостов по shortcut'у с возможностью поиска.

Реализация: Launchy (freeware) + PuTTY plugin. У меня висит на Alt+Space. Кроме отличного поиска по файлам и командам, дает возможность поиска по сессиям Pageant'а, угадывая имена по нескольким буквам. Допустим, если у вас есть сессии:
  • Client1_Host1
  • Client1_Host2
  • Client2_Host1
  • Client2_Host2

вам достаточно ввести «c2h1», чтобы попасть на Client1_Host2 (в данном искусственном случае хватит даже просто «21»). Вы даже можете ввести «с1» и выбрать нужную машину из трех — Launchy запомнит ваш выбор и в следующий раз не будет задавать вопросов.

Менеджер окон

В-третьих, окна должны оптимально располагаться на экране, не наползать друг на друга и менять размеры при ресайзе соседей (docking). Я ценю (почти без сарказма) попытку Windows реализовать тайлинг по Win-Arrow. Но при современных разрешениях 24″+ мониторов два гигантских полотнища терминалов — явный overkill. Да и двух окон обычно мало — нужно 2-3 терминала, браузер с маном, почта или скайп — кому как.

Реализация: Plumb (for personal use). Автоматически размещает окна согласно заданной вами сетке. У меня экран поделен на 5 частей — слева полная треть экрана отведена наиболее активному окну, остальное место поделено 2x2 под остальные фоновые задачи (tail -f, watch -d, mtr). Мне не нужно мышкой перетаскивать новые окна с места на место, освобождая место среди других окон — 5 последних активных окон у меня на экране.

Что это нам дает?

Теперь рассмотрим выдуманную ситуацию из реальной жизни, в которой станут ясны все бонусы этой системы. Вы читаете Хабр, к вам подходит коллега-программист и спрашивает: «Паша, у Client1 на первом хосте уже завершился тот очень длинный запрос, который я составил без малейшего знания внутренней архитектуры базы, старательно игнорируя индексы и используя наиболее плохо оптимизирующиеся операторы?».
Вы кладете пальцы на клавиатуру и даете первый аккорд: Alt-Space c1h1 ENTER. Готов поспорить, что люди даже не заметят, что произошло. Просто вы коснулись клавиш, и в ту же секунду окно с Хабром отодвинулось в сторону, а его место занял открытый терминал Client1_Host1. Для человека, привыкшего всю жизнь в лучшем случае искать нужный таб в длинном списке открытых сессий, это уже будет выглядеть, как магия.

В терминале вы выполняете что-то вроде «pgrep -af long_query», видите, что процесс ещё висит и жмете Ctrl-D. Окно закрывается, и Хабр (предыдущее активное окно) возвращается на своё место. Вам не надо сворачивать терминал, думая о том, что вы ещё будете работать с этим хостом — вы знаете, что открыть новое вам быстрее, чем искать старое Alt-Tab'ом или выцеливать мышкой в taskbar'е.

Через 2 минуты коллега возвращается с тем же вопросом. На этот раз вы будете быстрее, чем привокзальный катала. Следите за руками. Alt-Space ENTER UP ENTER Ctrl-D. Что это было — Fatality? Launchy помнит вашу последнюю команду, вам даже не придется переводить взгляд на его окно. Открыли терминал, вызвали предыдущую команду в шелле, увидели ненулевой результат и закрыли окно.

Вот он приходит в третий раз, и, чтобы отвязаться от него, вы запускаете в свежеоткрытом терминале «watch -d !!» и перетаскиваете окно в угол. Хабр снова занимает основную часть десктопа, а watch в маленьком окне подсветит вам изменения в списке процессов, когда долгий запрос к базе завершится.

Это лишь одна часть учения о Быстрой Руке. Полностью оно состоит из следующих разделов:

1. Окружение, опережающее мысль;
2. Быстрый bash;
3. Unix-way в работе с файлами;
4. Vi(m), строгий, но справедливый.