Отобразить сообщения ядра при загрузке системы. Файл /var/run/dmesg.boot содержит информацию о текущем ядре, процессе его запуска и список обнаруженных ядром устройств.
Содержание
- Справка
man, apropos, whatis, info. 
- Пользователи и группы
adduser, rmuser, passwd, pw, vipw, id. 
- Устройства и ядро
/var/run/dmesg.boot, kenv, dmidecode, devinfo, pciconf, vmstat, camcontrol, atacontrol, smartctl, usbconfig, usbdevs, acpiconf, cu, kldstat, kldload, kldunload, sysctl, vidcontrol. 
- Сеть
ifconfig, wpa_passphrase, wpa_supplicant.conf, wpa_supplicant, wpa_cli, netstat -r, route, ping, arping, traceroute, drill, host, dig, nslookup, sockstat, netstat, iftop, arp, tcpdump, fetch, axel, openssl s_client, ssh, scp, snmpwalk. 
- Samba
testparm, pdbedit, smbpasswd, smbclient. 
- SMB-протокол
mount, smbutil. 
- Мониторинг системы
dmesg, systat, gstat, vmstat, w, who, last, fstat, lsof, truss. 
- Процессы
top, atop, ps, pgrep, killall, pkill, kill, procstat, nice, renice, idprio, rtprio. 
- Файловые системы
gpart, newfs, tunefs, glabel, dumpfs, fsck, fsdb, mount, ntfs-3g, umount, mdconfig, dump, restore, df, du. 
- Файлы
ls, stat, cp, mv, ln, truncate, mkdir, rm, chown, chgrp, chmod, bzip2, bzcat, tar, find, cpio, mtree, md5, md5deep. 
- Работа с текстом
cat, more, less, head, tail, ee, fg, grep, egrep, diff, sdiff, cut, awk, sed, iconv. 
- Дата и время
date, ntpdate, tzsetup, ncal. 
- Порты и пакеты
pkg, freebsd-update, portsnap, svnlite, svn, whereis, make, portupgrade, pkgdb, portaudit, ldd, libchk, service, rcorder. 
- Shell-скрипты
2>&1, mail, pgrep, test, stat, date, uname, sleep, exit. 
- Разное
tmux, bsdconfig, sysinstall, sysrc, service, bc, echo $, 7z b, script, tee. 
- Завершение работы
exit, shutdown, poweroff, halt, reboot. 
- Ссылки
 
Справка
man [номер секции] страница
Отобразить страницу справки.
man man
 
 
apropos ключевое-слово
whatis ключевое-слово
man -k ключевое-слово
man -f ключевое-слово
 
info [раздел] [подраздел]
Чтение документации в формате Info.
 
 
Пользователи и группы
passwd [пользователь]
Сменить пароль пользователя.
Если пользователь не задан, сменить свой пароль.
man passwd
 
 
pw lock пользователь
Заблокировать пользователя.
 
 
pw unlock пользователь
Разблокировать пользователя.
man pw
 
 
vipw
Открыть файл паролей в текстовом редакторе.
Будет запущен редактор, заданный в переменной окружения EDITOR, по умолчанию vi. В скрипте запуска командной оболочки: «/root/.cshrc«, в строке: «setenv EDITOR«, можно задать другой редактор, например ее или mcedit.
man vipw
 
 
pw groupmod группа -m пользователь1,пользователь2
Добавить пользователей в группу.
 
 
pw groupmod группа -d пользователь1,пользователь2
Удалить пользователей из группы.
 
 
pw groupshow группа
Отобразить пользователей группы.
man pw
 
 
id пользователь
Отобразить принадлежность пользователя к группам.
man id
 
 
Устройства и ядро
cat /var/run/dmesg.boot
less /var/run/dmesg.boot
Отобразить сообщения ядра при загрузке системы. Файл /var/run/dmesg.boot содержит информацию о текущем ядре, процессе его запуска и список обнаруженных ядром устройств.
 
 
kenv
Отобразить параметры загрузки ядра, модель материнской платы и версию BIOS.
man kenv
 
 
dmidecode
Отобразить информацию из DMI/SMBIOS о материнской плате, процессоре и памяти.
Требуется установка порта dmidecode.
man dmidecode
 
 
devinfo -r
Дерево устройств с информацией об используемых ресурсах (IRQ, DMA, Memory).
 
 
devinfo -u
Список устройств с группировкой по типу ресурса.
man devinfo
 
 
vmstat -i
Информация о количестве прерываний (IRQ) и использующих их устройств.
Полезно для решения проблемы высокой нагрузки процессора обработчиками прерываний (% interrupt, отображаемый командой top).
man vmstat
 
 
camcontrol devlist
atacontrol list
Список подключенных SCSI/ATA дисков.
 
 
camcontrol identify ada0
atacontrol cap ad0
Информация о SCSI/ATA диске.
 
 
camcontrol negotiate ada0 -v
atacontrol mode ad0
 
smartctl —scan
Список устройств поддерживаемых smartctl.
Требуется установка порта smartmontools.
 
 
smartctl -i /dev/ada0
Информация о дисковом устройстве и поддержке SMART.
 
 
smartctl -s on /dev/ada0
Включение SMART на устройстве.
 
 
smartctl —attributes /dev/ada0
Получить SMART-атрибуты с устройства.
 
 
smartctl -a /dev/ada0
smartctl -x /dev/ada0
 
usbconfig
Управление USB устройствами. Версия FreeBSD 8 и выше.
man usbconfig
 
 
usbdevs -dv
Информация о USB устройствах. Версии FreeBSD 7 и более ранние.
man usbdevs
 
 
cu -l cuadN
Подключение терминалом к устройству на COM-порте N. Для завершения сессии ввести «~.» с новой строки.
man cu
 
 
kldstat
Список динамически загруженных драйверов.
 
 
kldstat -v -n kernel
Список драйверов, статически скомпилированных в ядро.
man kldstat
 
 
kldload драйвер1 драйвер2 …
Загрузить драйверы.
Для постоянной загрузки драйвера при старте системы, необходимо добавить параметр: драйвер_load=»YES» в /boot/loader.conf.
man kldload
man loader.conf
 
 
kldunload драйвер1 драйвер2 …
kldunload -i id1 id2 …
 
