NetGrid Host

Полезные команды диагностики Linux-сервера — ежедневный набор

Практический копи-пейст-чеклист команд, которыми каждый день пользуется админ Linux VPS: информация о системе, CPU/RAM, диск, сеть, ping, mtr, speedtest, прослушиваемые порты, фаервол, логи, DNS. Команды установки разделены вкладками по дистрибутивам (Ubuntu/Debian, RHEL/Rocky/AlmaLinux/CentOS).

12 мин на чтение·Обновлено 2026-05-03

Каждый раз, когда вы заходите по SSH на Linux VPS после того как что-то пошло не так, вы тянетесь примерно к одной и той же дюжине команд. Эта статья — компактный копи-пейст-чеклист этих команд: что они показывают, когда применять и как поставить то, чего ещё нет. Команды установки сгруппированы во вкладки по семействам дистрибутивов (Ubuntu/Debian сверху по умолчанию, потом RHEL/Rocky/AlmaLinux/CentOS), чтобы не нужно было помнить, какой пакетный менеджер где живёт.

Соглашения в этой статье
По умолчанию мы предполагаем root или sudo на свежем VPS. Большинство диагностических команд работают от обычного пользователя; команды, которым нужен root, явно начинаются с `sudo`. Вкладки дистрибутивов всегда сначала Ubuntu/Debian, затем семейство RHEL (RHEL, Rocky Linux, AlmaLinux, CentOS Stream — у всех одинаковый набор пакетов через dnf).

1. Точно ли вы на той машине?

Звучит глупо, но самый частый Sev-1 — это запуск разрушительной команды на не том сервере. Подтвердите, прежде чем действовать:

hostname              # короткое имя
hostname -f           # FQDN
hostnamectl           # имя + ОС + ядро + виртуализация одной командой
ip -4 addr            # какие IP у этой машины
whoami; id            # кто я и в каких группах
who; w                # кто ещё залогинен прямо сейчас
last | head -10       # недавние логины (отлавливает неожиданные сессии)

2. Информация о системе / ОС

cat /etc/os-release           # дистрибутив + версия
uname -a                      # ядро + архитектура
uptime                        # аптайм + load average (1, 5, 15 мин)
lsb_release -a 2>/dev/null    # может потребоваться: apt install lsb-release
lscpu                         # модель CPU, сокеты, ядра, потоки
nproc                         # количество логических CPU
free -h                       # RAM + swap, по-человечески
lsblk                         # блочные устройства и точки монтирования
df -h                         # использование файловых систем

Сравнивайте load average из `uptime` с `nproc`. Load 4.0 на 4-ядерной машине = полностью занят, но не перегружен; load 12 на 4-ядерной = серьёзная очередь, что-то ждёт CPU.

3. CPU и память в реальном времени

`top` есть везде; `htop` — это то, что вам действительно нужно. Цветной интерактивный вывод, сортируемые колонки, дерево процессов.

sudo apt update && sudo apt install -y htop
htop                   # интерактивный просмотр процессов (q — выйти, F6 — сортировка)
top -c                 # встроенная альтернатива, не нужно ставить
free -h                # быстрый снимок RAM
vmstat 1 5             # 5 семплов CPU/IO/swap с интервалом 1 сек
ps auxf | head -30     # дерево процессов, первые 30
ps -eo pid,user,rss,%mem,%cpu,cmd --sort=-rss | head -10  # топ-10 по RAM

Если что-то долбит машину, `vmstat 1 5` покажет, в чём упёрлось: CPU (колонки `us`/`sy` высоки), IO (`wa` высок) или swap-трэшинг (`si`/`so` ненулевые). Трёх семплов обычно хватает, чтобы увидеть картину.

4. Диск — место, IO, здоровье

