Unix Toolbox. Часть 1 – система.

Автор: | 23/11/2011
 

 Эта статья – попытка перевода очень полезного документа Unix Toolbox. На некоторые команды постараюсь дать более развернутые комментарии, чем в оригинальной статье. Т.к. оригинальный документ очень большой – то и переводить я его буду частями, а потом соберу все в одном разделе.

Если есть что добавить – добро пожаловать в комменты.

1.0 Информация о ядре и системе:

узнать версию ядра (и версию BSD системы)
# uname -a    

узнать версию SuSE
# cat /etc/SuSE-release

узнать версию Debian
# cat /etc/debian_version

узнать сколько времени прошло со времени запуска системы + load average
# uptime

имя хоста
# hostname

список присвоенных системе IP адресов  (только Linux), покажет только те адреса, на которые отзывается имя хоста
# hostname -i

список всех присвоенных системе IP адресов (только Linux)
# hostname --all-ip-addresses

описание иерархии файловой системы
# man hier

выведет список последних перезагрузок системы с указанием времени перезагрузки и версией загружаемого ядра
# last reboot

1.1 Информация о hardware-части сервера:

список обнаруженных аппаратных средства и сообщения о процессе загрузки
# dmesg

информация об установленном оборудовании
# lsdev

считать информацию BIOS-а
# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8

Linux

полная информация о CPU
# cat /proc/cpuinfo

полная информация об аппаратной памяти
# cat /proc/meminfo

отображение доступной физической памяти
# grep MemTotal /proc/meminfo

использованная и свободная память (-m для вывода в MB)
# free -m

сконфигурированные в системе устройства
# cat /proc/devices

список PCI устройств
# lspci -tv

список USB устройств
# lsusb -tv

список всех устройств с их конфигурацией
# lshal

список DMI/SMBIOS: информация об аппратной части из BIOS-а
# dmidecode

FreeBSD

информация о CPU
# sysctl hw.model

информация об аппаратных устройствах
# sysctl hw

количество активных CPU
# sysctl hw.ncpu

использование памяти
# sysctl vm

отображение доступной физической памяти
# sysctl hw.realmem

информация и свойства памяти ядра
# sysctl -a | grep mem

сконфигурированные в системе устройства
# sysctl dev

список PCI устройств
# pciconf -l -cv

список USB устройств
# usbdevs -v

список ATA устройств
# atacontrol list

список SCSI устройств
# camcontrol devlist -v

1.2 Нагрузка, статистика и системные сообщения

Эти команды помогут вам понять, что происходит в системе.

вывод процессов CPU, его средняя нагрузка и использование памяти
# top

Linux: отображает нагрузку процессора (требует установленного sysstat)
# mpstat 1

статистика использования виртуальной памяти
# vmstat 1

отображение статистики I/O
# iostat 1

BSD общая статистика использования системы
# systat -vmstat 1

BSD tcp-соединения (так же можно -ip)
# systat -tcp 1  

BSD активные сетевые соединения
# systat -netstat 1

BSD сетевой трафик активных интерфейсов
# systat -ifstat 1

BSD использование CPU и  жесткого диска
# systat -iostat 1

последние 500 строк kernel/syslog
# tail -n 500 /var/log/messages

сообщения с предупреждениями (смотрите настройки в /etc/syslog.conf)
# tail /var/log/warn

1.3 Пользователи и группы

показывает запись об активном пользователе с его ID, UID, GID и  групп, в которые он входит
# id

выводит список авторизаций в системе за последний месяц
# last

отображает список активных пользователей, подключенных в данный момент к системе
# who

добавляет группу “admin” (Linux/Solaris)
# groupadd admin

добавляет существующего пользователя в группу (Debian)
# usermod -a -G <group> <user>

добавляет существующего пользователя в группу (SuSE)
# groupmod -A <user> <group>

удаляет пользователя colin (Linux/Solaris)
# userdel colin

FreeBSD добавляет пользователя joe (интерактивный режим)
# adduser joe