sysctl -a
Отобразить список переменных ядра.
-d — отображать описания переменных, вместо их значений.
 
 
sysctl переменная
var=`sysctl -n переменная`
Отобразить значение переменной ядра. Либо задать значение переменной скрипта.
 
 
sysctl переменная=значение
 
vidcontrol -i mode | more
vidcontrol MODE_режим
 
vidcontrol -P -H < /dev/ttyv0
Получить содержимое первой физической консоли.
-H — включая буфер истории.
Для записи сообщений выводимых на консоль в лог-файл, необходимо раскомментировать строчку в /etc/syslog.conf:
console.info                                    /var/log/console.log
Создать лог-файл и задать права доступа:
touch /var/log/console.log
chmod  600 /var/log/console.log
man vidcontrol
man syslog.conf
 
 
Сеть
ifconfig
Отобразить список сетевых интерфейсов, соответствующие им IP и MAC-адреса, статус и параметры подключения.
 
 
ifconfig ifn inet 192.168.0.1 netmask 255.255.255.0
ifconfig ifn inet 192.168.0.1/24
Задать IP-адрес и маску сети для интерфейса ifn. Адрес действителен до перезагрузки системы.
Постоянный адрес задается в /etc/rc.conf строкой:
ifconfig_интерфейс="inet 192.168.0.1 netmask 255.255.255.0"
 
 
ifconfig ifn inet 192.168.0.2 netmask 255.255.255.255 alias
ifconfig ifn inet 192.168.0.2 netmask 0xffffffff add
 
ifconfig ifn inet 192.168.0.2 -alias
ifconfig ifn inet 192.168.0.2 delete
Удалить IP-адрес для интерфейса ifn.
 
 
ifconfig ifn ether 00:1D:7D:E5:E5:EF
Задать MAC-адрес для интерфейса ifn.
Для постоянной подмены MAC-адреса, необходимо создать стартовый скрипт /etc/start_if.интерфейс, и прописать данную команду.
 
 
ifconfig ifn media 100baseTX mediaopt full-duplex
Принудительно задать стандарт передачи данных для интерфейса ifn, в случае, если при автосогласовании скорость определена неверно.
Для постоянного переопределения скорости, корректируем параметр ifconfig_интерфейс в /etc/rc.conf:
ifconfig_интерфейс="inet 192.168.0.1 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex"
 
 
ifconfig -m ifn
Отобразить список поддерживаемых стандартов передачи данных интерфейсом ifn.
 
 
ifconfig wlan0 create wlandev ath0
ifconfig wlan0 up scan
Создать псевдоустройство wlan0 на базе ath0. Сканировать и отобразить доступные точки доступа Wi-Fi.
man ifconfig
 
 
wpa_passphrase ИдентификаторСети [Пароль] > /etc/wpa_supplicant.conf
 
ifconfig wlan0 create wlandev ath0
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
dhclient wlan0
1. Создать псевдоустройство wlan0 на базе ath0.
2. Подключиться к беспроводной сети.
Дополнительные параметры для wpa_supplicant:
-B — запуск в фоновом режиме.
-s — отправлять сообщения в syslog вместо текущего терминала.
3. Получить сетевые реквизиты с DHCP-сервера.
Для автоматического подключения при старте системы добавим в /etc/rc.conf следующие параметры:
wlans_ath0="wlan0"
ifconfig_wlan0="DHCP WPA"
man wpa_supplicant
man rc.conf
Руководство FreeBSD: Wireless Networking
 
 
wpa_cli status
Статус текущего беспроводного подключения.
Для работы команды необходимо настроить интерфейс управления в wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
man wpa_cli
 
 
route add -net 192.168.1.0/24 192.168.2.1
Добавить маршрут к сети 192.168.1.0, маска /24, шлюз 192.168.2.1.
 
 
route add -host 192.168.1.123 192.168.2.1
Добавить маршрут к хосту 192.168.1.123, шлюз 192.168.2.1.
 
 
route add default 192.168.2.1
route change default 192.168.2.1
Задать шлюз по умолчанию 192.168.2.1.
 
 
route del -net 192.168.1.0/24
Удалить маршрут к сети 192.168.1.0, маска /24.
 
 
ping -s 1470 -c 10 адрес
Проверка связи до заданного узла, оценка задержек и потерь.
-s — размер пакета без учета ICMP-заголовка (8 байт для TCP/IPv4).
-c — количество запросов. Если ключ -c не задан, пинг выполняется до остановки вручную по Ctrl+C.
man ping
 
 
arping 192.168.0.1
Пинг ARP-пакетами. Полезно если внутрисетевой хост не отвечает на ICMP-запросы.
Требуется установка порта arping.
man arping
 
 
traceroute -I адрес
Трассировка маршрута ICMP пакетами до заданного адреса. Если не указан ключ -I трассировка ведется UDP пакетами.
 
 
traceroute -P TCP -ep 443 адрес
Трассировка маршрута TCP пакетами на фиксированный порт. Полезно для обнаружения вышестоящих брандмауэров, блокирующих порты.
man traceroute
 
 
drill адрес [@DNS-сервер] [типЗаписи]
host [-t типЗаписи] адрес [DNS-сервер]
dig [@DNS-сервер] адрес [типЗаписи]
nslookup [-query=типЗаписи] адрес [DNS-сервер]
 
