# uname -a # Версия операционной системы и ядра (BSD)
# lsb_release -a # Информация о релизе ( LSB distribution)
# cat /etc/SuSE-release # Версия SuSE
# cat /etc/debian_version # Версия Debian
Используйте /etc/DISTR-release где DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris) и т.д. . Смотри так-же /etc/issue.
# uptime # Аптайм, время прошедшее с момента запуска системы + текущая нагрузка(LA)
# hostname # Имя хоста
# hostname -i # IP адрес хоста (только для Linux)
# man hier # Документация(man page) по иерархии файловой системы
# last reboot # История перезагрузок(reboot)
Конфигурация железа
Железо определенное ядром при загрузке
# dmesg # Железо, определенное при загрузке
# lsdev # Информация об установлено железе
# dd if=/dev/mem bs=1k skip=768 count=256 | strings -n 30 # Прочитать данные из BIOS
Linux
# cat /proc/cpuinfo # Модель процессора
# cat /proc/meminfo # Физическая память
# grep MemTotal /proc/meminfo # Объем физической памяти
# watch -n1 'cat /proc/interrupts' # Следить за прерываниями
# free -m # Использованная и свободная память (-m для MB)
# cat /proc/devices # Сконфигурированные устройства
# lspci -tv # Устройства PCI
# lsusb -tv # Устройства USB
# lshal # Показать список всех устройств с их свойствами
# dmidecode # Показать информацию из DMI/SMBIOS:, из BIOS
FreeBSD
# sysctl hw.model # Модель процессора
# sysctl hw # Большой список инфы о железе, ветка переменных hw
# sysctl vm # Информация по использованию памяти
# dmesg | grep usable memory # Объем физической памяти
# sysctl -a | grep mem # Различная информация о памяти ядра
# sysctl dev # Сконфигурированные устройства
# pciconf -l -cv # Устройства PCI
# usbdevs -v # Устройства USB
# atacontrol list # Устройства ATA
# camcontrol devlist -v # Устройства SCSI
Нагрузка, статистика, сообщения
Следующие команды применяются для мониторинга текущего состояния системы
# top # Утилита TOP, различная системная информация, процессы, LA
# mpstat 1 # Статистика касающаяся процессора
# vmstat 2 # Статистика виртуальной памяти, дисков и процессора
# iostat 2 # Статистика операций ввода/вывода,I/O
# systat -vmstat 1 # BSD суммарная системная статистика
# systat -tcp 1 # BSD статистика tcp (так-же можно -ip)
# systat -netstat 1 # BSD активные сетевые соединения
# systat -ifstat 1 # BSD сетевой трафик на активных интерфейсах
# systat -iostat 1 # BSD работа процессора и дисков
# tail -n 500 /var/log/messages # Последние 500 сообщений Syslog из файла messeges
# tail /var/log/warn # Системные предупреждения
Пользователи
# id # Показать uid(имя), gid(группу), текущего пользователя
# last # Статистика последних входов в систему
# who # Показать кто в системе в данный момент
# groupadd admin # Создать группу "admin" и пользователя colin (Linux/Solaris)
# useradd -c "Colin Barschel" -g admin -m colin
# usermod -a -G # Добавить существующего пользователя в группу (Debian)
# groupmod -A # Добавить существующего пользователя в группу (SuSE)
# userdel colin # Удалить пользователя colin (Linux/Solaris)
# adduser joe # FreeBSD добавить пользователя joe (интерактивно)
# rmuser joe # FreeBSD удалить пользователя joe (интерактивно)
# pw groupadd admin # FreeBSD создать группу, используя утилиту pw
# pw groupmod admin -m newmember # FreeBSD добавить нового участника в группу
# pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh # FreeBSD создать пользователя (утилита pw)
# pw userdel colin; pw groupdel admin # FreeBSD удалить пользователя и группу (утилита pw)
Пароли, хранятся в файле /etc/shadow, для Linux и в /etc/master.passwd для операционной системы FreeBSD, в зашифрованном виде. Если файл master.passwd был изменен вручную, нужно воспользоваться командой pwd_mkdb -p master.passwd , что-бы пересобрать базу данных.
Что-бы временно запретить вход в систему, всем кроме root, используйте nologin.
# echo "Sorry no login now" > /etc/nologin # (Linux)
# echo "Sorry no login now" > /var/run/nologin # (FreeBSD)
Системные лимиты
Некоторые приложения(Proxy, 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 # Изменить максимальное кол-во открытых файлов
# cat /etc/sysctl.conf
fs.file-max=102400 # Постоянное значение в файле sysctl.conf
# cat /proc/sys/fs/file-nr # Кол-во используемых файловых дескрипторов
FreeBSD
Оболочка/скрипт
Используйте команду limits в csh или tcsh.
пользователь/процесс
Лимиты по-умолчанию, устанавливаются при входе в систему в файле /etc/login.conf. Неограниченные значение, ограничиваются общесистемными лимитами.
Общесистемные
Во FreeBSD, общесистемные лимиты регулируются так-же как в Linux, командой Sysctl. Постоянные ограничения устанавливаются в файлах /etc/sysctl.conf и /boot/loader.conf. Синтаксис записи аналогичен Linux, но ключи отличаются.
# sysctl -a # Показать все системные переменные
# sysctl kern.maxfiles=XXXX # Максимальное кол-во файловых дескрипторов
kern.ipc.nmbclusters=32768 # Постоянные значения в /etc/sysctl.conf
kern.maxfiles=65536 # типичные значения для Squid
kern.maxfilesperproc=32768
kern.ipc.somaxconn=4096 # TCP очередь, например для apache/sendmail
# sysctl kern.openfiles # Кол-во используемых файловых дескрипторов
# sysctl kern.ipc.numopensockets # Кол-во используемых сокетов
# sysctl -w net.inet.ip.portrange.last=50000 # Верхнее значение диапазона портов, по-умолчанию: 1024-5000
# netstat -m # Статистика сетевых буферов памяти
Следующие значения в /etc/system увеличат максимальное значение файловых дескрипторов на процесс:
set rlim_fd_max = 4096 # Жесткий лимит файловых дескрипторов на один процесс
set rlim_fd_cur = 1024 # Мягкий лимит файловых дескрипторов на один процесс
Runlevel - Режим работы системы / уровень запуска
Linux
Загрузившись, ядро стартует процесс init, который запускает rc, коорый в свою очередь выполняет все скрипты, соответствующего уровня запуска. Скрипты расположены в /etc/init.d и слинкованы в /etc/rc.d/rcN.d, где N, означает уровень запуска.
Уровень запуска по-умолчанию, установлен в /etc/inittab, и как правило имеет значение 3 или 5:
# grep default: /etc/inittab
id:3:initdefault:
Текущий режим работы может быть изменен с помощью все того-же init. Например, перейдем с 3 уровня на 5:
# init 5 # Переходим в режим 5
0 Shutdown and halt
1 Single-User mode (also S)
2 Multi-user without network
3 Multi-user with network
5 Multi-user with X
6 Reboot
Используйте chkconfig для конфигурирования программ, которые должны стартовать при загрузке в соответствующий режим.
# chkconfig --list # Список всех init-скриптов
# chkconfig --list sshd # Показать статус sshd
# chkconfig sshd --level 35 on # Конфигурирование sshd для уровня 3 и 5
# chkconfig sshd off # Отключение sshd для всех уровней
Debian и основанные на нем дистрибутивы, Ubuntu или Knoppix, для управления скриптами Runlevel, используют команду update-rc.d. По-умолчанию, 2, 3, 4 и 5 уровень для старта, и 0, 1 и 6 для останова.
# update-rc.d sshd defaults # Активировать sshd с уровнем запуска по-умолчанию
# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # Непосредственное указание уровней запуска и останова
# update-rc.d -f sshd remove # Запретить sshd для всех уровней
# shutdown -h now (or # poweroff) # Остановить и выключить систему
FreeBSD
FreeBSD использует другой подход к процессу загрузки, нежели SysV (Linux, etc). Последний этап загрузки (Single user с ХServer или без него), настроен в /etc/ttys. Все скрипты расположены в /etc/rc.d/ и в /usr/local/etc/rc.d/ для сторонних производителей ПО. Запуск системных сервисов настраивается в /etc/rc.conf и /etc/rc.conf.local. Поведение по-умолчанию, задано в /etc/defaults/rc.conf. Скрипты реагируют на start | stop | status.
# /etc/rc.d/sshd status
sshd is running as pid 552.
# shutdown now # Перключиться в однопользователский режим
# exit # Вернуться в многопользовательский режим
# shutdown -p now # Выключить систему
# shutdown -r now # Перезагрузить
Процесс init может быть использован для управления установленным состоянием уровня. Например init 6, перезагрузит систему.
0 Остановить систему и выключить (сигнал USR2)
1 Перейти в Single user (сигнал TERM)
6 Перезагрузить машину (сигнал INT)
c Блокировать последующие входы в систему (сигнал TSTP)
q Перечитать ttys(5) файл (сигнал HUP)
Сброс пароля root
Linux, способ раз
В загрузчике (lilo или grub), введите следующие опции:
init=/bin/sh
Ядро смонтирует корневую файловую систему, init запустит системный шелл(bash)
Используйте команду passwd, что-бы изменить пароль root и перезагрузитесь. Если после загрузки, корневой раздел файловой системы смонтировался в режиме read only (только чтение), перемонтируйте его в rw, для чтения/записи:
# mount -o remount,rw /
# passwd # или удалите пароль root (/etc/shadow)
# sync; mount -o remount,ro / # синхронизация перед монтированием в read only
# reboot
FreeBSD, способ раз
На экране загрузчика выберите Single user(опция 4), перемонтируйте корневую файловую систему в rw, используя утилиту passwd установите новый пароль для root.
# mount -u /; mount -a # перемонтирует корневую fs в режим rw
# passwd
# reboot
Unix и FreeBSD и Linux, способ два
Некоторые Unix системы, могут не дать вам исполнить вышеописанные трюки. Решение проблемы в том, что-бы смонтировать корневую файловую систему из другой OS (типа загрузочного CD) и сменить пароль.
Загрузитесь с LiveCD или установочного диска в режиме восстановления.
Найдите корневой партишн с помощью fdisk, например fdisk /dev/sda
Смонтируйте его и используйте chroot:
# mount -o rw /dev/ad4s3a /mnt
# chroot /mnt # сдкелать /mnt корневой файловой системой
# passwd
# reboot
Сборка ядра (компиляция)
Linux
# cd /usr/src/linux
# make mrproper # Очистка, включая файлы конфигурации
# make oldconfig # Повторно использовать старые конфиги, если есть
# make menuconfig # xconfig (Qt) или gconfig (GTK)
# make # Создание сжатого образа ядра
# make modules # Компиляция модулей
# make modules_install # Установка модулей
# make install # Установка ядра
# reboot
FreeBSD
При необходимости, обновите исходники системы (в /usr/src) csup, для FreeBSD 6.2 и выше:
Что-бы изменить настройки ядра, скопируйте конфигурационный файл GENERIC под други именем и отредактируйте его под себя.
# cd /usr/src/sys/i386/conf/
# cp GENERIC MYKERNEL
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
Переустановка всей операционной системы:
# make buildworld # Собрать мир ( мир - все что не ядро)
# make buildkernel KERNCONF=MYKERNEL # Сборка ядра (построение), как делали ранее
# make installkernel KERNCONF=MYKERNEL # Установить ядро
# reboot
# mergemaster -p # Сравнить только необходимые уонфиги
# make installworld # Установить мир
# mergemaster -i -U # Обновить все конфигурационные и другие файлы
# reboot
При незначительных изменениях в исходных текстах, можно использовать ключ NO_CLEAN=yes, что-бы избежать пересборку всего дерева исходников.
# make buildworld NO_CLEAN=yes # Не удалять старые объектные файлы
# make buildkernel KERNCONF=MYKERNEL NO_CLEAN=yes
Модули ядра
Linux
# lsmod # Показать все модули загруженные в ядро
# modprobe isdn # Загрузить модуль (в данном случае isdn)
# mount /dev/sda6 /mnt # монтировать Linux partion на /mnt
# mount --bind /proc /mnt/proc # монтировать подсистему proc в /mnt
# mount --bind /dev /mnt/dev # монтировать устройства в /mnt
# chroot /mnt # сменить корневую директрорию на Linux partition
# grub-install /dev/sda # переустановить grub со старыми опциями