Базовые команды Linux для управления серверами и устранени... | Вопросы для собеседования | Skilio
Базовые команды Linux для управления серверами и устранения неполадок
Вопрос:

Какие команды Linux вы знаете или используете для управления сервером?

Что обычно используете для диагностики и устранения проблем?

Подсказки:

  • Команды для навигации по файловой системе
  • Рассмотрите команды для проверки системных ресурсов (использование процессора, памяти, диска).
  • Подумайте о командах для мониторинга процессов и сетевой связности.
  • Команды для просмотра и анализа системных журналов являются необходимыми для устранения неполадок.

Выше ожиданий:

  • Понимание продвинутых диагностических инструментов, таких как strace, tcpdump или systemd-analyze.
  • Знание скриптинга этих команд для автоматизированной проверки системы или создания собственных решений мониторинга.
Ответ:

Команды Linux для управления сервером и отладки в средах DevOps

Навигация по файловой системе

  • cd - изменить текущую директорию
  • ls - листинг директори и файлов
  • mv - переместить файлы и директории
  • cp - скопировать
  • rm - удалить

Мониторинг системных ресурсов

Мониторинг процессора

  • top - Отображение динамической, реальной картины работающих процессов.

    • Показывают использование процессора, оперативной памяти, детали процессов и многое другое.
    • Нажмите '1', чтобы увидеть использование каждого ядра процессора.
    • Интерактивные клавиши: 'k' для убийства процесса, 'r' для изменения приоритета, 'q' для выхода.
  • uptime - Отображение времени работы системы и средних нагрузок за 1, 5 и 15 минут.

    • Быстрый способ проверки нагрузки на систему без сложных инструментов.
    • Формат: load average: 0.52, 0.58, 0.59 (средние значения за 1, 5 и 15 минут).
    • Значения, превышающие количество ядер процессора, указывают на возможную перегрузку процессора.
  • mpstat - Отображение статистики процессора (необязательные знания).

    • Полезно для анализа производительности процессора по ядрам.
    • -P ALL показывает статистику для всех процессоров.
mpstat -P ALL 1 3  # Отображение статистики для всех процессоров, обновление каждую секунду, 3 раза

Мониторинг памяти

  • free - Отображение количества свободной и используемой памяти.

    • Флаг -h отображает информацию в удобочитаемом формате (МБ, ГБ).
    • -m отображает в мегабайтах, -g в гигабайтах.
    • Проверьте низкое количество свободной памяти или высокое использование свопа.
  • vmstat - Отчет о статистике виртуальной памяти (необязательные знания).

    • Показывают информацию о процессах, памяти, кэшировании, ввода-вывода и активности процессора.
    • Первая строка показывает средние значения с момента загрузки, последующие строки — текущие значения.
vmstat 1 5  # Отображение статистики каждую секунду, 5 раз

Использование диска

  • df - Отчет об использовании дискового пространства файловой системы.

    • Флаг -h отображает информацию в удобочитаемом формате.
    • -i отображает информацию об индексах (inode) вместо использования блоков.
    • Быстро определяет разделы с низким свободным пространством.
  • du - Оценка использования дискового пространства файлами.

    • -h для удобочитаемого вывода.
    • -s для сводки по директории (не рекурсивный список).
    • -a для отображения всех файлов, а не только каталогов.
