# Шпаргалка по FreeBSD для администраторов Linux

## Информация Об оборудовании

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Список <span class="caps">PCI</span> устройств</td><td>`pciconf -lv`</td><td>`lspci -v`</td></tr><tr><td>Список <span class="caps">USB</span> устройств</td><td>`usbconfig`</td><td>`lsusb`</td></tr><tr><td>Показывать информацию о <span class="caps">процессоре</span></td><td>`sysctl hw.model` или `dmesg \| grep CPU`</td><td>`cat /proc/cpuinfo` или `lscpu`</td></tr><tr><td>Показать информацию о памяти</td><td>`sysctl hw.physmem` или `top`</td><td>`free -h` или `cat /proc/meminfo`</td></tr><tr><td>Показывать модули ядра</td><td>`kldstat`</td><td>`lsmod`</td></tr><tr><td>Загрузить модуль ядра</td><td>`kldload module_name`</td><td>`modprobe module_name`</td></tr><tr><td>Выгрузить модуль ядра</td><td>`kldunload module_name`</td><td>`modprobe -r module_name`</td></tr></tbody></table>

## Управление дисками и хранилищем

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-1"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Перечислите все диски</td><td>`geom disk list`</td><td>`lsblk` или `fdisk -l`</td></tr><tr><td>Показывать разделы диска</td><td>`gpart show`</td><td>`fdisk -l` или `parted -l`</td></tr><tr><td>Показывать использование диска</td><td>`df -h`</td><td>`df -h`</td></tr><tr><td>Показывать смонтированные файловые системы</td><td>`mount`</td><td>`mount` или `findmnt`</td></tr><tr><td>Проверка файловой системы</td><td>`fsck`</td><td>`fsck`</td></tr><tr><td>Показать данные <span class="caps">SMART</span></td><td>`smartctl -a /dev/ada0`</td><td>`smartctl -a /dev/sda`</td></tr><tr><td>Список пулов <span class="caps">ZFS</span></td><td>`zpool list`</td><td>`zpool list` (если установлен <span class="caps">ZFS</span>)</td></tr><tr><td>Показать наборы данных <span class="caps">ZFS</span></td><td>`zfs list`</td><td>`zfs list` (если установлен <span class="caps">ZFS</span>)</td></tr></tbody></table>

## Сетевые команды

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-2"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Показывать сетевые интерфейсы</td><td>`ifconfig`</td><td>`ip addr` или `ifconfig`</td></tr><tr><td>Настройка интерфейса</td><td>`ifconfig em0 inet 192.168.1.10`</td><td>`ip addr add 192.168.1.10/24 dev eth0`</td></tr><tr><td>Показать таблицу маршрутизации</td><td>`netstat -rn`</td><td>`ip route` или `route -n`</td></tr><tr><td>Добавить статический маршрут</td><td>`route add default 192.168.1.1`</td><td>`ip route add default via 192.168.1.1`</td></tr><tr><td>Показать таблицу <span class="caps">ARP</span></td><td>`arp -a`</td><td>`arp -a` или `ip neigh`</td></tr><tr><td>Очистить запись <span class="caps">ARP</span></td><td>`arp -d hostname`</td><td>`arp -d hostname` или `ip neigh del`</td></tr><tr><td>Показывать сетевую статистику</td><td>`netstat -s`</td><td>`netstat -s` или `ss -s`</td></tr><tr><td>Показывать порты прослушивания</td><td>`sockstat -l` или `netstat -an`</td><td>`ss -tuln` или `netstat -tuln`</td></tr><tr><td>Показать все открытые порты/подключения</td><td>`sockstat`</td><td>`ss -tuan` или `netstat -tuan`</td></tr><tr><td>Захват пакетов</td><td>`tcpdump -i em0`</td><td>`tcpdump -i eth0`</td></tr></tbody></table>

## Управление процессами

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-3"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Перечислите все процессы</td><td>`ps aux`</td><td>`ps aux`</td></tr><tr><td>Дерево процессов</td><td>`pstree`</td><td>`pstree` или `ps axjf`</td></tr><tr><td>Просмотр процесса в режиме реального времени</td><td>`top`</td><td>`top` или `htop`</td></tr><tr><td>Процесс уничтожения</td><td>`kill PID`</td><td>`kill PID`</td></tr><tr><td>Показывать открытые файлы по процессам</td><td>`fstat`</td><td>`lsof`</td></tr><tr><td>Показать процесс, использующий порт</td><td>`sockstat -p 80`</td><td>`lsof -i :80` или `ss -tulpn \| grep :80`</td></tr></tbody></table>

