Перевод сборника команд Unix ToolBox. Раздел 1. System (Cистема)
Версия операционной системы и ядра
# 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)
1.1 Конфигурация железа
Железо определенное ядром при загрузке
# 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
1.2 Нагрузка, статистика, сообщения
Следующие команды применяются для мониторинга текущего состояния системы
# 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 # Системные предупреждения
1.3 Пользователи
# 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)
1.4 Системные лимиты
Некоторые приложения(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 # Статистика сетевых буферов памяти
Подробнее, смотрите Tuning Kernel Limits.
Solaris
Следующие значения в /etc/system увеличат максимальное значение файловых дескрипторов на процесс:
set rlim_fd_max = 4096 # Жесткий лимит файловых дескрипторов на один процесс set rlim_fd_cur = 1024 # Мягкий лимит файловых дескрипторов на один процесс
1.5 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 # Выключить и послать по APCI сигнал отключения питания
* 1 Single-User mode (also S) # режим Single-User
* 2 Multi-user without network # Multi-user без поддержки сети
* 3 Multi-user with network# Multi-user с поддержкой сети
* 5 Multi-user with X# Multi-user с поддержкой Х сервера
* 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)
1.6 Сброс пароля 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
1.7 Модули ядра
Linux
# lsmod # Показать все модули загруженные в ядро # modprobe isdn # Загрузить модуль (в данном случае isdn)
FreeBSD
# kldstat # Списоз загруженных модулей # kldload crypto # Загрузить модуль (здесь crypto)
1.8Сборка ядра (компиляция)
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 и выше:
# csup
Я использую следующий конфиг для csup:
*default host=cvsup2.ru.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_7 *default delete use-rel-suffix src-all
Что-бы изменить настройки ядра, скопируйте конфигурационный файл 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
1.9 Восстановление загрузчика grub
# 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 со старыми опциями