du -sh /var/log/*  # Проверка размера каждого каталога в /var/log
  • iostat - Отчет о статистике процессора и ввода-вывода для устройств. (необязательные знания)

    • Полезно для выявления узких мест в вводе-выводе диска.
    • Отображает операции чтения/записи в секунду, скорости передачи данных.
  • iotop - Мониторинг использования диска по процессам. (необязательные знания)

    • Интерактивный интерфейс, похожий на top, но сфокусированный на операциях ввода-вывода на диск.
    • Определяет процессы, вызывающие нагрузку на ввод-вывод.

Управление процессами

  • ps - Отчет о статусе процесса.

    • ps aux отображает все процессы всех пользователей в формате BSD.
    • ps -ef отображает все процессы в полном формате.
    • ps -eo pid,ppid,cmd,%cpu,%mem для пользовательских полей вывода.
  • pgrep - Поиск процессов по имени (необязательные знания).

    • Возвращает идентификаторы процессов, соответствующие критериям.
    • Полезно в скриптах для управления процессами.
  • pkill/killall - Убить процессы по имени (необязательные знания).

    • Более безопасная альтернатива ручному поиску PID и использованию kill.
    • pkill firefox для завершения всех процессов Firefox.
  • nice/renice - Запуск программы с измененным приоритетом планирования (необязательные знания).

    • nice -n 10 command запускает команду с более низким приоритетом.
    • renice -n 10 -p PID изменяет приоритет работающего процесса.
    • Значения от -20 (самый высокий приоритет) до 19 (самый низкий приоритет).
  • lsof - Список открытых файлов (необязательные знания).

    • Показывает, какие процессы имеют открытые файлы.
    • lsof -i:80 для просмотра процесса, использующего порт 80.
    • lsof -u username для просмотра файлов, открытых конкретным пользователем.
lsof -i TCP:22  # Проверка, какой процесс прослушивает SSH-порт

Диагностика сети

  • ping - Тестирование сетевого соединения с хостом.

    • Простой, но эффективный первый тест на подключение.
    • Измеряет время туда-обратно и потерю пакетов.
    • Флаг -c ограничивает количество отправленных пакетов.
  • traceroute/tracepath - Вывод маршрута пакетов до сетевого хоста (необязательные знания).

    • Показывает сетевой путь и задержку до пункта назначения.
    • Помогает определить, где на сетевом пути возникла проблема.
  • netstat - Сетевая статистика.

    • -tuln отображает все TCP/UDP-порты прослушивания с числовыми адресами.
    • -anp отображает все соединения с информацией о процессах.
    • Становится устаревшим в пользу ss.
  • ss - Статистика сокета (необязательные знания).

    • Современная замена netstat.
    • Быстрее и предоставляет больше информации.
    • -tuln отображает прослушивающие TCP/UDP-сокеты.
ss -tuln  # Список всех прослушивающих TCP и UDP-портов
  • ip - Отображение/манипулирование маршрутизацией, устройствами, политикой маршрутизации и туннелями.

    • Современная замена ifconfig, route и т.д.
    • ip addr отображает сетевые интерфейсы и адреса.
    • ip route отображает таблицу маршрутизации.
  • dig/nslookup - Утилита поиска DNS (необязательные знания).

    • Запрос к DNS-серверам для получения записей ресурсов.
    • Отладка проблем с разрешением DNS.
    • dig +short example.com для краткого вывода.
  • curl/wget - Отправка запросов по HTTP/HTTPS и скачивание данных.

    • Тестирование доступности веб-сервиса и ответов.
    • -I или --head для проверки только HTTP-заголовков.
    • -v для подробного вывода, показывающего запросы/ответы.
curl -v https://example.com  # Подробный вывод, показывающий весь HTTP-диалог

Анализ логов

  • journalctl - Запрос в журнал systemd (для систем на основе systemd).
    • -u service-name для просмотра логов для определенного сервиса.
    • -f для слежения за логами в реальном времени (как tail -f).
    • -b отображает логи с момента последней загрузки.
journalctl -u nginx -f  # Слежение за логами сервиса nginx в реальном времени
  • tail - Вывод последней части файлов.

    • -f отслеживает лог по мере его роста.
    • -n 100 отображает последние 100 строк.
    • Частый первый шаг при анализе логов.
  • grep - Вывод строк, соответствующих шаблону.

    • Необходимый инструмент для поиска в логах.
    • -i для поиска без учета регистра.
    • -v инвертирует соответствие (строки, не содержащие шаблон).
    • -r для рекурсивного поиска по каталогам.
grep -i error /var/log/syslog  # Поиск "error" (без учета регистра) в syslog
  • awk/sed - Инструменты обработки текста (необязательные знания).

    • Парсинг и преобразование данных логов.
    • Извлечение определенных полей из структурированных логов.
    • awk '{print $1, $4}' для вывода первого и четвертого полей.
  • zcat/zgrep - Просмотр или поиск в сжатых файлах логов (необязательные знания).

    • Работа с ротированными и сжатыми логами без извлечения.
    • Синтаксис такой же, как у cat/grep, но для сжатых файлов.

Манипулирование файлами и текстом

  • find - Поиск файлов в иерархии каталогов.
    • Очень универсален для поиска файлов.
    • -name "*.log" находит файлы по шаблону имени.
    • -type f для обычных файлов, -type d для каталогов.
    • -mtime -7 для файлов, измененных на прошлой неделе.
    • -exec command {} \; выполняет команду для каждого найденного файла.
find /var -name "*.log" -mtime -1  # Найти файлы логов, измененные в течение последнего дня
  • cut - Удаление разделов из каждой строки файлов.

    • Извлечение определенных столбцов из структурированных данных.
    • -d',' устанавливает разделитель запятой.
    • -f1,3 выбирает поля 1 и 3.
  • sort - Сортировка строк текстовых файлов.

    • -n для числовой сортировки.
    • -r для обратного порядка.
    • -k2 сортирует по второму полю.
  • uniq - Отчет или пропускание повторяющихся строк.

    • -c подсчитывает вхождения.
    • Обычно используется после сортировки.
  • wc - Вывод количества строк, слов и байтов.

    • -l подсчитывает строки.
    • Быстрый способ получения размеров файлов или подсчета результатов.

Информация о системе

  • uname - Вывод информации о системе.

    • -a выводит всю информацию.
    • Полезно для быстрого определения версии ядра и архитектуры.
  • dmesg - Вывод или управление кольцевым буфером ядра.

    • Отображает сообщения об ошибках при загрузке системы и обнаружении оборудования.
    • Помогает в устранении неполадок с оборудованием или драйверами.
    • --level=err,warn для отображения только ошибок и предупреждений.
  • lshw/lspci/lsusb - Список оборудования (необязательные знания).

    • Подробная информация об оборудовании системы.
    • Полезно для проверки совместимости оборудования или драйверов.
  • lsblk - Список блочных устройств (необязательные знания).

    • Отображает устройства хранения и их разделы.
    • -f отображает информацию о файловой системе.
  • sysctl - Настройка параметров ядра во время выполнения (необязательные знания).

    • Просмотр и изменение параметров ядра.
    • -a для просмотра всех параметров.
    • Используется для настройки производительности и поведения системы.

Расширенные инструменты диагностики (необязательные знания)

  • strace - Отслеживание системных вызовов и сигналов.
    • Показ, как процессы взаимодействуют с ядром.
    • -p PID присоединяется к работающему процессу.
    • -e trace=network для фокусировки на сетевых вызовах.
    • Очень полезно для отладки проблем с приложением.
strace -p 1234 -e trace=network  # Отслеживание сетевых операций для PID 1234
  • ltrace - Отслеживание вызовов библиотек.

    • Аналогично strace, но для вызовов библиотек.
    • Полезно при отладке проблем, специфичных для приложения.
  • tcpdump - Запись и анализ сетевых пакетов.

    • -i eth0 запись на определенном интерфейсе.
    • -n не разрешает имена хостов (быстрее).
    • -w file.pcap запись в файл для последующего анализа.
tcpdump -i eth0 -n 'port 80'  # Запись HTTP-трафика на интерфейсе eth0
  • systemd-analyze - Анализ производительности загрузки системы.

    • blame показывает время загрузки по сервису.
    • critical-chain показывает критическую цепочку в процессе загрузки.
    • Помогает оптимизировать время загрузки системы.
  • sar - Сбор, отчет или сохранение информации о системной активности.

    • Часть пакета sysstat.
    • Сбор исторических данных о производительности.
    • -u для процессора, -r для памяти, -b для ввода-вывода и т.д.
0
DevOps Новичок Опубликовано
© Skilio, 2025
Условия использования
Политика конфиденциальности
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.