linux
133 commands
133 shown
Найти большие файлы
Найти файлы больше 100MB отсортированные по размеру
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20
Использование диска по директориям
15 самых больших директорий верхнего уровня
du -sh /* 2>/dev/null | sort -rh | head -15
Открытые порты
TCP listening порты с PID и именем процесса (современный netstat)
ss -tlnp
Найти процесс по порту
Какой процесс слушает конкретный порт
ss -tlnp | grep :<port>
CPU по процессам
15 процессов с наибольшим потреблением CPU
ps aux --sort=-%cpu | head -15
Память по процессам
15 процессов с наибольшим потреблением памяти
ps aux --sort=-%mem | head -15
Логи systemd сервиса
Стриминг логов systemd unit за последние 10 минут
journalctl -u <service> -f --since '10 minutes ago'
Статус systemd сервиса
Статус сервиса, последние строки логов, активные таймеры
systemctl status <service> --no-pager -l
Захват трафика на интерфейсе
Захватить конкретный трафик в pcap файл
tcpdump -i eth0 -nn host <ip> and port 80 -w /tmp/capture.pcap
Использование inode
Использование inode по файловым системам; может вызвать 'no space' без полного диска
df -i | sort -k5 -rn
Открытые файлы процесса
Все файлы, сокеты, соединения открытые процессом
lsof -p <pid>
Watch вывода команды
Повторять команду каждые 2 секунды с подсветкой изменений
watch -n 2 'kubectl get pods -n <ns>'
Запустить в фоне
Запустить скрипт без привязки к терминалу; вывод в файл
nohup ./script.sh > /tmp/out.log 2>&1 &
SSH туннель
Пробросить локальный порт 8080 на внутренний хост через bastion
ssh -L 8080:internal-service:80 user@bastion -N -f
Распаковать tar.gz
Распаковать gz-архив tar в конкретную директорию
tar -xzf archive.tar.gz -C /target/dir/
Сгенерировать случайный пароль
Криптографически стойкий случайный пароль 32 байта
openssl rand -base64 32
Детали TLS сертификата
Дата истечения и subject сертификата живого TLS endpoint
openssl s_client -connect example.com:443 </dev/null 2>/dev/null | openssl x509 -noout -dates -subject
Awk — сумма колонки
Сумма 3-й колонки файла с разделением пробелами
awk '{sum += $3} END {print sum}' file.txt
Sed — замена в файле
Глобальная замена строки в файле на месте
sed -i 's/old-string/new-string/g' file.txt
Сортировка и дедупликация
Подсчёт и ранжирование дублирующихся строк в файле
sort file.txt | uniq -c | sort -rn | head -20
Список блочных устройств
Дерево дисков, разделов, loop-устройств с типом ФС
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID
UUID блочных устройств
UUID, метка и тип ФС для всех блочных устройств
blkid
Примонтировать раздел
Примонтировать ext4 раздел в /mnt/data
mount -t ext4 /dev/sdb1 /mnt/data
Все точки монтирования
Все реальные смонтированные ФС в виде дерева
findmnt --real
Перемонтировать ФС на запись
Перемонтировать корневую ФС в режиме чтения-записи (напр. после rescue)
mount -o remount,rw /
Проверка целостности ФС
Проверка ФС без изменений; для реального исправления сначала отмонтировать
fsck -n /dev/sdb1
Создать ext4 раздел
Форматировать раздел в ext4 с меткой
mkfs.ext4 -L datalabel /dev/sdb1
Расширить ext4 раздел
Расширить ext4 до размера раздела (после изменения раздела)
resize2fs /dev/sdb1
Информация о ФС
Метаданные ext2/3/4: размер блока, счётчик монтирований, время
tune2fs -l /dev/sda1 | grep -E 'Block (count|size)|Mount count|Last mount'
Использование диска по глубине
Использование диска /var на 2 уровня вглубь
du -h --max-depth=2 /var | sort -rh | head -20
Свободное место на дисках
Место только на реальных ФС, без tmpfs/overlay
df -hT --type=ext4 --type=xfs --type=btrfs
Редактор разделов
Интерактивный редактор таблицы разделов MBR/GPT
fdisk /dev/sdb
Разметка GPT через parted
Создать один GPT раздел на весь диск
parted /dev/sdb -- mklabel gpt mkpart primary ext4 1MiB 100%
Физические тома LVM
Физические тома LVM с использованием места
pvs && pvdisplay
Группы томов LVM
Группы томов LVM со свободными PE
vgs && vgdisplay
Логические тома LVM
Список логических томов с путями к устройствам
lvs -o +devices
Расширить LV и ФС
Расширить LVM логический том на 10G и увеличить ext4 ФС онлайн
lvextend -L +10G /dev/vg0/lv_data && resize2fs /dev/vg0/lv_data
Создать swap-файл
Выделить 2G swap-файл, права, форматировать и включить
fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
Использование swap
Активные swap-пространства и общая статистика памяти
swapon --show && free -h
Все IP-адреса
Краткий список всех интерфейсов с IP
ip -br a
Таблица маршрутизации
Все правила маршрутизации включая policy routes
ip route show table all
Добавить статический маршрут
Добавить статический маршрут (до перезагрузки)
ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0
ARP/NDP таблица
Кэш соседей (ARP/NDP) с состоянием доступности
ip neigh show
Статистика сетевого интерфейса
TX/RX байты, ошибки, дропы интерфейса
ip -s link show eth0
DNS-запрос
Запрос A-записей через конкретный DNS-сервер
dig +short A example.com @8.8.8.8
Обратный DNS-запрос
PTR-запись для IP-адреса
dig +short -x 8.8.8.8
Трассировка делегирования DNS
Полная цепочка разрешения DNS от корневых серверов
dig +trace example.com
Установленные TCP-соединения
Все установленные TCP соединения с инфо о процессе
ss -tnp state established
Подсчёт соединений по состояниям
Количество соединений в каждом состоянии TCP
ss -tan | awk 'NR>1{print $1}' | sort | uniq -c | sort -rn
Трассировка с MTU discovery
Traceroute + ping в TCP-режиме для обхода блокировки ICMP
mtr --report --tcp --port 443 example.com
Тест MTU пути
Пинг с DF-битом 1500 байт для обнаружения MTU проблем
ping -M do -s 1472 -c 3 8.8.8.8
Правила iptables
Все правила filter table со счётчиками пакетов и номерами строк
iptables -L -n -v --line-numbers
Правила nftables
Полный ruleset nftables в читаемом виде
nft list ruleset
Пропускная способность сети
Измерить TCP-пропускную способность: 4 потока, 10 секунд
iperf3 -c <server_ip> -t 10 -P 4
Мониторинг сетевого трафика
Трафик в реальном времени по соединениям на интерфейсе
iftop -i eth0 -n
Версия ядра
Версия ядра и полная информация о системе
uname -r && uname -a
Кольцевой буфер ядра
Последние 50 ошибок/предупреждений ядра с читаемыми временными метками
dmesg -T --level=err,warn | tail -50
Загруженные модули ядра
Все загруженные в данный момент модули ядра
lsmod | sort
Загрузить модуль ядра
Загрузить модуль с зависимостями и проверить
modprobe <module> && lsmod | grep <module>
Информация о модуле
Параметры, версия, лицензия и зависимости модуля
modinfo <module>
Параметры ядра (sysctl)
Список всех параметров ядра; фильтрация по имени
sysctl -a | grep vm.swappiness
Применить параметр sysctl
Включить IP-форвардинг немедленно (также добавьте в /etc/sysctl.d/)
sysctl -w net.ipv4.ip_forward=1
Параметры загрузки ядра
Параметры, переданные ядру при загрузке
cat /proc/cmdline
Открытые дескрипторы системно
Выделенные FD, свободные FD и системный максимум
cat /proc/sys/fs/file-nr
IO-ожидание и пропускная способность
Расширенная статистика дисков каждые 2с, 5 итераций; смотреть %iowait, await
iostat -xz 2 5
Статистика виртуальной памяти
CPU, память, swap, IO статистика системы в секунду
vmstat 1 5
IO по процессам
Накопленное дисковое чтение/запись по процессам (нужен root)
iotop -ao
Отчёт активности системы
CPU, память, диск через sysstat (5 проб, 1с интервал)
sar -u -r -d 1 5
Системные вызовы процесса
Перехватить сетевые и файловые системные вызовы процесса
strace -f -e trace=network,file -p <pid>
Счётчики производительности CPU
Аппаратные счётчики CPU за 5 секунд
perf stat -e cycles,instructions,cache-misses -- sleep 5
Информация о CPU
Модель CPU, топология сокеты/ядра/потоки, частота
lscpu | grep -E 'Model|Socket|Core|Thread|MHz'
Слоты памяти (DIMM)
Физические слоты DIMM: размер, скорость, тип (нужен root)
dmidecode -t memory | grep -E 'Size|Speed|Locator|Type:'
PCI-устройства
Сетевые карты, GPU, NVMe контроллеры с информацией о драйвере
lspci -v | grep -A5 'VGA\|Ethernet\|NVMe'
Сделать файл неизменяемым
Запретить изменение файла любым пользователем включая root
chattr +i /etc/resolv.conf && lsattr /etc/resolv.conf
Расширенные атрибуты файла
Расширенные атрибуты файлов в /etc/ (не по умолчанию)
lsattr -R /etc/ 2>/dev/null | grep -v '^\-\-\-\-'
ACL: просмотр прав
POSIX ACL: владелец, группа и дополнительные права пользователей
getfacl /srv/shared
ACL: выдать права пользователю
Выдать alice полный доступ без изменения групп-владельца
setfacl -m u:alice:rwx /srv/shared
Найти SUID/SGID бинарники
Найти setuid/setgid исполняемые файлы (аудит безопасности)
find / -perm /6000 -type f -ls 2>/dev/null
Найти процесс по имени
Список PID и полных командных строк по имени процесса
pgrep -la nginx
Убить дерево процессов
Отправить SIGTERM всей группе процессов
kill -TERM -$(pgrep -f 'my-app')
Изменить приоритет процесса
Понизить приоритет (nice +10) работающего процесса
renice -n 10 -p <pid>
Ограничить ресурсы процесса
Запустить команду в временном scope systemd с лимитами ресурсов
systemd-run --scope -p MemoryMax=512M -p CPUQuota=50% -- ./heavy.sh
Логи journald за период
Логи nginx между двумя временными метками
journalctl --since '2024-01-15 10:00' --until '2024-01-15 10:30' -u nginx
Экспорт журнала в JSON
Структурированный экспорт логов для отправки в агрегаторы
journalctl -u <service> -o json | jq '{ts: .REALTIME_TIMESTAMP, msg: .MESSAGE}'
Статус синхронизации NTP
Состояние синхронизации, смещение и источник NTP
timedatectl status && chronyc tracking
Системные таймеры systemd
Все таймеры с временем последнего и следующего срабатывания
systemctl list-timers --all --no-pager
Скопировать SSH-ключ
Добавить публичный ключ в authorized_keys на удалённом хосте
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
Rsync с прогрессом
Синхронизировать директорию на удалённый хост с удалением лишних файлов
rsync -avz --progress --delete src/ user@host:/dest/
Безопасное затирание диска
Затереть диск нулями с проверкой (для NVMe используйте hdparm ATA secure erase)
shred -vzn 1 /dev/sdb
SMART-здоровье диска
Общее состояние SMART и ключевые показатели отказа
smartctl -a /dev/sda | grep -E 'SMART overall|Reallocated|Pending|Uncorrectable'
Тест последовательного IO диска
Запись 1GB с принудительной синхронизацией для измерения скорости
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 conv=fdatasync
Неймспейсы процессов
Список Linux-неймспейсов для сети, PID и монтирования
lsns -t net,pid,mnt
Иерархия cgroups
Дерево cgroup-иерархии systemd с назначенными ресурсами
systemd-cgls
Подсчёт строк во всех логах
Найти самые большие лог-файлы по числу строк
find /var/log -name '*.log' -exec wc -l {} + | sort -rn | head -20
Следить за несколькими лог-файлами
Стриминг нескольких лог-файлов вперемешку в одном терминале
tail -f /var/log/syslog /var/log/auth.log
Поиск в сжатых логах
grep внутри .gz файлов без распаковки
zgrep -i 'error' /var/log/syslog.*.gz
Принудительная ротация логов
Принудительная ротация логов вне расписания
logrotate -f /etc/logrotate.conf
Все cron-задачи в системе
Вывести активные cron-задачи для каждого пользователя
for u in $(cut -f1 -d: /etc/passwd); do crontab -l -u $u 2>/dev/null | grep -v '^#' | sed "s|^|$u: |"; done
Проверить cron-выражение
Разобрать cron-выражение и показать следующие 5 запусков
systemd-analyze calendar '*/5 * * * *'
Перенаправить stderr в файл
Разделить stdout и stderr в разные файлы
command > /tmp/out.log 2> /tmp/err.log
Захватить оба потока
Вывод stdout+stderr в файл и экран одновременно
command 2>&1 | tee /tmp/all.log
Замена строки в файлах рекурсивно
Найти файлы с текстом и заменить его на месте
grep -rl 'old_string' /etc/ | xargs sed -i 's/old_string/new_string/g'
Вывести столбцы через awk
Напечатать 1-й и 3-й столбцы из файла
awk '{print $1, $3}' /etc/passwd
Сумма столбца через awk
Просуммировать значения второго столбца в файле
awk '{sum += $2} END {print sum}' file.txt
Удалить строки по шаблону
Удалить все строки-комментарии начинающиеся с #
sed -i '/^#/d' config.conf
Многострочная замена через sed
Напечатать блок текста между метками START и END
sed -n '/START/,/END/p' file.txt
Уникальные отсортированные значения
Подсчитать вхождения каждой уникальной строки
sort file.txt | uniq -c | sort -rn
Кто залогинен в системе
Активные сессии пользователей и что они выполняют
who -H && w
Последние входы в систему
Последние 20 записей о входах с IP и длительностью
last -n 20 | head -25
Неудачные попытки входа
Топ IP с неудачными попытками входа по SSH за 24 часа
journalctl -u ssh --since '24h ago' | grep 'Failed password' | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10
Проверить sudo-доступ
Список sudo-правил для конкретного пользователя
sudo -l -U <username>
Добавить пользователя в группу
Добавить пользователя в несколько групп без удаления текущих
usermod -aG docker,sudo alice
Карта памяти процесса
Суммарный виртуальный размер процесса из smaps
cat /proc/<pid>/smaps | awk '/^Size/{sum+=$2} END{print sum/1024" MB"}'
Статус огромных страниц памяти
Проверить THP и hugepages — использование и конфигурацию
grep -E 'HugePages|AnonHugePages|Transparent' /proc/meminfo
Отключить THP
Отключить THP в рантайме (лечит задержки Redis, MongoDB)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
NUMA-топология
NUMA-узлы, привязка CPU и распределение памяти
numactl --hardware
Тюнинг TCP: backlog
Увеличить listen backlog для высоконагруженных сервисов
sysctl -w net.core.somaxconn=65535 net.ipv4.tcp_max_syn_backlog=65535
Тюнинг TCP: включить BBR
Включить контроль перегрузки BBR от Google для лучшей пропускной способности
sysctl -w net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
Открытые UDP-сокеты
Все UDP listening-сокеты с информацией о процессах
ss -ulnp
Привязать процесс к ядрам
Привязать процесс к определённым ядрам CPU
taskset -cp 0,1 <pid>
Аппаратные прерывания
Счётчики прерываний по CPU, обновление каждую секунду
watch -n1 'cat /proc/interrupts | head -30'
Лимиты процесса
Жёсткие и мягкие лимиты ресурсов для работающего процесса
cat /proc/<pid>/limits
Увеличить лимит файловых дескрипторов
Установить высокий лимит FD для сессии и сохранить постоянно
ulimit -n 1048576 && echo '* soft nofile 1048576
* hard nofile 1048576' >> /etc/security/limits.conf
Показать использование inode
Показать использование inode на файловых системах (важно при многих мелких файлах)
df -i
Найти большие файлы
Найти файлы больше 100МБ на всей файловой системе
find / -type f -size +100M 2>/dev/null | sort
Показать открытые файловые дескрипторы
Подсчитать открытые файловые дескрипторы для запущенного процесса
cat /proc/$(pgrep myapp)/fd | wc -l
Проверить статус SELinux
Показать текущий режим SELinux
getenforce
Список системных cron-задач
Показать все расположения системных и пользовательских cron-задач
ls /etc/cron.* /var/spool/cron/crontabs/
Показать переменные окружения
Показать все переменные окружения в алфавитном порядке
printenv | sort
Мониторинг дискового I/O
Показывать расширённую статистику дискового I/O каждую секунду
iostat -xz 1
Показать дерево процессов
Показать иерархию процессов с PID
pstree -p
Тюнинг TCP — backlog
Увеличить максимальный backlog для сокетов
sysctl -w net.core.somaxconn=65535
Информация о процессоре
Показать архитектуру CPU и количество ядер
lscpu
no commands match