df -h                              # свободное место (по-человечески)
df -i                              # свободные inode (отдельно от байтов!)
lsblk -f                           # блочные устройства + ФС + UUID
sudo du -sh /var/log/* | sort -h   # что съедает /var/log
sudo du -sh /* 2>/dev/null | sort -h   # разбивка верхнего уровня /
iostat -xz 1 5                     # IO диска по секундам (нужен sysstat)
sudo lsof +L1                      # удалённые, но открытые файлы (освободят место при kill)

Быстрая проверка последовательной скорости диска (без установки):

# Последовательная запись (создаст файл 1 ГиБ в /tmp, потом удалит):
dd if=/dev/zero of=/tmp/diskbench bs=1M count=1024 oflag=direct status=progress
rm /tmp/diskbench

# Последовательное чтение:
sudo hdparm -Tt /dev/sda    # cached + uncached read (на Debian/Ubuntu предустановлен)

Для нормальных тестов IOPS / смешанной нагрузки ставьте `fio`:

sudo apt install -y fio
# 4K random read+write, 30 секунд, 4 джоба (примерно DB-нагрузка):
fio --name=mix --rw=randrw --rwmixread=70 --bs=4k --size=1G \
    --numjobs=4 --runtime=30 --time_based --group_reporting --direct=1

SMART-данные (на bare-metal; внутри VM обычно недоступны):

sudo apt install -y smartmontools
sudo smartctl -a /dev/sda      # полный SMART-отчёт
sudo smartctl -H /dev/sda      # только статус здоровья (PASSED / FAILED)

5. Сеть — базовая достижимость

Два направления, два вопроса: достучится ли сервер до мира, и достучится ли мир до сервера.

# С сервера наружу:
ping -c 4 8.8.8.8                 # IPv4 + RTT до Google DNS
ping -c 4 -6 2606:4700:4700::1111 # IPv6 до Cloudflare
ping -c 4 your-domain.com         # DNS + RTT одной командой
curl -I https://www.google.com    # HTTPS-достижимость + заголовки
# С вашего ноутбука В СТОРОНУ сервера (запускайте на ноутбуке, не на сервере):
ping <server-ip>
curl -v http://<server-ip>:<port>
Если ping с ноутбука даёт «Request timeout»
Некоторые сети (мобильные, корпоративные, часть публичных Wi-Fi) тихо дропают ICMP. Это не значит что сервер упал — попробуйте TCP-пробу: `nc -vz <server-ip> 22` (скажет «succeeded» если SSH-порт достижим) или просто `curl http://<server-ip>:80`. ICMP и TCP в некоторых фаерволах ходят по разным путям.

6. Сеть — traceroute и MTR

`traceroute` показывает хопы между вами и точкой назначения один раз. `mtr` гоняет traceroute в цикле и показывает packet loss по каждому хопу в реальном времени — гораздо полезнее для диагностики сетевых проблем.

sudo apt install -y mtr-tiny traceroute
traceroute -n 8.8.8.8              # путь без DNS-резолвинга (быстрее)
mtr 8.8.8.8                        # интерактивно (q — выйти)
mtr -rwbzc 100 8.8.8.8             # report mode: 100 пакетов, широкий, ASN+IP

В выводе `mtr` смотрите на колонку Loss%. Loss только на промежуточных хопах при 0% loss в финале = эти роутеры де-приоритизируют ICMP, реальной потери нет. Стабильный loss на финальном хопе или растущий по последним хопам = реальная проблема где-то на пути.

7. Сеть — тесты скорости

Два инструмента, две задачи. `speedtest` (Ookla CLI) меряет до публичного интернета. `iperf3` меряет между двумя своими машинами — полезнее, чтобы понять, где именно узкое место.

Установка Ookla speedtest CLI:

curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt install -y speedtest
speedtest --servers | head -20             # найти сервер в том же городе
speedtest --server-id=<id-рядом-с-ДЦ>      # явный выбор локального сервера
speedtest --format=json | jq '.download.bandwidth'   # машинно-читаемо

Установка iperf3 (на обе машины которые тестируете):

sudo apt install -y iperf3
# На машине A (сервер):
iperf3 -s

# На машине B (клиент):
iperf3 -c <A-ip> -t 30          # 30-секундный тест
iperf3 -c <A-ip> -P 4 -t 30     # 4 параллельных потока (реалистичнее)
iperf3 -c <A-ip> -R             # обратное направление (download)
iperf3 -c <A-ip> -u -b 100M     # UDP-тест, целевые 100 Мбит/с

(Зачем это вообще нужно и что такое результаты speedtest на самом деле — описано в статье про скорость интернета на VPS.)

8. Сеть — кто слушает, кто к кому подключён

ss -tlnp                          # все TCP-листенеры + имена процессов
ss -ulnp                          # все UDP-листенеры
ss -tnp state established         # текущие установленные TCP-соединения
ss -s                             # сводка по сокетам
sudo lsof -iTCP -sTCP:LISTEN -P   # альтернативный вид листенеров без резолва
ss -tnp dport = :443              # соединения на удалённый порт 443

(Глубокое разбирательство «почему мой порт показывается закрытым извне» — в статье про фаервол и порты.)

9. Сеть — правила фаервола

Несколько слоёв фаервола могут работать одновременно. Проверьте все:

# ufw (по умолчанию на Ubuntu/Debian)
sudo ufw status verbose

# firewalld (по умолчанию на RHEL-семействе)
sudo systemctl is-active firewalld
sudo firewall-cmd --list-all

# Всегда смотрите iptables/nftables напрямую — это то, что реально применяет ядро
sudo iptables -L -n -v
sudo ip6tables -L -n -v
sudo nft list ruleset

# Правила Docker (если есть контейнеры)
sudo iptables -L DOCKER -n -v 2>/dev/null
sudo iptables -L DOCKER-USER -n -v 2>/dev/null

10. DNS-запросы

Установка `dig` и компании:

sudo apt install -y dnsutils
dig +short example.com                   # только ответ
dig example.com A                        # с полной записью
dig example.com MX +short                # почтовые серверы
dig example.com NS +short                # авторитативные NS
dig +trace example.com                   # пройти делегирование от корня
dig @8.8.8.8 example.com                 # запрос к конкретному резолверу
host -t A example.com                    # альтернатива
nslookup example.com                     # альтернатива
getent hosts example.com                 # резолвер ОС (то, что видят ваши приложения)
resolvectl status                        # текущее состояние systemd-resolved

11. Процессы и сервисы

ps auxf | head -30                        # дерево процессов
pstree -p                                 # более чистое дерево
pgrep -a nginx                            # PID-ы nginx + cmdline
sudo systemctl status nginx               # статус сервиса + последние логи
sudo systemctl list-units --type=service --state=running   # все запущенные
sudo systemctl --failed                   # сервисы, которые упали
kill -TERM <pid>                          # вежливый kill (даём процессу прибраться)
kill -KILL <pid>                          # жёсткий kill (последняя мера)

12. Логи

Современные системы используют `journalctl` (systemd journal). Старые также пишут текстовые логи в `/var/log/`. Путь к текстовому логу различается по дистрибутивам:

sudo tail -F /var/log/syslog       # основной системный лог
sudo tail -F /var/log/auth.log     # SSH и аутентификация
# journalctl работает одинаково на любом современном дистрибутиве:
sudo journalctl -xe                       # самые свежие записи + объяснения, к концу
sudo journalctl -u nginx --since '1 hour ago'
sudo journalctl -u nginx -f               # follow live (как tail -f)
sudo journalctl -k -p err                 # ошибки уровня ядра
sudo journalctl --disk-usage              # сколько места ест journal
sudo dmesg --time-format=iso | tail -50   # ring buffer ядра (драйверы, OOM kill)

13. Время и NTP

date                                      # текущее локальное время
timedatectl                               # статус + часовой пояс + NTP-синхронизация
chronyc tracking 2>/dev/null              # если NTP-демон chrony
ntpq -p 2>/dev/null                       # если NTP-демон ntpd
sudo timedatectl set-timezone Europe/Berlin   # смена часового пояса

Дрейф времени ломает TLS, ломает Kerberos, ломает распределённые БД. Проверьте это, если у вас странные ошибки «certificate not yet valid» или «clock skew».

14. Быстрая health-сводка — один блок для копи-паста

Когда вы заходите по SSH на машину, которую впервые видите, вот что мы обычно вставляем первым делом, чтобы за 30 секунд сориентироваться:

echo '== HOST =='; hostnamectl
echo; echo '== UPTIME / LOAD =='; uptime
echo; echo '== CPU =='; lscpu | grep -E 'Model name|^CPU\(s\)|MHz'
echo; echo '== RAM =='; free -h
echo; echo '== DISK =='; df -h --output=target,size,used,avail,pcent | grep -v tmpfs
echo; echo '== LISTENERS =='; sudo ss -tlnp
echo; echo '== FAILED SERVICES =='; sudo systemctl --failed --no-legend
echo; echo '== LAST 10 LOGINS =='; last -n 10

Смежно: если расследование указывает на сеть или порты, отдельные статьи — открытые порты и фаерволы, скорость интернета на VPS, как устроен общий порт 1 Гбит/с в VPS, почему ваш VPS может «показывать» не ту страну.

Итого
Не нужно держать в голове весь инструментарий. Чеклист выше покрывает 90% реальной ежедневной работы с Linux VPS — обзор системы, CPU/RAM, диск, сеть, фаервол, логи. Сохраните страницу в закладки; команды установки во вкладках сверху каждого раздела уже учитывают и Debian-семейство, и RHEL-семейство — так что одна и та же статья работает на любом Linux VPS из нашего ассортимента.

NetGrid Host

VPS от€1.99в месяц

Безлимитный трафик, порт 1 Гбит/с и NVMe-хранилище. 12 локаций в Европе и США.

Безлимитный трафик·Порт 1 Гбит/с·12 локаций