sockstat -l -4
Список открытых портов.
-4 — отображать только порты протокола TCP/IP v4 (не отображать UNIX-сокеты).
-L — не отображать порты, открытые на локальных адресах: 127.0.0.0/8.
-u — отображать только UNIX-сокеты.
 
 
sockstat -c -4
Список установленных сетевых соединений.
-4 — отображать только соединения по протоколу TCP/IP v4 (не отображать UNIX-сокеты).
-p порт1,порт2,... — фильтр соединений по заданным портам.
Также отображается пользователь и процесс, установивший соединение.
man sockstat
FreeBSD. Подробное руководство: Открытые порты
 
 
netstat -nf inet
Список установленных сетевых соединений и открытых UDP-портов.
-n — отображать адреса и порты в числовом формате.
-f inet — отображать только соединения по протоколу TCP/IP v4 (не отображать UNIX-сокеты).
-x — отображать статистику сокетного буфера и tcp-таймеров.
В полях Recv-Q и Send-Q отображается входящая и исходящая очередь пакетов. Ненулевое значение входящей очереди, сигнализирует о проблеме: локальное приложение не успевает обрабатывать входящий трафик. Наличие исходящей очереди, является нормой, локальное приложение формирует трафик быстрее, чем он отправляется по сети.
 
 
netstat -i
Состояние сетевых интерфейсов. Число полученных и отправленных пакетов, количество ошибок и коллизий.
-d — отображать число отброшенных пакетов.
-b — отображать число полученных и отправленных байт.
-h — отображать данные в удобочитаемом формате.
 
 
netstat -w секунды [-I интерфейс]
Мониторинг числа полученных и отправленных пакетов, байт, количества ошибок и коллизий в заданном временном интервале.
-w — итервал в секундах.
-I — сетевой интерфейс для мониторинга. Если интерфейс не задан, отображаются суммарные данные по всем интерфейсам.
-q количество — выход после заданного каличества интервалов.
-d — отображать число отброшенных пакетов.
man netstat
UnixSystem: Команда netstat: получение всевозможной информации о состоянии сети
 
 
iftop -i интерфейс
Мониторинг текущей загрузки сети.
Данные отображаются в реальном времени в формате: источник, получатель, средняя скорость (бит/с) за последние 2 секунды, 10 секунд, 40 секунд.
Требуется установка порта iftop.
Ключи запуска:
-F 192.168.0.0/16 — считать внешний трафик относительно заданной сети.
-t — текстовый режим вывода, без использования ncurses.
Параметры запуска могут быть заданы в файле конфигурации, путь по умолчанию ~/.iftoprc
Горячие клавиши:
s, d — агрегация по источнику или получателю.
S, D — отображать порты для источника и получателя.
t — режим отображения.
<, >, 1, 2, 3 — Сортировка по источнику, получателю или одной из трех колонок скорости.
P, o — пауза или заморозка отображения.
j, k — прокрутка списка.
q — выход.
man iftop
 
 
arp -an
arp хост
Отобразить текущую ARP-таблицу или запись для заданного хоста.
-a — отобразить все записи.
-n — адреса в числовом формате.
-i — на заданном сетевом интерфейсе.
man arp
 
 
tcpdump -i интерфейс -n host 192.168.0.1
Перехват и анализ сетевого трафика, для заданного IP-адреса.
-i — сетевой интерфейс для захвата пакетов.
-n — отображать адреса и порты в числовом формате, не выполнять реверсных DNS-запросов.
-e — отображать данные канального уровня (MAC-адрес, протокол, длина пакета).
-A — отображать данные пакета в текстовой форме.
-s размер — число байт, захватываемых из пакета, по умолчанию начиная с FreeBSD 9 — 65535, в предыдущих версиях — 96 байт.
-w файл — запись пакетов в файл. Полученный файл можно просмотреть в Tcpdump или загрузить в Wireshark.
-C размер — максимальный размер сохраняемого файла, при превышении будет создан новый файл со следующим порядковым номером. Размер задается в миллионах байт.
-c число — максимальное количество захватываемых пакетов, выход при превышении заданного количества.
 
 
tcpdump -i интерфейс tcp port 80 or 443
Перехват сетевого трафика, по заданным портам.
 
 
tcpdump -i интерфейс ether host 11:22:33:44:55:66
Перехват сетевого трафика, для заданного MAC-адреса.
 
 
tcpdump -i интерфейс «ether[0:4] >> 8 = 0x112233 or ether[6:4] >> 8 = 0x112233«
 
fetch URL
Загрузить файл по заданному URL.
-o имя — задать имя локального файла.
-n — не сохранять дату модификации файла.
Поддерживаются протоколы: HTTP, HTTPS, FTP.
При работе по HTTPS-протоколу возникнет ошибка: «Certificate verification failed», необходимо установить пакет корневых сертификатов ca_root_nss, поддерживаемый проектом Mozilla, и создать ссылку в /etc/ssl:
pkg install ca_root_nss
ln -s /usr/local/share/certs/ca-root-nss.crt /etc/ssl/cert.pem
man fetch
 
 
axel -a URL [зеркала]
Многопоточная загрузка файла по заданным URL с поддержкой докачки.
-a — отображать однострочный индикатор прогресса.
-n — число потоков загрузки, по умолчанию 4.
-o путь — путь и (или) имя сохраняемого файла
Требуется установка порта axel.
man axel
 
 
openssl s_client -connect адрес:порт
 