## Управление пакетами

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-4"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux (в зависимости от дистрибутива)</th></tr></thead><tbody><tr><td>Установочный пакет</td><td>`pkg install package_name`</td><td>`apt install` / `yum install` / `dnf install`</td></tr><tr><td>Удалить пакет</td><td>`pkg delete package_name`</td><td>`apt remove` / `yum remove` / `dnf remove`</td></tr><tr><td>Обновить список пакетов</td><td>`pkg update`</td><td>`apt update` / `yum check-update`</td></tr><tr><td>Пакеты обновления</td><td>`pkg upgrade`</td><td>`apt upgrade` / `yum upgrade` / `dnf upgrade`</td></tr><tr><td>Поиск пакетов</td><td>`pkg search keyword`</td><td>`apt search` / `yum search` / `dnf search`</td></tr><tr><td>Показать информацию о пакете</td><td>`pkg info package_name`</td><td>`apt show` / `yum info` / `dnf info`</td></tr><tr><td>Список установленных пакетов</td><td>`pkg info`</td><td>`dpkg -l` / `rpm -qa`</td></tr></tbody></table>

## Системные службы

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-5"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux (systemd)</th></tr></thead><tbody><tr><td>Начать обслуживание</td><td>`service servicename start`</td><td>`systemctl start servicename`</td></tr><tr><td>Остановить обслуживание</td><td>`service servicename stop`</td><td>`systemctl stop servicename`</td></tr><tr><td>Перезапустить службу</td><td>`service servicename restart`</td><td>`systemctl restart servicename`</td></tr><tr><td>Состояние обслуживания</td><td>`service servicename status`</td><td>`systemctl status servicename`</td></tr><tr><td>Включить при загрузке</td><td>`sysrc servicename_enable="YES"`</td><td>`systemctl enable servicename`</td></tr><tr><td>Отключить при загрузке</td><td>`sysrc servicename_enable="NO"`</td><td>`systemctl disable servicename`</td></tr><tr><td>Перечислите все услуги</td><td>`service -e`</td><td>`systemctl list-units --type=service`</td></tr></tbody></table>

## Брандмауэр

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-%28pf%2Fi"><thead><tr><th>Задача</th><th>FreeBSD (pf/ipfw)</th><th>Linux (iptables/nftables)</th></tr></thead><tbody><tr><td>Правила показа (pf)</td><td>`pfctl -sr`</td><td>`iptables -L -n -v`</td></tr><tr><td>Показать правила (ipfw)</td><td>`ipfw list`</td><td>`nft list ruleset`</td></tr><tr><td>Включить брандмауэр (pf)</td><td>`pfctl -e`</td><td>`systemctl start firewalld`</td></tr><tr><td>Отключить брандмауэр (pf)</td><td>`pfctl -d`</td><td>`systemctl stop firewalld`</td></tr><tr><td>Правила перезарядки (pf)</td><td>`pfctl -f /etc/pf.conf`</td><td>`iptables-restore < /etc/iptables/rules.v4`</td></tr></tbody></table>

## Системная информация

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-6"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Время безотказной работы системы</td><td>`uptime`</td><td>`uptime`</td></tr><tr><td>Версия ядра</td><td>`uname -a` или `freebsd-version`</td><td>`uname -a`</td></tr><tr><td>Показать все переменные sysctl</td><td>`sysctl -a`</td><td>`sysctl -a`</td></tr><tr><td>Показывать системные сообщения</td><td>`dmesg`</td><td>`dmesg` или `journalctl -k`</td></tr><tr><td>Показывать системные журналы</td><td>`tail /var/log/messages`</td><td>`journalctl` или `tail /var/log/syslog`</td></tr></tbody></table>