FreeBSD удаляет пользователя joe (интерактивный режим)
# rmuser joe

FreeBSD добавляет группу admin (утилита pw)
# pw groupadd admin

FreeBSD добавляет пользователя “newmember” в группу  admin (утилита pw)
# pw groupmod admin -m newmember

FreeBSD добавляет пользователя colin в группу admin и устанавливает shell по-умолчанию tcsh
# pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh

удаляет пользователя colin
# pw userdel colin

удаляет группу  admin
# pw groupdel admin

Зашифрованные пароли хранятся в файле /etc/shadow (Linux и Solaris) и /etc/master.passwd во FreeBSD. Если файл master.passwd редактировался вручную – выполните:
# pwd_mkdb -p master.passwd

для обновления.

1.4 Ограничения

Некоторым приложениям для работы требуется больше файлов и сокетов, чем им позволено системными ограничениями (например web-сервера, прокси-сервера, сервера баз данных).

Linux

Для облочки/скрипта

Лимиты оболочки устанавливаются ulimit. Что бы проверить текущий статус ограничений, введите:
#ulimit -a

Что бы изменить ограничение с 1024 до 10240, выполните:
# ulimit -n 10240 // используется только в командной строке

Кроме того, ulimit можно использовать в скриптах, что бы изменить ограничения только для него.

Пользователь/процесс

Лимиты пользователей и приложений устанаилваются в файле /etc/security/limits.conf. Например:

# cat /etc/security/limits.conf
* hard nproc 250 //ограничение кол-ва процессов от имени пользователя
asterisk hard nofile 409600 //лимит на кол-во одновременно открытых процессом файлов

Ограничения системы
Ограчения ядра устанавливаеются с помощью команды Sysctl. Постоянные ограничения устанавливаются в файле /etc/sysctl.conf.

Отобразить все общесистемные ограничения
# sysctl -a

Отобразить лимит максимального кол-ва открытых файлов
# sysctl fs.file-max

Изменить лимит максимального кол-ва открытых файлов
# sysctl fs.file-max=102400

Постоянное значение, через файл sysctl.conf
# fs.file-max=102400

Максимальное кол-во файловых дескрипторов
# cat /proc/sys/fs/file-nr

FreeBSD

Для облочки/скрипта

Можно использовать команду  limits в оболочках csh и tcsh,или использовать команду  ulimit в оболочках sh и bash.

Пользователь/процесс

Значения по-умолчанию устаналиваются в файле /etc/login.conf. Неограниченные значения устанавливаются правилами для всей системы.

Системные ограничения

Ограничения ядра устанавливаются так же командой sysctl. Постоянные ограничения указываются в файлах /etc/sysctl.conf  или /boot/loader.conf. Синтаксис такой же, как и в Linux, но некоторые ключи отличаются.

отобразить все системные ограничения
# sysctl -a

максимальное значение файловых дескрипторов
# sysctl kern.maxfiles=XXXX

Постоянное ограничение в /etc/sysctl.conf
# kern.ipc.nmbclusters=32768

Типичные значения для сервера Squid
# kern.maxfiles=65536
# kern.maxfilesperproc=32768

Очередь TCP, например для серверов apache/sendmail
# kern.ipc.somaxconn=8192

Максимальное кол-во используемых файловых дескрипторов
# sysctl kern.openfiles

Максимальное кол-во сокетов для использования
# sysctl kern.ipc.numopensockets

Максимальное значение диапазона портов, по-умолчанию 1024-5000
# sysctl net.inet.ip.portrange.last=50000

Статистика сетевых буферов памяти
># netstat -m # network memory buffers statistics

Подробнее смотрите в FreeBSD Handbook.

Solaris

Такие  параметры в файле /etc/system изменят максимальное кол-во файловых дескрипторов для одного процесса:

Жесткое ограничение:
# set rlim_fd_max = 4096

Мягкое ограничение:
# set rlim_fd_cur = 1024