На сегодняшний день тема импортозамещения актуальна как никогда, в том числе переход на отечественные ОС на базе Linux. Таким образом, разработчику необходимы знания хотя бы базовых команд, чтобы выполнять привычные действия, такие как поиск логов, публикация разработки.
На просторах Интернета можно найти большое количество материала, в котором очень легко заплутать. В данной статье собраны самые полезные команды Linux, которые часто пригождаются разработчику, а также представлены примеры использования их в системе.
Работа с логами является неотъемлемой частью рутины разработчика. С переходом на Linux получить логи можно различными способами: перенести их с сервера к себе на ПК, открыть в ftp-клиенте или же использовать командную строку. Как правило, первые два способа занимают слишком много времени из-за объёма логов, количества серверов, на которых развернут Directum RX. В то время, как всего пара команд в терминале позволяет оптимизировать поиски и сильно сократить время.
Поиск производится при помощи утилиты grep. Она имеет довольно большие возможности, но разработчику достаточно знать лишь некоторые из них.
Общий вид команды:
grep -<различные префиксы> "<текст для поиска>" <путь до логов>
Строка начинается с команды grep, далее можно указать разного рода префиксы (пример будет ниже) для более детальной «настройки», затем в кавычках указывается шаблон, по которому будет осуществлен поиск строк и, наконец, путь до логов, указанный через правый слэш.
Например, следующая команда позволит найти и отобразить в терминале строки, содержащие фрагмент «error», при этом регистр шаблона при поиске не учитывается благодаря префиксу -i:
grep -i "error" /srv/drx_logs/*/Worker/*2023-11-08*
Grep часто используется в паре с командой cat. Данная команда позволяет читать из файла или стандартного ввода и выводить содержимое на экран.
Общий вид выглядит следующим образом:
cat <путь до файлов> | grep -i "<текст для поиска>"
Grep умеет и сам выводить текст на экран. Но в паре с cat можно вводить дополнительные надстройки, например, перед поиском строк отсортировать их по началу строки (поскольку лог начинается с даты и времени, сортировка осуществится именно по этим параметрам, что может быть удобно):
cat /srv/logs/*/Worker/*2023-11-08*.log | sort | grep -i "error"
При указании пути можно заметить символ * - это маска поиска и означает любую последовательность символов произвольной длины, может искать по нескольким папкам.
Еще один пример: найти все строки в логах по строке "error" за 08.11.2023 и отобразить в удобочитаемом формате JSON:
cat /srv/logs/*/Worker/*2023-11-08*.log | grep -i "error" | jq
В данном случае за форматирование в JSON отвечает утилита jq. Для неё требуется отдельная установка. Удобно использовать для отображения небольшой выборки.
В jq также есть удобная возможность вывести значения по определенному ключу. После выполнения следующей команды, будут найдены строки, содержащие «Error» и выведены значения только по ключу «mt», то есть в нашем случае на экран будет выведен только текст ошибок:
cat CTL-DIRAPP01-sungeroworker.Worker.2023-12-20.log | grep "Error" | jq .mt
Для исключения определенных файлов из выборки необходимо использовать параметр --exclude:
cat /srv/drx_logs/*/Worker/*2023-12-07*log | grep --exclude="*IsolatedArea*log" "Error" --color
Примечание:
Если выборка получилась слишком объёмная и не помещается в терминал, то результат можно записать в файл при помощи перенаправления вывода >/>> либо команды tee. Команда tee позволяет записывать результат и в терминал, и в файл одновременно, в то время как >/>> просто записывают результат в файл.
Общий вид использования tee:
<любая команда> | tee <путь до файла для записи с наименованием файла и расширением>
Пример:
grep -i "error" /home/user/DirectumRX/logs/*2023-09-11*log | tee ./savedLogs/log1.txt
Если файл уже существует, то он будет перезаписан. Если к tee добавить префикс -a, то результат запишется в конец файла. Данная команда записывает абсолютно любой результат выполнения команды в файл.
Различие между > и >> в том, что в первом случае содержимое указанного файла будет перезаписано, во втором случае добавлено в конец:
grep -i "error" /home/user/DirectumRX/logs/*2023-09-11*log > /home/user/DirectumRX/log1.txt
Разработчик, как правило, также занимается публикацией пакета на различные стенды, поэтому здесь будет уместно оставить скрипты публикации с использованием утилиты DeploymentToolCore.
Для дальнейших команд считаем, что DirectumLaunсher у нас находится в каталоге /srv/drx
Опубликовать и проинициализировать пакет:
/srv/drx/do.sh dt deploy --init --package=/srv/releases/2023-12-14.dat
Отдельно проинициализировать разработку:
/srv/drx/do.sh dt deploy --init
Получить все установленные решения и их версии:
/srv/drx/do.sh dt deploy -l
Получить список компонентов в виде таблицы. В таблице отображаются установленные, добавленные и доступные для добавления компоненты:
/srv/drx/do.sh components list
Если есть ошибка "permission denied", попробуйте в начале команды добавить sudo.
Посмотреть содержимое папки:
ls -c
Очистить содержимое папки:
rm -f <путь до папки>
Отобразить файлы, содержащиеся в каталоге с более подробной информацией (тип файла, права доступа, имя владельца, имя группы, размер файла в байтах и временной штамп):
ls -la <путь до папки>
Вывод информации о свободном месте и примонтированных хранилищах:
df -hT
Команды по навигации между директориями:
Примечание: Linux зависим от регистра. При написании команд, префиксов, путей нужно это учитывать.
В статье были приведены основные команды в помощь разработчику. Если тема для вас актуальна, и вы хотели бы вторую часть, обязательно ставьте 👍 и напишите об этом в комментариях.
+20% комфорта добавит команда, работает с Debian/Ubuntu/Astra/Alt:
Дальше просто пишем в консоли mc
Спасибо за полезную статью! Ждём вторую часть.
Авторизуйтесь, чтобы написать комментарий