## Управление пользователями

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-7"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Добавить пользователя</td><td>`adduser` или `pw useradd username`</td><td>`useradd username` или `adduser username`</td></tr><tr><td>Удалить пользователя</td><td>`rmuser` или `pw userdel username`</td><td>`userdel username`</td></tr><tr><td>Изменить пользователя</td><td>`pw usermod username`</td><td>`usermod username`</td></tr><tr><td>Сменить пароль</td><td>`passwd username`</td><td>`passwd username`</td></tr><tr><td>Показывать вошедших в систему пользователей</td><td>`who` или `w`</td><td>`who` или `w`</td></tr></tbody></table>

## Файловые системы

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-freebsd-linux-8"><thead><tr><th>Задача</th><th>FreeBSD</th><th>Linux</th></tr></thead><tbody><tr><td>Монтировать файловую систему</td><td>`mount /dev/ada0p2 /mnt`</td><td>`mount /dev/sda2 /mnt`</td></tr><tr><td>Размонтировать файловую систему</td><td>`umount /mnt`</td><td>`umount /mnt`</td></tr><tr><td>Создайте файловую систему <span class="caps">UFS</span></td><td>`newfs /dev/ada0p2`</td><td>Н/Д (<span class="caps">UFS</span> не распространено)</td></tr><tr><td>Создание файловой системы ext4</td><td>N/A</td><td>`mkfs.ext4 /dev/sda2`</td></tr><tr><td>Проверьте место на диске</td><td>`du -sh /path`</td><td>`du -sh /path`</td></tr></tbody></table>

## <span class="caps">ZFS</span> Команды (одинаковые для FreeBSD и Linux с <span class="caps">ZFS</span>)

### Операции с пулом

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Перечислите все пулы</td><td>`zpool list`</td><td>`zpool list`</td></tr><tr><td>Показать состояние пула</td><td>`zpool status`</td><td>`zpool status tank`</td></tr><tr><td>Показать историю пула</td><td>`zpool history`</td><td>`zpool history tank`</td></tr><tr><td>Показать статистику ввода-вывода</td><td>`zpool iostat`</td><td>`zpool iostat -v 2` (каждые 2 секунды)</td></tr><tr><td>Создайте простой пул</td><td>`zpool create`</td><td>`zpool create tank /dev/ada1`</td></tr><tr><td>Создание зеркального пула</td><td>`zpool create`</td><td>`zpool create tank mirror /dev/ada1 /dev/ada2`</td></tr><tr><td>Создайте пул <span class="caps">RAIDZ</span></td><td>`zpool create`</td><td>`zpool create tank raidz /dev/ada1 /dev/ada2 /dev/ada3`</td></tr><tr><td>Добавление диска в пул</td><td>`zpool add`</td><td>`zpool add tank /dev/ada4`</td></tr><tr><td>Замените диск в пуле</td><td>`zpool replace`</td><td>`zpool replace tank /dev/ada1 /dev/ada4`</td></tr><tr><td>Удаление устройства из пула</td><td>`zpool remove`</td><td>`zpool remove tank /dev/ada4`</td></tr><tr><td>Скраб-пул (проверка целостности)</td><td>`zpool scrub`</td><td>`zpool scrub tank`</td></tr><tr><td>Перестаньте скрести</td><td>`zpool scrub -s`</td><td>`zpool scrub -s tank`</td></tr><tr><td>Устранение ошибок пула</td><td>`zpool clear`</td><td>`zpool clear tank`</td></tr><tr><td>Экспортный пул</td><td>`zpool export`</td><td>`zpool export tank`</td></tr><tr><td>Пул импорта</td><td>`zpool import`</td><td>`zpool import tank`</td></tr><tr><td>Список импортируемых пулов</td><td>`zpool import`</td><td>`zpool import` (без названия пула)</td></tr><tr><td>Пул обновлений</td><td>`zpool upgrade`</td><td>`zpool upgrade tank`</td></tr><tr><td>Установить свойство пула</td><td>`zpool set`</td><td>`zpool set autoreplace=on tank`</td></tr><tr><td>Получить свойства пула</td><td>`zpool get`</td><td>`zpool get all tank`</td></tr></tbody></table>

