Какие команды 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
для ввода-вывода и т.д.