ssh [пользователь@]сервер
Установить SSH-подключение к серверу.
-i путь — путь к ключу авторизации.
-p порт — порт для подключения.
Параметры подключения к серверу могут быть заданы в файле конфигурации: ~/.ssh/config, или /etc/ssh/ssh_config.
Для завершения подключения, вводим комбинацию «~.» в новой строке.
SSH также поддерживает форвардинг TCP-подключений и создание VPN-туннелей через защищенное SSH-подключение.
man ssh
 
 
scp файл1 файл2 … [пользователь@]сервер:[путь-назначения]
scp [пользователь@]сервер:»файл1 файл2 …» путь-назначения
Передача файлов по SSH-протоколу на сервер, или с сервера.
-i путь — путь к ключу авторизации.
-P порт — порт для подключения.
-r — рекурсивное копирование каталогов.
-p — сохранить дату модификации и доступ исходного файла.
-C — использовать gzip-сжатие.
При передаче одного файла с сервера кавычки не требуются.
Для загрузки файлов в домашнюю папку пользователя на удаленном сервере или в текущую локальную папку, в качестве пути назначения, указываем точку.
man scp
 
 
snmpwalk -v 2c -Cp -c public адрес .iso
Получить всю доступную информацию от SNMP-агента.
-v — версия SNMP-протокола: 1, 2с, 3.
-Cp — отобразить общее число полученных переменных.
-c public — строка сообщества, она же пароль.
Требуется установка порта net-snmp.
man snmpwalk
Сайт проекта: www.net-snmp.org
 
 
Samba
Требуется установка порта samba.
pdbedit -L -v
Получить список пользователей Samba.
-v — отобразить подробную информацию о пользователях.
man pdbedit
 
 
smbpasswd -a логин
Добавить пользователя.
Предварительно пользователь должен быть зарегистрирован в системе командой adduser.
 
 
smbclient //server/share -U ‘логин%пароль’ -D ПапкаНаСервере -c ‘prompt off;del *;mput *’ 2>/dev/null
Копирование текущей папки на удаленный SMB сервер, с предварительной очисткой удаленной папки.
2>/dev/null — отключает вывод сообщений при использовании в сценарии.
Требуется установка порта samba-smbclient.
man smbclient
 
 
SMB-протокол
Команды входят в базовую поставку FreeBSD, установка пакета Samba не требуется. Подробнее о настройке SMB-клиента читаем FreeBSD. Подробное руководство: FreeBSD и CIFS.
mount -t smbfs -o -E=KOI8-R:CP866 //пользователь@сервер/ресурс /mnt
mount -t smbfs -o -E=KOI8-R:CP866,-I=адрес //пользователь@сервер/ресурс /mnt
Подключить сетевой диск Windows.
-I=адрес — использовать заданный IP-адрес или DNS, минуя разрешение имен NetBIOS.
Подключение производится по устаревшему SMB-протоколу на 139 порт.
man mount_smbfs
 
 
smbutil lookup хост
Получить IP-адрес по NetBIOS-имени хоста.
 
 
smbutil view //пользователь@хост
Отобразить список сетевых дисков хоста.
Требует ручной загрузки модуля ядра, командой: kldload smbfs.ko
man smbutil
 
 
Мониторинг системы
dmesg -a
Отобразить недавние сообщения ядра. -a — отобразить весь буфер сообщений системы, включая записи syslog и сообщения консоли.
man dmesg
 
 
systat -ifstat
Мониторинг нагрузки сетевых интерфейсов.
 
 
systat -netstat
Мониторинг текущих сетевых подключений.
 
 
systat -iostat
Мониторинг загрузки процессора и дисковой подсистемы.
 
 
systat -ip
Мониторинг статистики IP протокола.
 
 
last
Список последних пользовательских сессий.
man last
 
 
fstat -f /mnt/fs
Отобразить все файлы, открытые на заданной файловой системе, а также открывшие их процессы. Полезно если не удается размонтировать файловую систему или перевести ее в режим чтения.
man fstat
 
 
lsof
Отобразить все открытые файлы, сокеты, сетевые подключения и открывшие их процессы.
Требуется установка порта lsof.
man lsof
 
 
truss command
truss -p PID
Отобразить системные вызовы команды или запущенного процесса: операции с файлами и библиотеками, управление памятью, сигналы и пр.
Смотри также: ktrace, strace, DTrace.
man truss
 
 
Процессы
atop
Мониторинг нагрузки на процессор, память, дисковую подсистему и сеть. Отображение списка активных процессов. Возможность фонового сбора статистики.
Требуется установка порта atop.
man atop
 
 
ps -ax -l
procstat -a
Отобразить список процессов.
Параметры команды ps:
-a — отображать процессы всех пользователей.
-x — отображать процессы не связанные с терминалами.
-j, -l, -u, -v вывод различного набора столбцов.
-d — отобразить процессы в виде дерева родитель-потомок.
-r — упорядочить список по текущей нагрузке на процессор.
-ww — отображать команду запуска полностью.
 
 
ps -lp PID
ps -axl | grep процесс
 
pgrep -l regexp-шаблон
Найти процессы с именем, соответствующим заданному шаблону. Проверить, запущен ли процесс.
-l — отображать имя процесса в дополнение к идентификатору.
man pgrep
 
 
killall имя-процесса
pkill regexp-шаблон
Отправить сигнал завершения всем процессам с заданным именем, либо именем, соответствующим заданному шаблону.
man killall
man pkill
 
 
kill PID
Отправить сигнал завершения процессу с заданным PID.
man kill
 
 
procstat -b -a
procstat -b PID
procstat -b `pgrep -a ^процесс$`
Отобразить путь к исполняемому файлу процесса.
 
 
procstat -c -a
procstat -c PID
procstat -c `pgrep -a ^процесс$`
Отобразить командную строку запуска процесса.
 
 
procstat -f PID
procstat -f `pgrep -a ^процесс$`
Отобразить список файлов, открытых процессом.
 
 
procstat -s PID
procstat -s `pgrep -a ^процесс$`
Отобразить параметры безопасности процесса: идентификаторы пользователя и группы, umask, флаги.
 
 
procstat -t PID
procstat -t `pgrep -a ^процесс$`
 
