Отобразить сообщения ядра при загрузке системы. Файл /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