### Операции с набором данных (файловой системой)

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5-1"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Перечислите все наборы данных</td><td>`zfs list`</td><td>`zfs list`</td></tr><tr><td>Список с конкретными свойствами</td><td>`zfs list`</td><td>`zfs list -o name,used,avail,mountpoint`</td></tr><tr><td>Список моментальных снимков</td><td>`zfs list -t snapshot`</td><td>`zfs list -t snapshot`</td></tr><tr><td>Создание набора данных</td><td>`zfs create`</td><td>`zfs create tank/home/user`</td></tr><tr><td>Уничтожить набор данных</td><td>`zfs destroy`</td><td>`zfs destroy tank/old_data`</td></tr><tr><td>Уничтожить набор данных и дочерние элементы</td><td>`zfs destroy -r`</td><td>`zfs destroy -r tank/old_data`</td></tr><tr><td>Установить свойство набора данных</td><td>`zfs set`</td><td>`zfs set compression=lz4 tank/home`</td></tr><tr><td>Получение свойств набора данных</td><td>`zfs get`</td><td>`zfs get all tank/home`</td></tr><tr><td>Установить квоту</td><td>`zfs set quota=`</td><td>`zfs set quota=10G tank/home/user`</td></tr><tr><td>Установленное резервирование</td><td>`zfs set reservation=`</td><td>`zfs set reservation=5G tank/database`</td></tr><tr><td>Набор данных для монтирования</td><td>`zfs mount`</td><td>`zfs mount tank/home`</td></tr><tr><td>Размонтировать набор данных</td><td>`zfs unmount`</td><td>`zfs unmount tank/home`</td></tr><tr><td>Показать подключённые файловые системы <span class="caps">ZFS</span></td><td>`zfs mount`</td><td>`zfs mount` (без аргументов)</td></tr></tbody></table>

### Операции Моментального снимка

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5-2"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Создать моментальный снимок</td><td>`zfs snapshot`</td><td>`zfs snapshot tank/home@backup-2024`</td></tr><tr><td>Создание рекурсивного моментального снимка</td><td>`zfs snapshot -r`</td><td>`zfs snapshot -r tank/home@daily-2024`</td></tr><tr><td>Список моментальных снимков</td><td>`zfs list -t snapshot`</td><td>`zfs list -t snapshot -r tank/home`</td></tr><tr><td>Откат к моментальному снимку</td><td>`zfs rollback`</td><td>`zfs rollback tank/home@backup-2024`</td></tr><tr><td>Уничтожить моментальный снимок</td><td>`zfs destroy`</td><td>`zfs destroy tank/home@old-backup`</td></tr><tr><td>Переименовать моментальный снимок</td><td>`zfs rename`</td><td>`zfs rename tank/home@old tank/home@archived`</td></tr><tr><td>Клонировать моментальный снимок</td><td>`zfs clone`</td><td>`zfs clone tank/home@backup tank/home_clone`</td></tr><tr><td>Показать использование диска моментального снимка</td><td>`zfs list -o space`</td><td>`zfs list -r -o space tank`</td></tr></tbody></table>

### Отправка/получение (репликация)

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5-3"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Отправить снимок</td><td>`zfs send`</td><td>`zfs send tank/home@backup > /backup/home.zfs`</td></tr><tr><td>Отправлять инкрементные</td><td>`zfs send -i`</td><td>`zfs send -i @snap1 tank/home@snap2 > incremental.zfs`</td></tr><tr><td>Получить моментальный снимок</td><td>`zfs receive`</td><td>`zfs receive tank/home_restore < /backup/home.zfs`</td></tr><tr><td>Отправить по <span class="caps">SSH</span></td><td>`zfs send \| ssh`</td><td>`zfs send tank/home@backup \| ssh user@host zfs receive tank/backup`</td></tr><tr><td>Приемное устройство для сухого прогона</td><td>`zfs receive -n`</td><td>`zfs receive -n tank/test < backup.zfs`</td></tr><tr><td>Отправлять с прогрессом</td><td>`zfs send -v`</td><td>`zfs send -v tank/home@backup > backup.zfs`</td></tr></tbody></table>

