Получение информации о компьютере на UNIX


В данной статье пойдет речь о способах сбора сведений об оборудовании компьютера, который находится под управлением операционных систем семейства UNIX, такие как Linux и BSD. Также, будет немного затронута тема получения системной информации и замера скорости и активности. Действия будут выполняться из командной строки без графической оболочки — их можно выполнить, подключившись к компьютеру удаленно по SSH.
Сведения о процессоре
Оперативная память
Материнская плата
Информация о HDD
Сетевые адаптеры
Сбор всех сведений
Информация о системе
Программы для тестирования
Информация о процессоре
Команды для получения данных о процессоре.
1. lscpu (Linux)
Команда показывает информацию о характеристиках процессора в удобном виде:
lscpu
Пример ответа:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
Stepping: 4
CPU MHz: 2592.918
BogoMIPS: 5187.50
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0-7
* больше всего нас интересует:
- Architecture — архитектура процессора — 32 бит или 64.
- Core(s) per socket — количество ядер на процессор.
- Socket(s) — количество физических/виртуальных процессоров.
- CPU(s) — суммарное количество процессорных ядер.
- Model name — модель процессора.
2. sysctl -a (FreeBSD)
Команда отображает множество данных, поэтому добавляем фильтр:
sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
Пример ответа:
hw.model: Intel(R) Xeon(R) CPU X5690 @ 3.47GHz
hw.machine: amd64
hw.ncpu: 2
* на самом деле, команда sysctl работает и в Linux, но формат вывода менее удобен, по сравнению с вышерассмотренной lscpu.
3. Файл /proc/cpuinfo (Linux)
Позволяет увидеть подробную информацию по каждому ядру:
cat /proc/cpuinfo
Команда для подсчета количества ядер:
cat /proc/cpuinfo | grep processor | wc -l
4. Температура процессора
Linux
Сначала необходимо установить утилиту.
На CentOS (RPM):
yum install lm_sensors
Ubuntu (Deb):
apt install lm-sensors
После установки утилиты выполняем:
sensors-detect
sensors
FreeBSD
Загружаем необходимый модуль:
kldload coretemp
* для автоматической его загрузки добавляем в файл /boot/loader.conf строку coretemp_load="YES"
Вводим команду:
sysctl -a | grep temperature
Пример ответа:
dev.cpu.0.temperature: 40.0C
dev.cpu.1.temperature: 41.0C
Информация об оперативной памяти
1. Файл /proc/meminfo (Linux)
Команда:
cat /proc/meminfo
Пример ответа:
MemTotal: 8010284 kB
MemFree: 1058580 kB
MemAvailable: 2791616 kB
Buffers: 1884 kB
Cached: 1754092 kB
SwapCached: 122280 kB
Active: 4330296 kB
Inactive: 2006792 kB
Active(anon): 3623768 kB
Inactive(anon): 983120 kB
Active(file): 706528 kB
Inactive(file): 1023672 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 597684 kB
Dirty: 20 kB
Writeback: 0 kB
AnonPages: 4466532 kB
Mapped: 92808 kB
Shmem: 25776 kB
Slab: 408732 kB
SReclaimable: 308820 kB
SUnreclaim: 99912 kB
KernelStack: 7312 kB
PageTables: 23276 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 5053712 kB
Committed_AS: 3770324 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 159328 kB
VmallocChunk: 34359341052 kB
HardwareCorrupted: 0 kB
AnonHugePages: 3248128 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 257984 kB
DirectMap2M: 8130560 kB
* чаще всего, самое важное:
- MemTotal — общий объем оперативной памяти.
- MemFree — объем памяти, который не используется системой.
- Buffers — память, которая в данным момент ожидает записи на диск.
- Cached — объем, задействованный под кэш чтения с диска.
- MemAvailable — объем памяти, доступной в распределители без необходимости обмена.
- SwapTotal — объем файла подкачки.
- SwapFree — свободный объем файла подкачки.
* Объем используемой памяти = MemTotal – MemFree - Cached - Buffers.
Для перевода килобайт в гигабайты можно воспользоваться онлайн калькулятором.
2. free (Linux)
Данная команда позволяет получить информацию об использовании памяти в удобной таблице. Для еще большего удобства, мы выведем ее с помощью дополнительного параметра -h:
free -m
Пример ответа:
total used free shared buff/cache available
Mem: 3,7G 568M 378M 193M 2,8G 2,6G
Swap: 4,0G 94M 3,9G
3. sysctl (FreeBSD)
sysctl hw.physmem
Пример ответа:
hw.physmem: 2123677696
4. dmesg
Работает на BSD и Linux:
dmesg | grep memory
Итог:
real memory = 2147483648 (2048 MB)
avail memory = 2042109952 (1947 MB)
5. Другие команды
Для получения информации по оперативной памяти также можно использовать команды:
vmstat -s
top
htop
* для htop необходима установка одноименной утилиты.
Информация о материнской плате
1. Узнать производителя и модель:
dmidecode -t baseboard
2. Подробная информация:
dmidecode
Информация о дисковом носителе
1. df
Команда выдает информацию о подмонтированных разделах и объемах, занимаемых ими:
df -h
Пример ответа:
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/sys-root 25G 11G 15G 41% /
devtmpfs 1,9G 0 1,9G 0% /dev
tmpfs 1,9G 4,0K 1,9G 1% /dev/shm
tmpfs 1,9G 193M 1,7G 11% /run
tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
/dev/sda1 1014M 186M 829M 19% /boot
2. fdisk
Подробная информация о диске и его разделах:
fdisk /dev/sda -l
Ответ:
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d5e55
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 62914559 30407680 8e Linux LVM
3. iotop
Команда позволяем увидеть загруженность дисковой системы. Утилиты может не быть в системе — сначала ее нужно установить.
а) на Ubuntu / Debian:
apt install iotop
б) на CentOS / Red Hat / Rocky Linux:
yum install iotop
После установки утилита запускается командой:
iotop
Вывод похож на top:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --swi...
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
1542 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bioset]
...
4. smartmontools
Утилита позволяет получить SMART дисковых накопителей. По умолчанию, она не установлена — установка выполняется из репозитория.
а) на Ubuntu / Debian:
apt install smartmontools
б) на CentOS / Red Hat / Rocky Linux:
yum install smartmontools
После установки можно использовать:
smartctl -a /dev/sda
* в данном примере мы увидим полный тест для диска sda.
Список устройств с дисковыми накопителями можно посмотреть командой:
lsblk
Если нам нужно посмотреть только общее состояние здоровья, то используем опцию H:
smartctl -H /dev/sda
Если мы хотим получить информацию по всем дискам, вводим команды по очереди для каждого или:
find /dev -name 'sd[a-z]' -exec smartctl -a {} \;
5. Замер скорости чтения и записи.
Для данных замеров нужно использовать разные утилиты — hdparm (чтение) и dd (запись).
hdparm
Позволяет произвести замер скорости чтения. По умолчанию, отсутствует в системе и требуется установка.
а) на Ubuntu / Debian:
apt install hdparm
б) на CentOS / Red Hat / Rocky Linux:
yum install hdparm
После установки утилиты, можно начать замер скорости.
Выполняем команду:
hdparm -tT /dev/sda
* в данном примере мы замерим скорость чтения диска /dev/sda. Чтобы посмотреть в вашей системе список дисков, используем команду:
lsblk
Мы увидим что-то на подобие:
/dev/sda:
Timing cached reads: 9614 MB in 2.00 seconds = 4809.90 MB/sec
Timing buffered disk reads: 1006 MB in 3.00 seconds = 334.82 MB/sec
dd
С замером скорости записи все немного проще. Утилита является встроенной.
Выполняем команду:
dd if=/dev/zero of=/tmp/output bs=8k count=1000k; rm -f /tmp/output
* в данном примере мы выполним запись около 8 Гб данных во временный файл /tmp/output. После удалим его.
Прежде чем выполнять данную команду, необходимо убедиться, что у нас достаточно места на диске.
6. Проверка блоков
Выполнить полную проверку диска на наличие испорченных кластеров можно с помощью команды badblocks.
Синтаксис:
badblocks -v <путь до диска, который нужно проверить> > <файл, куда сохранить отчет>
Например:
badblocks -v /dev/sda > /tmp/bad-blocks.txt
* в нашем примере будет выполнена проверка диска /dev/sda. Информация с результатом будет сохранена в файле /tmp/bad-blocks.txt.
Сетевые интерфейсы
Рассмотрим несколько команд по работе с сетевыми интерфейсами.
1. lspci
Самая простая команда. Она не покажет подробностей, но позволит увидеть модели сетевых адаптеров и не требует установки дополнительных пакетов:
lspci | grep -i "net"
2. ip
Данная команда покажет не только физические интерфейсы, но и логические, а также MAC-адреса и назначенные им IP-адреса:
ip address
Для вывода в компактном виде без IP-адресов:
ip link
3. ethtool
Утилита покажет более подробную информацию по сетевому адаптеру. Для начала ее необходимо установить.
а) На DEB-дистрибутив:
apt install ethtool
б) На RPM:
yum install ethtool
Теперь можно вводить:
ethtool eth0
* где eth0 — сетевой интерфейс, информацию о котором нужно посмотреть. Список данных интерфейсов мы можем посмотреть вышеописанной командной ip link.
4. Сетевая активность
Для измерения нагрузки на сеть необходимо установить утилиту nload.
а) На DEB-дистрибутив:
apt install nload
б) На RPM:
yum install nload
После установки, запускаем утилиту командой:
nload -ni eth0
* в данном примере будет запущена статистика для использования сетевого интерфейса eth0.
Сбор полной информации о конфигурации компьютера
Если говорить об аналогах таких программ, как AIDA или Speccy в Linux можно воспользоваться утилитой lshw. Для некоторых дистрибутивов ее нужно сначала установить, например:
yum install lshw
* установка в системах на основе Red Hat.
Информацию получаем вводом простой команды:
lshw
Или в более удобном и читаемом виде:
lshw -html > linux_hw_info.html
Системная информация
Немного о способах получения информации о системе UNIX.
1. Узнать, какая система установлена:
uname -a
Чтобы уточнить версию дистрибутива Linux, также нужно ввести одну из команд:
cat /etc/redhat-release
cat /etc/lsb-release
cat /proc/version
cat /etc/issue
* первая команда для дистрибутивов на базе RMP, вторая — некоторых deb, третья и четвертая — для Debian.
2. Архитектура:
uname -m
* также можно использовать команду arch.
3. Версия ядра:
uname -r
Тестирование компьютера
В рамках данной статьи дополнительно перечислим некоторые утилиты, которые можно использовать для тестирования компьютера на UNIX.
- Stress-ng. Выполняет стресс-тест на оборудование. Полезна, если нужно вычислить сбойный элемент.
- Phoronix Test Suite. Тест производительности.
- Geekbench. Тест производительности процессора.
- GFXBench. Тест видеокарты.