Какие основные команды Linux для навигации и просмотра файлов
Что проверяют
Сможете ли вы сами зайти на тестовый стенд и найти в логах причину бага, не дёргая разработчиков. Следом обычно дают задачу: «найдите в логе все ошибки за время прогона» или «как следить за логом, пока воспроизводите баг».
Как отвечать
Сгруппируйте команды по задачам и привяжите к работе тестировщика:
- где я и что вокруг:
pwd,ls -la(скрытые файлы, права, владелец),ls -lht(сортировка по времени, свежие логи сверху),cdс вариантамиcd ..,cd ~иcd -для возврата в предыдущий каталог; - просмотр файла:
catдля коротких конфигов,lessдля больших логов. Вlessпоиск по/, переход в конец поG, аShift+Fвключает режим слежения; - начало и конец:
head -n 20для заголовка CSV или конфига,tail -n 200для последних событий,tail -f app.logдля живого лога во время воспроизведения; - поиск по содержимому:
grep -i "error" app.log,grep -nс номерами строк,grep -C 5с контекстом вокруг совпадения,grep -rпо каталогу. Сжатые старые логи читаются черезzgrepиzcat; - поиск файлов:
find /var/log -name "*.log" -mmin -30находит логи, изменённые за последние полчаса; - связки через пайп:
grep ERROR app.log | wc -lсчитает ошибки,grep ERROR app.log | sort | uniq -cгруппирует одинаковые.
Если стенд в контейнерах, добавьте docker logs -f имя_контейнера, для сервисов под systemd journalctl -u имя_сервиса -f. Хорошо звучит пример из практики: во время воспроизведения держите tail -f с grep в соседнем окне и прикладывайте к баг-репорту точные строки с временем.
Где спотыкаются
Открывают через cat лог на несколько гигабайт, и терминал захлёбывается выводом. Для больших файлов есть less, tail и grep.
Путают find и grep. Первая команда ищет файлы по имени, размеру и дате, вторая ищет текст внутри файлов.
Держат tail -f на логе с ротацией и не замечают, что новые строки идут уже в другой файл. Ключ tail -F переоткрывает файл по имени после ротации.