nice -n 20 команда
Выполнить команду с минимальным приоритетом.
man nice
 
 
renice приоритет -p PID
Задать приоритет процессу.
Приоритет задается в диапазоне от -20 до 20, отрицательные значения увеличивают приоритет, положительные — уменьшают.
man renice
 
 
idprio 15 команда
idprio 15 —PID
Выполнять команду или процесс только при простое системы.
15 — приоритет среди других процессов, работающих в режиме бездействия.
man idprio
 
 
rtprio 15 команда
rtprio 15 —PID
Выполнять команду или процесс в реальном времени.
15 — приоритет среди других процессов реального времени.
man rtprio
 
 
Файловые системы
gpart show -p ada0
Отобразить таблицу разделов на диске ada0.
-p — отобразить имена устройств, вместо индексов разделов.
 
 
gpart add -t freebsd-boot -a 8 -s 64kb ada5
gpart bootcode -p /boot/gptboot -i 1 ada5
Создать загрузочный раздел, -s размером 64Кб, -a 8 — выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.
Записать загрузчик системы, -i — индекс раздела для записи загрузчика.
 
 
gpart add -t freebsd-swap -a 8 -s 4gb ada5
Создать swap-раздел, -s — размером 4Гб , -a 8 — выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.
 
 
gpart add -t freebsd-ufs -a 8 -s 10gb ada5
Создать UFS-раздел, -s — размером 10Гб, -a 8 — выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.
 
 
gpart add -t freebsd-ufs -a 8 ada5
Создать UFS-раздел, занимающий все доступное пространство, -a 8 — выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.
 
 
gpart delete -i 3 ada5
Удалить раздел на диске ada5. -i — индекс раздела.
 
 
newfs -j -L метка ada5p1
Создать новую файловую систему, оно же форматирование раздела. Все данные на указанном устройстве будут уничтожены.
-U — включить Soft Updates.
-j — включить журналирование Soft Updates (версия FreeBSD 9 и выше), при использовании этого режима в FreeBSD 9.1 не поддерживаются снапшоты, вследствие чего не работает dump для смонтированных файловых систем.
-L — метка тома. Позволяет монтировать файловую систему из /dev/ufs/метка, без привязки к имени контроллера и номеру порта.
man newfs
 
 
tunefs -j enable /dev/ada0p2
Задать параметры файловой системы. Файловая система должна быть размонтирована, либо смонтирована в режиме чтения. -n enable — включить Soft Updates. -j enable — включить журналирование Soft Updates (версия FreeBSD 9 и выше), при использовании этого режима в FreeBSD 9.1 не поддерживаются снапшоты, вследствие чего не работает dump для смонтированных файловых систем.
Руководство FreeBSD: Soft Updates
 
 
tunefs -L метка /dev/ada0p2
Задать метку для файловой системы. Позволяет монтировать файловую систему из /dev/ufs/метка, без привязки к имени контроллера и номеру порта. Файловая система должна быть размонтирована.Начиная с FreeBSD 7.2, поддерживаются метки на основе уникальных идентификаторах файловых систем, называемых ufsid. Что позволяет монтировать файловую систему из /dev/ufsid/идентификатор, без необходимости присвоения меток.
man tunefs
 
 
glabel label метка /dev/ada0p1
Задать метку на уровне GEOM. Работает для swap-раздела, и любых других файловых систем, включая UFS2. Позволяет монтировать файловую систему из /dev/label/метка, без привязки к имени контроллера и номеру порта.
 
 
glabel status
glabel list
 
fsdb -r /dev/ada0p2
Низкоуровневое редактирование файловой системы. Использовать с осторожностью, можно убить файловую систему. -r — запуск в режиме чтения, команды модификации будут недоступны.
man fsdb
 
 
mount
Отобразить смонтированные устройства и параметры монтирования.
-p — вывод в формате fstab.
-v — вывод дополнительной информации о файловых системах.
 
 
mount -ufr /usr
Перевод смонтированной файловой системы в режим чтения.
 
 
mount -t msdosfs -o -L=ru_RU.KOI8-R,-D=CP866 /dev/da0 /mnt
 
umount /mnt
Демонтировать устройство.
-f — демонтировать принудительно, если устройство используется.
man umount
 
 
mount -t cd9660 -o -C=KOI8-R /dev/`mdconfig -f образ.iso` /mnt
mount -t udf -o -C=KOI8-R /dev/`mdconfig -f образ.iso` /mnt
Монтировать iso-образ диска.
Команда «mdconfig -f образ.iso» создает виртуальный диск и возвращает имя устройства.
Затем команда «mount -t cd9660 /dev/устройство /media» монтирует созданный диск в /media.
man mount_cd9660
man mount_udf
 
 
umount /media && mdconfig -d -u 0
Демонтировать виртуальный диск.
После размонтирования необходимо отключить виртуальный диск командой mdconfig -d. Параметр «-u 0» задает номер md-устройства.
 
 
mdconfig -lv
Отобразить список подключенных виртуальных дисков.
man mdconfig
 
 
dump -a -C 32 -L -f архив /
Резервное копирование файловой системы (раздела).
-a — отключить разбивку архива по лентам, разбивать только при исчерпании дискового пространства.
-C — размер кэша в мегабайтах.
-L — бэкап файловой системы, смонтированной на запись, использовать снапшот (не работает в FreeBSD 9.1 при использовании журналирования Soft Updates).
-f — путь к архиву.
/ — точка монтирования копируемой файловой системы.
 
 
dump -a -C 32 -L -f — / | gzip -9 > архив.gz
Резервное копирование файловой системы с gzip-сжатием. -9 — степень сжатия от 1 до 9.
man dump
man gzip
 
 
restore -rf архив
Восстановление файловой системы из резервной копии в текущую папку. Перед восстановлением файловую систему необходимо отформатировать (newfs), смонтировать (mount), сделать текущей папкой (cd). При загрузке с LiveCD, также необходимо смонтировать раздел /tmp, либо задать путь в переменной окружения TMPDIR, при нехватке свободного пространства в /tmp возникнет ошибка.
 
 
gunzip -c архив.gz | restore -rf —
Восстановление файловой системы из сжатого gzip-архива.
man gunzip
 
 
restore -xf архив [путь1 путь2 …]
Извлечение файлов в текущую папку. Путь задает папки или файлы для извлечения.
 
 
restore -tf архив [путь1 путь2 …]
Список файлов в архиве с фильтром по заданному пути.
 
 
df [-g]
Отобразить свободное место на дисках.
-g — в гигабайтах.
-m — в мегабайтах.
man df
 
 
du -kxd 1 папка | sort -n
Рассчитать объем дискового пространства, занимаемое папкой и ее подпапками. Сортировать список по возрастанию.
-k — отображать объем в килобайтах.
-x — игнорировать точки монтирования.
-d 1 — отображать размер подпапок с уровнем вложенности не более 1.
По умолчанию, символические ссылки и повторные жесткие ссылки не учитываются. Расчет ведется в занятых блоках на диске.
man du
man sort
FreeBSD. Подробное руководство: Насколько заполнен раздел?
 
 
Файлы
ls -lT [папка]
Список файлов в папке.
-T — отображать полную дату и время модификации.
-i — отображать номер индексного дескриптора файла (inode).
 
 
ls -lTUtr [папка]
Список файлов в папке.
-U — в качестве даты использовать дату создания,
-t — сортировать список по убыванию даты,
-r — сортировать в обратном порядке.
man ls
 
 
stat файл
stat -x файл
Отображение информации о файле.
-x — в развернутом формате с заголовками полей. В этом режиме не отображается дата создания файла.
man stat
 
 
cp файл1 файл2 … папка
Копировать файлы в заданную папку.
 
 
cp -Rpx папка1 папка2 … папка-назначение
cp -Rpx папка-источник/ папка-назначение
Копировать заданные папки в папку назначения либо копировать содержимое папки источника в папку назначения.
-R — включая вложенные папки,
-p — копировать атрибуты и права доступа,
-x — исключить файлы с других файловых систем.
man cp
 
 
mv источник назначение
mv файл1 файл2 папка-назначение
Переименование либо перемещение файлов.
man mv
 
 
ln -s файл ссылка
ln -s файл1 файл2 папка
Создать символическую ссылку.
man ln
 
 
truncate -s 0 файл
Усечь размер файла до нуля. Полезно для обнуления логов, в отличие от удаления, открытые ранее дескрипторы не устаревают, запись в лог-файл будет продолжена, перезапуск демона не требуется.
man truncate
 
 
mkdir -p путь
Создать папку, -p создавать родительские папки, если отсутствуют.
man mkdir
 
 
rm файл1 файл2 …
rm -r папка …
Удалить файл либо удалить папку, включая вложенные папки и файлы. -P — уничтожение файлов путем тройной перезаписи содержимого.
man rm
 
 
chown пользователь:группа файл1 файл2 …
 
