Linux: сведения о системе, окружение, время и журналы
Версия системы и ядра, железо, переменные окружения, история команд, дата и время, журнал ядра
Система и ядро
| Команда | Вариант | Что делает |
| uname -a | uname -a | Всё сразу: имя хоста, версия ядра, архитектура. |
| uname -r | uname -r | Только версия ядра. |
| uname -m | uname -m | Архитектура процессора (x86_64, aarch64). |
| cat /etc/os-release | cat /etc/os-release | Название и версия дистрибутива. |
| lsb_release | lsb_release -a | Версия дистрибутива (если установлен пакет lsb-release). |
| hostnamectl | hostnamectl | Имя, ОС, ядро, виртуализация, тип шасси. |
| uptime | uptime -p | Время работы в читаемом виде. |
| who -b | who -b | Время последней загрузки. |
| systemd-detect-virt | systemd-detect-virt | Работает ли система в виртуальной машине или контейнере. |
| getconf | getconf PAGESIZE ; getconf LONG_BIT | Системные константы (размер страницы, разрядность). |
Железо
| Команда | Вариант | Что делает |
| lscpu | lscpu | Процессор: ядра, потоки, частоты, кеши. |
| nproc | nproc | Количество доступных ядер (удобно для make -j$(nproc)). |
| free -h | free -h | Оперативная память и swap. |
| cat /proc/meminfo | grep -E "MemTotal|MemAvailable" /proc/meminfo | Подробная статистика памяти. |
| lspci | lspci | grep -i ethernet | PCI-устройства: сетевые карты, видео, контроллеры. |
| lsusb | lsusb -t | USB-устройства в виде дерева. |
| dmidecode | sudo dmidecode -t memory | Данные BIOS и DIMM-модули (нужен root). |
| sensors | sensors | Температуры и напряжения (пакет lm-sensors). |
| lshw | sudo lshw -short | Краткая сводка всего оборудования. |
| vmstat | vmstat 2 5 | Загрузка процессора, памяти и ввода-вывода каждые 2 секунды, 5 раз. |
| iostat | iostat -xz 2 3 | Нагрузка на диски (пакет sysstat). |
| iotop | sudo iotop -o | Процессы, которые сейчас пишут и читают диск. |
Модули ядра и dmesg
| Команда | Вариант | Что делает |
| lsmod | lsmod | grep kvm | Загруженные модули ядра. |
| modinfo | modinfo ext4 | Описание модуля и его параметры. |
| modprobe | sudo modprobe br_netfilter | Загрузить модуль (с зависимостями). |
| modprobe -r | sudo modprobe -r floppy | Выгрузить модуль. |
| sysctl | sysctl net.ipv4.ip_forward | Текущее значение параметра ядра. |
| sysctl -w | sudo sysctl -w net.ipv4.ip_forward=1 | Изменить на время работы. |
| sysctl --system | sudo sysctl --system | Применить все файлы из /etc/sysctl.d/. |
| dmesg -T | sudo dmesg -T | tail -n 50 | Журнал ядра с человеческим временем. |
| dmesg -l | sudo dmesg -l err,warn | Только ошибки и предупреждения. |
| dmesg -w | sudo dmesg -w | Следить за новыми сообщениями ядра. |
Переменные окружения и оболочка
| Команда | Вариант | Что делает |
| env | env | sort | Все переменные окружения, по алфавиту. |
| printenv | printenv PATH | Значение конкретной переменной. |
| echo $VAR | echo "$HOME $USER $SHELL" | Вывести значение переменной (кавычки защищают от разбивки). |
| export | export APP_ENV=prod | Задать переменную для текущей сессии и её дочерних процессов. |
| VAR=value cmd | LANG=C sort file | Переменная только для одной команды. |
| unset | unset APP_ENV | Удалить переменную. |
| set | set | grep ^PS1 | Все переменные оболочки, включая локальные. |
| $? | grep -q root /etc/passwd; echo $? | Код возврата последней команды (0 — успех). |
| $! | sleep 10 & echo $! | PID последнего фонового процесса. |
| $$ | echo $$ | PID текущей оболочки. |
| which | which -a python3 | Путь к исполняемому файлу в PATH (все совпадения с -a). |
| whereis | whereis nginx | Бинарник, исходники и man-страницы. |
| type | type ll | Что такое команда: алиас, функция, встроенная или бинарник. |
| source | source ~/.bashrc | Перечитать файл настроек в текущей сессии. |
| alias | alias ll='ls -lah' | Короткое имя для команды. |
| unalias | unalias ll | Убрать алиас. |
| PATH= | export PATH="$HOME/bin:$PATH" | Добавить папку в начало поиска команд. |
История команд
| Команда | Вариант | Что делает |
| history | history | tail -n 30 | Последние 30 команд с номерами. |
| history | grep | history | grep docker | Поиск по истории. |
| !n | !245 | Повторить команду с номером 245. |
| !string | !ssh | Повторить последнюю команду, начинающуюся с ssh. |
| !! | sudo !! | Повторить предыдущую команду с sudo. |
| !$ | cp conf.yml !$.bak | Последний аргумент предыдущей команды. |
| history -c | history -c | Очистить историю текущей сессии. |
| HISTCONTROL | export HISTCONTROL=ignoreboth | Не сохранять команды с пробела и повторы. |
| Ctrl+R | Ctrl+R | Поиск по истории в реальном времени. |
Дата, время и календарь
| Команда | Вариант | Что делает |
| date | date | Текущие дата и время. |
| date +%F | date +%F_%H-%M | Формат для имён файлов. |
| date -u | date -u | Время UTC. |
| date -d | date -d "2 days ago" +%F | Относительная дата. |
| date -d @ | date -d @1700000000 | Перевод Unix-времени в дату. |
| timedatectl | timedatectl status | Часовой пояс, синхронизация NTP. |
| timedatectl set | sudo timedatectl set-timezone Europe/Moscow | Сменить часовой пояс. |
| timedatectl ntp | sudo timedatectl set-ntp true | Включить синхронизацию времени. |
| cal | cal -3 | Календарь на три месяца. |
| time | time ./job.sh | Замерить время выполнения команды. |
| sleep | sleep 30 | Пауза. |
| watch | watch -n 2 'df -h /' | Повторять команду каждые 2 секунды. |
Пользователи в системе и загрузка
| Команда | Вариант | Что делает |
| w | w | Кто в системе и что делает, средняя нагрузка. |
| top -bn1 | top -bn1 | head -15 | Снимок загрузки без интерактивного режима. |
| loadavg | cat /proc/loadavg | Средняя нагрузка за 1, 5 и 15 минут. |
| journalctl --list-boots | journalctl --list-boots | Список загрузок, для анализа падений. |
| last reboot | last reboot | head -5 | История перезагрузок. |
Перенаправление и вывод
| Команда | Вариант | Что делает |
| > | cmd > out.txt | Вывод в файл с перезаписью. |
| >> | cmd >> out.txt | Дописать в конец файла. |
| 2> | cmd 2> errors.txt | Только ошибки (stderr) в файл. |
| 2>&1 | cmd > all.log 2>&1 | Ошибки и вывод в один файл. |
| &> | cmd &> all.log | То же, короткая запись в bash. |
| /dev/null | cmd > /dev/null 2>&1 | Выбросить вывод. |
| < | sort < names.txt | Взять ввод из файла. |
| <<EOF | cat <<EOF > conf.txt ... | Многострочный ввод прямо в команде (heredoc). |
| | | ps aux | grep nginx | Передать вывод в другую команду. |
| >( | diff <(sort a) <(sort b) | Подстановка процесса: вывод как файл. |
Пример: быстрый отчёт о сервере
echo "== Система =="; hostnamectl | head -6
echo "== Ядро =="; uname -r
echo "== Память =="; free -h | head -2
echo "== Диски =="; df -hT -x tmpfs -x devtmpfs
echo "== Нагрузка =="; uptime
echo "== Упавшие службы =="; systemctl --failed --no-pager
echo "== Ошибки ядра за сутки =="; sudo journalctl -k -p err --since "24 hours ago" --no-pager | tail -n 20
Переменные окружения с паролями и токенами нельзя передавать в командной строке: они видны в ps aux и в истории. Используйте файлы с ограниченными правами (chmod 600) или менеджер секретов. Команда history -c не удаляет уже записанный файл истории, для этого существует ~/.bash_history.
Чтобы не потерять полезные команды, добавьте в ~/.bashrc строку shopt -s histappend. Тогда история дописывается в файл, а не перезаписывается при закрытии каждой сессии.