Часто при поддержке работы торговой системы бывает важно быстро посмотреть логи на PROD, чтобы найти в логах FIX-сообщений информацию о каком-то определенном ордере, по которому возникли вопросы. Так как чаще всего торговые системы работают на Linux, знание командной строки Linux и его главных утилит очень желательно и полезно.
ssh и putty
Начнем с утилиты ssh, так как подключение к удаленной системе чаще всего осуществляется через ssh. ssh может также использоваться для создания ssh-тоннелей, что тоже может пригодиться в случае подключения к удаленной машине с машины, которая не прописана в сетевых файрволах, через другую машину, которая зарегистрирована в файрволе.
На Windows для ssh-подключений используется популярная утилита putty. Эта утилита (точнее, набор утилит) кроме всего прочего позволяет сохранять сессии к удаленным системам. В ей можно настраивать логин и установить первую команду, которая исполнится на удаленной машине после логина. Это экономит время в ситуациях, когда важна каждая секунда.
В putty полезно выставить background colors для сессий. Например, для PROD соединений я выставляю темно-красный фон. Это пригодится для тех случаев, когда у вас открыто несколько окон с соединениями к разным машинам. Благодаря фоновому цвету вы точно знаете, что работаете на PROD системе, чтобы случайно в спешке не сделать на PROD что-то, о чем потом придется жалеть.
more и less
Для просмотра больших файлов используются популярные утилиты more и less. Я предпочитаю работать с less, так как она позволяет листать файл поэкранно как вперед так и назад. Поиск по регулярному выражению в файле включается с помощью «/».
tr и sed
Функция piping — склеивание вывода из одной программы и ввода в другую. Утилита tr помогает заменить невидимый символ SOH на что-то видимое, например «;» или «|».
tr -s '\001' '|'
Очень удобно смотреть FIX-сообщения, когда пары «тег=значение» не сливаются в кашу.
Я предпочитаю между парами «тег=значение» помещать не один символ, а несколько. Например, точку с запятой и пробел: «; «. Утилита tr не умеет заменять один символ на несколько, только — один символ на один другой символ. На помощь нам приходит утилита sed. С помощью команды
sed 's/\x01/; /g'
мы можем еще больше облагородить логи FIX-сообщений и облегчить себе работу с ними.
tail и grep
Незаменимая утилита tail позволяет просматривать обновления логов в реальном времени. Если мы еще воспользуемся механизмом piping, мы можем с помощью утилиты grep в реальном времени фильтровать сообщения и выводить на экран только те строчки, где есть интересующая нас информация (все строки FIX сообщений с тегом 35), отбрасывать неинтересующую нас информацию (все строки с тегом 35=0 — т.е. строки c FIX heartbeat), плюс одновременно облагораживать их, заменяя SOH на «|». Вот как это выглядит:
tail -f Daily.log | grep '35=' | grep -v '35=0' | tr -s '\001' '|'
Итого
Как программисту для выполнения ежедневных, рутинных операций для поиска нужной информации в логах вам нет необходимости знать абсолютно все о Linux. Знакомства с утилитами grep, tail, less, tr, sed, ssh и еще, скажем, diff, cd, ls и редактор vi достаточно для большинства задач. По всем этим командам полно информации в интернете, в книгах и, разумеется, man-страницы.
Если же речь идет о создании и поддержке высокопроизводительных, low-latency систем, без более глубокого знания устройства Linux, его настроек и утилит уже не обойтись.