### Общие настройки свойств

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5-4"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Включить сжатие</td><td>`zfs set compression=`</td><td>`zfs set compression=lz4 tank/data`</td></tr><tr><td>Включить дедупликацию</td><td>`zfs set dedup=`</td><td>`zfs set dedup=on tank/backup`</td></tr><tr><td>Установите размер записи</td><td>`zfs set recordsize=`</td><td>`zfs set recordsize=1M tank/media`</td></tr><tr><td>Включить шифрование</td><td>`zfs create -o encryption=`</td><td>`zfs create -o encryption=on -o keyformat=passphrase tank/secure`</td></tr><tr><td>Установите время доступа</td><td>`zfs set atime=`</td><td>`zfs set atime=off tank/database`</td></tr><tr><td>Настройка режима синхронизации</td><td>`zfs set sync=`</td><td>`zfs set sync=disabled tank/temp`</td></tr><tr><td>Включить нечувствительность к регистру</td><td>`zfs set casesensitivity=`</td><td>`zfs create -o casesensitivity=insensitive tank/windows`</td></tr></tbody></table>

### Мониторинг и техническое обслуживание

<table id="bkmrk-%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5-5"><thead><tr><th>Задача</th><th>Команда</th><th>Пример</th></tr></thead><tbody><tr><td>Показать статистику ввода-вывода</td><td>`zpool iostat`</td><td>`zpool iostat -v tank 2`</td></tr><tr><td>Показать статистику <span class="caps">ARC</span> (FreeBSD)</td><td>`sysctl kstat.zfs.misc.arcstats`</td><td>`sysctl kstat.zfs.misc.arcstats.size`</td></tr><tr><td>Показать статистику <span class="caps">ARC</span> (Linux)</td><td>`arc_summary`</td><td>`arc_summary` или `cat /proc/spl/kstat/zfs/arcstats`</td></tr><tr><td>Проверьте состояние бассейна</td><td>`zpool status -x`</td><td>`zpool status -x` (показывает только проблемы)</td></tr><tr><td>Показывать мероприятия в бассейне</td><td>`zpool events`</td><td>`zpool events -v`</td></tr><tr><td>Расчетное время очистки</td><td>`zpool status`</td><td>`zpool status` (во время скрабирования)</td></tr><tr><td>Показать степень сжатия</td><td>`zfs get compressratio`</td><td>`zfs get compressratio tank/data`</td></tr><tr><td>Показывать использование пространства по типу</td><td>`zfs list -o space`</td><td>`zfs list -r -o space tank`</td></tr></tbody></table>

### Полезные однострочники

```
# Find largest datasets
zfs list -o name,used -s used

# Show all snapshots sorted by creation
zfs list -t snapshot -o name,creation -s creation

# Calculate total snapshot space
zfs list -t snapshot -o used -p | awk '{sum+=$1} END {print sum/1024/1024/1024 " GB"}'

# Show datasets with compression disabled
zfs get -r compression tank | grep -v "lz4\|gzip\|zle"

# Monitor pool I/O in real-time
zpool iostat -v 1

# Show properties that differ from defaults
zfs get all tank | grep -v default

# Quick backup to remote system
zfs snapshot tank/important@$(date +%Y%m%d) && \
zfs send tank/important@$(date +%Y%m%d) | ssh backup-server zfs receive tank/backup-2024

```

## Быстрые Советы

- **Именование устройств**: в FreeBSD используются другие соглашения об именовании (ada0 для <span class="caps">SATA</span>, da0 для <span class="caps">SCSI</span>/<span class="caps">USB</span>), чем в Linux (sda, sdb и т. д.).
- **Сетевые интерфейсы**: в FreeBSD интерфейсы называются по драйверу (em0, re0, bge0), в то время как в Linux традиционно используются eth0, eth1 (сейчас часто используются предсказуемые имена, такие как enp0s3)
- **Файлы конфигурации**: в FreeBSD многие конфигурации сосредоточены в `/etc/rc.conf`, в то время как в Linux они распределены по разным файлам
- **Страницы руководства**: в обоих случаях используется `man command`, но страницы руководства FreeBSD зачастую более подробные
- **Порты и пакеты**: в FreeBSD есть и порты (исходный код), и пакеты (бинарные файлы), в то время как в Linux обычно используется один менеджер пакетов для каждого дистрибутива
- **<span class="caps">ZFS</span>**: <span class="caps">ZFS</span> в Linux (ZoL) изначально поддерживается FreeBSD, но достигла паритета функций. Команды идентичны, но загрузка модулей ядра различается (`kldload zfs` в FreeBSD и `modprobe zfs` в Linux)