- Информация о дисках
- mount — показывает смонтированные подразделы и флаги из монтирования
- df — показывает смонтированные подразделы, их размер и свободное место на них
- fdisk /dev/ad0 — показывает информацию о диске ad0 и разделах на нем
- disklabel /dev/ad0s1 — показывает список подразделов в первом разделе диска ad0
- swapinfo — показывает список подразделов свопинга на дисках и их использование
- fstat — показывает список открытых файлов (имена файлов не выводятся)
- pstat -f — выводит список открытых файлов (имена файлов не выводятся)
- systat -vmstat n — каждые n секунд выводит количество транзакций с диском в секунду, объем записанных/считанных данных на диск в секунду, средний размер транзакции и процент времени в течение которого диск был занят работой.
- iostat — выводит информацию, аналогичную systat -vmstat, но не выводит занятости диска по времени и может выводить среднюю статистику с момента загрузки.
- vmstat — выводит количество операций на диске в секунду
- /stand/sysinstall — можно посмотреть и изменить разметку диска и монтирование
- less /etc/fstab — таблица монтирования при загрузке
- Информация о процессоре и памяти
- systat -vmstat n — вывод показателей загрузки (number of jobs in the run queue averaged over 1, 5 and 15 min), состояния памяти (в страницах), количества процессов в группах, количество вызовов специальных функций ядра (traps, interrupts, system calls, network software interrupts), использование процессора, трансляции имен, активность свопа, прерывания, а также информацию по использованию диска (см)
- top — аналогичная информация в сокращенном виде + использование памяти и свопа в мегабайтах, список процессов, отсортированных по использованию процессора.
- ps afx — список запущенных процессов и время процессора на каждый
- Информация о сети
- ifconfig — список сетевых интерфейсов с ip-адресами, масками, mac-адресами, типами карт и их статусами (названия карточек можно посмотреть в файле конфигурации ядра)
- systat -ifstat n — объем трафика за n секунд на всех сетевых интерфейсах
- netstat — вывод активных сетевых соединений (сокетов)
- systat -netstat n — аналог netstat в реальном времени
- systat -ip n — таблица IP-пакетов и ошибок по типам за n секунд
- systat -tcp n — таблица TCP-пакетов и ошибок по типам за n секунд
- systat -icmp n — таблица ICMP-пакетов и ошибок по типам за n секунд
- netstat -ibt — список интерфейсов, разбитых по ip-адресам (!) с объемом трафика на каждом, количеством ошибок, коллизий, значением watchdog-таймера
- netstat -inb По умолчанию “netstat -i” во FreeBSD показывает число пакетов и байт по каждому интерфейсу
- netstat -inbh Для наглядного просмотра, можно использовать опцию “-h”, которая сокращает байтовый вывод до Кб, Мб или Гб.
- systat -ifstat (или systat -if) Интенсивность передачи трафика
- netstat -iw1другой вариант
- netstat -r — таблица маршрутизации
- arp -a — таблица ARP
- tcpdump -i rl0 host 192.168.61.20 and port 80 — сниффер пакетов на интерфейсе rl0, фильтрующий пакеты, содержащие адрес 192.168.61.20 и порт 80
- trafshow -i rl0 — программа для сортировки и вывода сетевых потоков (устанавливается дополнительно пакетом или из портов)
- sockstat
- Службы времени
- date — выводит текущее время и дату
- w — выводит, сколько времени назад система загрузилась и залогиненных пользователей
- last — выводит историю перезагрузок и входов пользователей
Программирование в *nix
Блог о программировании в Unix подобных системах. На примерах рассматриваются функции, необходимые в системном и сетевом программировании.
пятница, 2 марта 2012 г.
Статистика FreeBSD
суббота, 14 января 2012 г.
FreeBSD монтирование USB HDD с NTFS
Подключаем USB HDD, смотрим как определился:
$ dmesgТеперь монтируем его содержимое в папку с перекодировкой через стандартный драйвер ntfs (только чтение, не поддерживает запись):
da0 at umass-sim1 bus 1 scbus3 target 0 lun 0
da0: <Toshiba External USB HDD > Fixed Direct Access SCSI-4 device
da0: 40.000MB/s transfers
da0: 610480MB (1250263728 512 byte sectors: 255H 63S/T 77825C)
# mount_ntfs -C koi8-r -m 755 -u hawk -g hawk /dev/da0s1 /mnt/usbМожно монтировать через ntfs-3g, будет и чтение и запись, единственное проблемы с кодировками. Сначала собираем fusefs-ntfs:
# cd /usr/ports/sysutils/fusefs-ntfsДобавляем в rc.conf
# make install clean
fusefs_enable="YES"Запускаем:
# /usr/local/etc/rc.d/fusefs startМожно удостовериться, что модуль ядра fuse.ko подгружен:
$ kldstat | grep fuse.ko
12 1 0xffffffff82031000 a8ea fuse.koМодуль можно подгрузить так:
# kldload /usr/local/modules/fuse.koНу и монтируем:
# ntfs-3g -o rw,uid=1001,gid=1001,locale=ru_RU.UTF-8 /dev/da0s1 /mnt/usb
Изменение размера слайса FreeBSD
Для этого потребуется временное хранилище.
Для начала создаем бекапы каждого раздела:
u - обновить историю дампов
L - делать дамп со снимка системы
f - делать дамп в файл
Переписываем бекапы на временное хранилище и переразбиваем диск, после чего:
Грузимся с Fixit и для каждого раздела(здесь только для f) выполняем:
f - из файла
Если будет жаловаться на недостаток места в /tmp, нужно создать в /tmp симлинк. Не забудьте удалить его когда закончите
Для начала создаем бекапы каждого раздела:
# df
/dev/ad6s1a 10154158 892000 8449826 10% /
devfs 1 1 0 100% /dev
/dev/ad6s1e 10154158 45344 9296482 0% /tmp
/dev/ad6s1f 903370842 155157450 675943726 19% /usr
/dev/ad6s1d 10154158 304838 9036988 3% /var
# dump -auLf ~/ad6s1f.dump /dev/ad6s1fa - нужен чтоб он не мучился с поиском конца ленты.
# dump -auLf ~/ad6s1a.dump /dev/ad6s1a
# dump -auLf ~/ad6s1e.dump /dev/ad6s1e
# dump -auLf ~/ad6s1d.dump /dev/ad6s1d
u - обновить историю дампов
L - делать дамп со снимка системы
f - делать дамп в файл
Переписываем бекапы на временное хранилище и переразбиваем диск, после чего:
Грузимся с Fixit и для каждого раздела(здесь только для f) выполняем:
# newfs /dev/ad6s1f
# mount /dev/ad6s1f /mnt
# cd /mntx - восстановить все
# restore -xf /path2backup/ad6s1f.dump
f - из файла
Если будет жаловаться на недостаток места в /tmp, нужно создать в /tmp симлинк. Не забудьте удалить его когда закончите
Обновление ядра, мира и портов в FreeBSD
Бинарное обновление
Для бинарного обновления, если используется ядро GENERIC:
Обновление исходных текстов:
Чистим /usr/obj/:
Если дерево портов ещё не развернуто:
Для бинарного обновления, если используется ядро GENERIC:
Обновление через csup# freebsd-update upgrade -r 8.2-RELEASE # freebsd-update install # shutdown -r now # freebsd-update install # freebsd-update install # shutdown -r now
Обновление исходных текстов:
Приводим супфайл к виду# cp /usr/share/examples/cvsup/standard-supfile /etc/supfile
Запускаем:*default host=cvsup6.ru.FreeBSD.org # Список зеркал можно найти тут http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_8_2 # Список тегов http://www.freebsd.org/doc/handbook/cvs-tags.html *default delete use-rel-suffix *default compress src-all
Компиляция и установка# csup -g -L 2 /etc/supfile
Чистим /usr/obj/:
Строим:
# cd /usr/obj # chflags -R noschg * # rm -rf * # cd /usr/src # make cleandir # хендбук рекомендует выполнять эту команду дважды (!) # make cleandir
# cd /usr/src
# make -s -j4 buildworld
Ставим:# make -j4 -s buildkernel KERNCONF=Имяядра
Перезагружаемся в single user mode или с помощью команды# make -s installkernel KERNCONF=Имяядра
При перезагрузке нужно смонтированы будут не все разделы, монтируем:# make -s installkernel KERNCONF=GARROTTE
Перед установкой разбираемся с конфигами:# mount -u # mount -a
# mergemaster -p
- d - оставить старый вариант файла, удалив новый;
- i - установить новый, удалив старый;
- m - построчное сравнение старого и нового файла;
- v - сравнить файлы еще раз.
- l - использовать вариант слева, то есть старый;
- r - использовать вариант справа, то есть новый;
Чистим старые библиотеки:# make installworld
И /usr/obj/:# cd /usr/src && make check-old # yes | make delete-old # yes | make delete-old-libs
Обновление портов# cd /usr/obj && chflags -R noschg * && rm -rf *
Если дерево портов ещё не развернуто:
# portsnap fetch extractЕсли уже:
# portsnap fetch updateТеперь обновляем утановленные порты утилитой portupgrade:
Также потребуется указать флаг для конфигурации:
# portupgrade -arR
- -c - Если вы хотите пропустить задание опций для портов, у которых уже были заданы требуемые опции.
- -C - если нужно заново задаь конфигурацию всем портам(Это долго)
среда, 4 января 2012 г.
Модули ядра FreeBSD
В этой статье будет рассмотрен обычный модуль, который выводит сообщение при его загрузке и выгрузке. Для этого ядро должно быть собрано с опцией SCHED_ULE. Также частота генерации прерываний должна быть снижена до 100, если ваша система запущена на виртуальной машине.
echo kern.hz=100 >> /boot/loader.conf
echo kern.hz=100 >> /boot/loader.conf
вторник, 13 декабря 2011 г.
Потоки в C
Многопоточность очень важна при высокой нагрузке на машину, когда важно быстро обрабатывать поступающую информацию. В этой статье я хочу рассказать о потоках на конкретном примере. Будут рассмотрены основные функции для работы с потоками. Более полная информация доступна на man странице pthread.
Взаимодействие процессов: pipe()
Есть ещё один вид взаимодействия процессов в unix, каналы.
Рассмотрим на примере как это работает.
Рассмотрим на примере как это работает.
воскресенье, 4 декабря 2011 г.
NVidia drivers под FreeBSD x64
http://www.nvidia.ru/object/freebsd-x64-290.10-driver-ru.html
Инструкции по установке: после загрузки драйвера перейдите в каталог, содержащий пакет драйвера и установите его, запустив командой tar xzf NVIDIA-FreeBSD-x86_64-290.10.tar.gz && cd NVIDIA-FreeBSD-x86_64-290.10 && make install Затем измените конфигурационный файл с учётом использования драйвера NVIDIA X; это обычно осуществляется запуском nvidia-xconfig
Перевод логов с первого терминала
По умолчанию логи выводятся на первый терминал, что не всегда удобно. Можно легко сменить терминал, в который будут писаться логи.