chgrp группа файл1 файл2 …
 
chmod 755 файл1 файл2 …
chmod -R 755папка …
Задать права доступа к указанным файлам, или для всех файлов в заданной папке. -R — включая подпапки.
Доступ определяется восьмеричными значениями, каждое из которых соответственно задает разрешения для владельца файла, группы-владельца и остальных пользователей. Права доступа определяются суммой следующих значений: 4 — чтение, 2 — запись, 1 — исполнение файла. В рассмотренном примере, режим 755 разрешает чтение, запись и исполнение владельцу; чтение и исполнение для одногруппников и прочих пользователей
 
 
chmod 6755 файл
Особый режим запуска двоичного исполняемого файла: 4 — setuid, запускать от имени владельца вместо текущего пользователя; 2 — setgid, запускать от имени группы-владельца. Использование данных флагов для файлов с владельцем root, представляет собой риск повышения привилегий. Система уведомляет об обнаружении таких файлов в ежедневном отчете безопасности.
 
 
bzip2 файл1 файл2 …
Сжать файлы в файл1.bz2, файл2.bz2 с удалением исходных файлов.
man bzip2
 
 
bzcat файл.bz2
Отобразить содержимое сжатого файла, оно же распаковка на стандартный вывод. Имеется также bzgrep.
man bzcat
 
 
bzip2 -d файл1.bz2 файл2.bz2 …
Распаковать файлы с удалением сжатой версии.
man bzip2
 
 
tar -cyf архив.tar.bz2 файл1 файл2 …
Архивация файлов и папок в tar.bzip2-архив.
 
 
tar -czf архив.tar.gz файл1 файл2 …
Архивация файлов и папок в tar.gzip-архив.
 
 
tar -tvvf архив.tar
Отобразить список файлов в tar-архиве.
 
 
tar -xf архив.tar -C папка-назначение
Извлечь все файлы из tar-архива в заданную папку.
man tar
 
 
find папка -depth -print0 | cpio -o0 -y -F архив.cpio
Архивация папки в cpio-архив. Список файлов, сформированный командой find, подается на ввод cpio. -y включает bzip2-сжатие, также доступные алгоритмы сжатия: -J — xz, -lzma — LZMA, -z — gzip, -Z — compress.
man find
 
 
cpio -itF архив.cpio
Отобразить список файлов в cpio-архиве.
 
 
mtree -c -x -K cksum -K md5digest -K sha256digest -p папка > mtree.out
Рассчитать контрольные суммы, MD5 и SHA-256 хеши для файлов в указанной папке. Сохранить полученную спецификацию в файле mtree.out. -x — пропускать точки монтирования.
 
 
mtree -f список1 -f список2
 
md5 -r файл1 файл2 …
sha256 -r файл1 файл2 …
 
md5deep -rel -o f * >files.md5
Создать список хешей для всех файлов в текущей папке, и сохранить в files.md5.
-r — включая подпапки.
-e — отображать прогресс.
-l — выводить относительные пути.
-o f — обсчитывать только файлы (исключить символьные ссылки).
Требуется установка порта md5deep.
 
 
md5deep -erlx files.md5 -o f *
Сравнить все файлы в текущей папке со списком: -x /path/to/files.md5, созданным ранее и отобразить различия, Для частичной проверки файлов можно указать путь к папке.
CFV — программа с тем же функционалом.
AIDE — контроль целостности системы путем сравнения хешей файлов с рассчитанными ранее.
man md5deep
 
 
Работа с текстом
cat файл
more файл
less файл
 
