# 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
# 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
# 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 <group> <user> # Добавить существующего пользователя в группу (Debian) # groupmod -A <user> <group> # Добавить существующего пользователя в группу (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 сервера, базы данных) используют большие количества открытых файлов и сокетов, и как правило, установок по-умолчанию им недостаточно.
Оболочка/скрипт
За лимиты оболочки отвечает 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 # Кол-во используемых файловых дескрипторов
Оболочка/скрипт
Используйте команду 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 # Статистика сетевых буферов памятиПодробнее, смотрите FreeBSD handbook Глава 11.
/etc/system
увеличат максимальное значение файловых дескрипторов на процесс:
set rlim_fd_max = 4096 # Жесткий лимит файловых дескрипторов на один процесс set rlim_fd_cur = 1024 # Мягкий лимит файловых дескрипторов на один процесс
Загрузившись, ядро стартует процесс 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
Используйте 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) # Остановить и выключить систему
/etc/ttys
. Все скрипты расположены в /etc/rc.d/
и в /usr/local/etc/rc.d/
для сторонних производителей ПО. Запуск системных сервисов настраивается в /etc/rc.conf
and /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
, перезагрузит систему.
USR2
)TERM
)INT
)TSTP
)HUP
)В загрузчике (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
# mount -u /; mount -a # перемонтирует корневую fs в режим rw
# passwd
# reboot
# mount -o rw /dev/ad4s3a /mnt
# chroot /mnt # сдкелать /mnt корневой fs
# passwd
# reboot
# lsmod # Показать все модули загруженные в ядро # modprobe isdn # Загрузить модуль (в данном случае isdn)
# kldstat # Списоз загруженных модулей # kldload crypto # Загрузить модуль (здесь crypto)
# cd /usr/src/linux # make mrproper # Очистка, включая файлы конфигурации # make oldconfig # Повторно использовать старые конфиги, если есть # make menuconfig # xconfig (Qt) или gconfig (GTK) # make # Создание сжатого образа ядра # make modules # Компиляция модулей # make modules_install # Установка модулей # make install # Установка ядра # reboot
/usr/src
) csup, для FreeBSD 6.2 и выше:
# csup <supfile>Я использую следующий конфиг для 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
# 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 со старыми опциями