cat файл1 файл2 >файл3
Объединить текстовые файлы.
man cat
 
 
head
Отобразить первые десять строк файла.
man head
 
 
tail
Отобразить последние десять строк файла.
 
 
tail -f файл
Отобразить последние десять строк файла, ожидать и отображать последующие добавляемые в файл строки. Удобно для мониторинга логов в реальном времени.
man tail
 
 
fg
Вернуться в программу, приостановленную по Ctrl+Z.
 
 
grep -R text *
Поиск текста во всех файлах текущей папки, включая вложенные папки.
man grep
 
 
egrep «^[^#]» файл
egrep -v ‘^ *[#]|^$’ файл
Отобразить незакомментированные строки в файле конфигурации. Второй вариант корректно обрабатывает пробелы перед символом комментария.
man egrep
 
 
diff файл1 файл2
Сравнить файлы, отобразить различия.
man diff
 
 
sdiff -s файл1 файл2
Сравнить файлы, отобразить различия с выводом в два столбца. -s — отображать только несовпадающие строки.
man sdiff
 
 
diff -r папка1 папка2
Сравнение файлов двух папках. -r — включая вложенные папки.
man diff
 
 
cut -d : -f 1,3 /etc/passwd
Отобразить определенные столбцы файла, в данном примере — имена и идентификаторы пользователей. Ключ «-d :» задает разделитель столбцов — двоеточие, ключ -f задает вывод первого и третьего столбца.
man cut
 
 
awk -F: ‘{print($1);}’ /etc/passwd
Отобразить определенный столбец файла средствами awk, в данном примере — список имен пользователей. Ключ -F: задает разделитель столбцов — двоеточие, команда print($1); отображает первый столбец. Описание языка.
man awk
 
 
sed -i .bak «s/найти/заменить/gI» file
Поиск и замена текста в файле. Ключ -i — править исходный файл, сохранить копию, добавив к имени файла .bak. Строка поиска является регулярным выражением. Флаги: g — заменять все найденные вхождения, I — поиск без учета регистра.
man sed
 
 
iconv -f koi8-r -t cp1251file.txt
Перекодировать файл из KOI8-R в кодировку Windows-1251.
В FreeBSD 10 входит в базовую систему, для предыдущих версий потребуется установка порта iconv.
man iconv
Википедия: iconv
 
 
Дата и время
date
Отобразить текущую дату и время.
 
 
date 200902200351
Установить дату и время в 20.02.2009 03:51.
 
 
date 0351
Установить время в 03:51 без изменения даты.
man date
 
 
date -j 200902200351 ‘+%s’
Преобразовать время в формате год, месяц день, часы, минуты в UNIX-время.
 
 
ncal [-my месяц год]
Отобразить календарь на текущий или заданный месяц.
man ncal
 
 
Порты и пакеты
pkg install пакет1 [пакет2 …]
 
pkg search РегулярноеВыражение
 
pkg delete -f пакет1 [пакет2 …]
Деинсталлировать заданные пакеты или порты,
-f — принудительное удаление, если имеются зависимые пакеты.
man pkg-delete
 
 
pkg autoremove
Удалить пакеты, которые были установлены в качестве зависимостей и больше не требуются.
man pkg-autoremove
 
 
pkg info
Список установленных пакетов.
 
 
pkg info пакет
pkg info -drl пакет
Информация об установленном пакете:
-d — список пакетов, от которых зависит данный пакет;
-r — список пакетов, которые зависят от данного пакета;
-l — список установленных файлов.
man pkg-info
 
 
pkg which /полный/путь/к/файлу
Определить пакет, которому принадлежит указанный файл.
man pkg-which
 
 
pkg check -s -a
Проверить целостность установленных пакетов, отобразить измененные файлы.
man pkg-check
 
 
pkg lock пакет
pkg unlock пакет
Заблокировать или разблокировать операции с пакетом и его зависимостями.
Блокировка необходима для предотвращения автоматического обновления программ, собранных из портов с нестандартными параметрами.
Для удаления заблокированного пакета, его необходимо разблокировать.
man pkg-lock
 
 
pkg upgrade
Обновить установленные пакеты.
Ранее загруженные версии пакетов сохраняются в папке /var/cache/pkg. В случае проблем после обновления, можно переустановить предыдущую версию пакета из этой папки.
man pkg-upgrade
 
 
pkg query «%t %#d %n-%v» | sort
 
portsnap fetch extract
Получить коллекцию портов, используя portsnap.
 
 
svnlite checkout svn://svn.FreeBSD.org/ports/head /usr/ports
svn checkout svn://svn.FreeBSD.org/ports/head /usr/ports
Получить коллекцию портов, используя Subversion.
При переходе на Subversion, для исключения конфликтов, необходимо удалить имеющуюся коллекцию портов:
rm -r /usr/ports
mkdir /usr/ports
Команда svnlite доступна начиная с FreeBSD 10. В предыдущих версиях требуется установка полной версии из порта subversion.
 
 
svnlite update /usr/ports
svn update /usr/ports
Обновить коллекцию портов, используя Subversion.
 
 
svnlite log -l 10 /usr/ports/категория/порт
svn log -l 10 /usr/ports/категория/порт
Получить журнал ревизий порта.
-l — число получаемых записей
-q — список ревизий в кратком формате
 
 
svnlite update -r номер ревизии /usr/ports/категория/порт
svn update -r номер ревизии /usr/ports/категория/порт
Откатить порт к заданной ревизии.
 
 
whereis порт
Найти путь к заданному порту.
Кроме коллекции портов, выполняется поиск системных исполняемых файлов, man-страниц, исходных файлов системы.
man whereis
 
 
cd /usr/ports && make search name=имя
Поиск по индексу коллекции портов с частичным совпадением имени.
 
 
cd /usr/ports/категория/порт && make config
 
cd /usr/ports/категория/порт && make
 
cd /usr/ports/категория/порт && make install
 
cd /usr/ports/категория/порт && make package
Создать пакет для порта.
В процессе создания пакета выполняется установка порта.
 
 
cd /usr/ports/категория/порт && make deinstall
pkg_delete порт-версия
 
cd /usr/ports/категория/порт && make clean
 
portupgrade порт
portupgrade -o категория/портV2 портV1
 
pkgdb -F
Восстановить целостность базы пакетов: поиск дубликатов, восстановление зависимостей после принудительного удаления зависимых пакетов и др.).
Требуется установка порта portupgrade.
man pkgdb
 
 
pkg audit -F
portaudit -Fda
 
libchk
Сканировать исполняемые файлы, отобразить ссылки на отсутствующие библиотеки.
Требуется установка порта libchk.
man libchk
 
 
service -r
rcorder /etc/rc.d/* /usr/local/etc/rc.d/*
Отобразить порядок загрузки служб и ошибки при анализе зависимостей.
Полезно при нарушении порядка старта служб.
man service
man rcorder
 
 
Shell-скрипты
man sh
команда >лог-файл 2>&1
Перенаправить вывод команды в файл, включая ошибки.
 
 
echo текст | mail -E -s «Тема письма» user@domain.ru
Отправить вывод команды на почту заданному адресату. -E не выполнять отправку, если вывод пуст.
man mail
 
 
pgrep процесс >/dev/null && echo Процесс запущен
pgrep процесс >/dev/null || echo Процесс не запущен
Выполнить действие в зависимости от того, запущен или не запущен процесс.
man pgrep
 
 
test -e файл && echo Файл существует
test -e файл || echo Файл отсутствует
Проверка наличия файла.
-e — любой файл,
-d — папка,
-f — обычный файл
-L — символическая ссылка,
-s — файл ненулевого размера,
-r — файл доступен для чтения,
-w — доступен для записи,
-x — исполняемый файл,
-b — блочное устройство,
-c — символьное устройство и др.
man test
 
 
eval $(stat -s файл)
Извлечение информации о файле в переменные скрипта.
man stat
 
 
test «$str1» = «$str2» && echo Равно
test -n «$str1» && echo $str1
test -z «$str1» && echo Пустая строка
Строковое сравнение.
Доступны операторы: =, !=, <, >.
-n — строка ненулевого размера,
-z — пустая строка.
 
 
test $n1 -eq $n2 && echo Равно
Числовое сравнение.
-eq — равно, -ne — не равно,
-gt — больше,
-ge — больше или равно,
-lt — меньше,
-le — меньше или равно.
man test
 
 
tm=`date «+%Y-%m-%d-%H_%M»`
Получить текущую дату и время в формате 2009-02-20-03_51 в переменную shell-скрипта. Полезно для скриптов архивации.
man date
man strftime
 
 
ver=`uname -r`
Получить версию системы в переменную $ver.
 
 
ver=`uname -r | awk ‘{print(tolower($0));}’`
Получить версию системы с преобразованием прописных букв в строчные в переменную $ver.
man uname
man awk
 
 
sleep секунды
Приостановка выполнения скрипта на заданное число секунд.
man sleep
 
 
exit [код завершения]
Завершение выполнения скрипта. Код завершения: 0 — в случае успеха, номер ошибки от 1 до 255.
man sleep
 
 
Разное
tmux
tmux attach
Терминальный мультиплексор, или терминальный оконный менеджер.
Позволяет открыть несколько терминальных сессий на одном экране. При разрыве SSH-подключения, запущенные программы не завершаются.
Первая команда создает новый сеанс. Вторая выполняет подключение к сеансу, запущенному ранее.
Требуется установка порта tmux.
Комбинации клавиш:
Ctrl+b — переход в режим управления Tmux, все команды, указанные ниже, вызываются с данным префиксом.
c — создать новое окно.
n, p, l — переход к следующему, предыдущему или предыдущему активному окну.
0 ... 9 — переход к окну с заданным номером.
w — выбор окна в меню.
& — закрыть окно.
", % — разбивка окна на две панели, вертикальная или горизонтальная.
o — переход к следующей панели.
стрелки — переход панели расположенной сверху, снизу, слева, справа.
пробел, Alt+1 ... 5 — переключение схемы расположения панелей.
Ctrl+o, Alt+o — ротация панелей по часовой и против часовой стрелки.
z — развернуть или свернуть текущую панель.
d — выход с сохранением сессии.
? — отобразить все клавиатурные комбинации.
man tmux
Linux для всех: Терминальный оконный менеджер Tmux
 
 
bsdconfig
sysinstall
Интерактивная настройка системы: управление пользователями, разметка диска, параметры консоли, сетевые параметры и другие настройки.
man bsdconfig
man sysinstall
 
 
sysrc -a
sysrc параметр
sysrc параметр=значение
Получение и изменение параметров в rc.conf.
-a — отобразить все измененные параметры.
Команда доступна начиная с FreeBSD 9.2.
man sysrc
 
 
service -e
service rc.d-скрипт start
service rc.d-скрипт stop
service rc.d-скрипт restart
Запуск и остановка служб.
-e — отобразить все включенные службы в порядке их запуска.
man service
 
 
bc
Калькулятор.
Переменные калькулятора:
scale=7 — число знаков после запятой.
ibase=16 — задает шестнадцатеричную систему для ввода. Шестнадцатеричные значения вводятся заглавными буквами.
obase=10 — задает систему счисления для вывода. Если для ввода была задана шестнадцатеричная система счисления, то в качестве значения задаем «A» для выбора десятичной системы, или «10» — для шестнадцатеричной.
man bc
 
 
echo $((0x3ffe))
Быстрая конвертация шестнадцатеричного числа в десятичное средствами bash.
 
 
7z b
Тест производительности процессора. Дополнительная фишка известного архиватора.
Требуется установка порта p7zip.
man 7z
 
 
script файл команда
Сохранить копию вывода команды в файл, включая ввод пользователя.
man script
 
 
команда1 | tee файл | команда2
Дублировать вывод команды 1 в файл и передать на ввод команды 2.
man tee
 
 
Завершение работы
exit
Выход из командного интерпретатора, завершение сеанса.
 
 
shutdown -p now
poweroff
Завершение работы системы с отключением компьютера.
 
 
shutdown -r +15
shutdown -r ГГММДДЧЧММ
Отложенная перезагрузка системы.
+15 — через заданное число минут.
ГГММДДЧЧММ — дата и время перезагрузки в формате: год, месяц, день, час, минута.
Пригодится для тестирования новых правил брандмауэра и других сетевых настроек, если в случае ошибки доступ к системе будет утерян. Перезагрузка вернет рабочие параметры, если конфигурация загрузки системы не была изменена.
Запланированную перезагрузку можно отменить, завершив процесс командой: pkill ^shutdown$
man shutdown
 
 
halt -p
reboot
Быстрое отключение или перезагрузка системы, без выполнения остановки служб. Для нормальной перезагрузки следует использовать команду shutdown.
man halt
man reboot
 
 
Ссылки
Книга: «FreeBSD. Подробное руководство», автор: Майкл Лукас.
Википедия: Стандартные команды ОС UNIX
Переводы man-страниц: muff.kiev.ua/menutree/menu-man, vds-admin.ru/unix-commands, frdp.rinet.ru/man/
commandlinefu.com