Содержание
LPIC-1 Exam 101
Exam Objectives Version: Version 4.0
Exam Codes: 101-400 or LX0-103 (these exams are identical; passing either exam will count as the 101 exam toward your LPIC-1)
About Objective Weights: Each objective is assigned a weighting value. The weights indicate the relative importance of each objective on the exam. Objectives with higher weights will be covered in the exam with more questions.
Данная страница является конспектом лекций Кирилла Семаева LPIC-1 (exam 101) или "Администрирование Linuх, первая ступень"
Topic 101: System Architecture
101.1 Determine and configure hardware settings
Weight: 2
Description: Candidates should be able to determine and configure fundamental system hardware.
Key Knowledge Areas:
- Tools and utilities to list various hardware information (e.g. lsusb, lspci, etc.)
- Tools and utilities to manipulate USB devices
- Conceptual understanding of sysfs, udev, dbus
The following is a partial list of the used files, terms and utilities:
- /sys/
- /proc/
- /dev/
- modprobe
- lsmod
- lspci
- lsusb
/sys/ - все устройства, точка монтирования файловой системы sysfs
/sys/devices/ - все устройства ядра
/sys/bus/ - перечень шин
/sys/drivers/ - каталоги драйверов
/sys/block/ - каталоги блочных устройств
/sys/class/ - группировка устройств по классам
/proc/ - информация о запущенных процессах, файловая система procfs
Создаётся во время загрузки системы, количество файлов в этом каталоге зависит от конфигурации системы. Для работы нужны права root, изменения хранятся до конца сеанса.
cat /proc/cpuinfo # информация о процессоре cat /proc/mounts # показать все смонтированные ФС cat /proc/sys/fs/file-max # показать макс. возможное кол-во открытых файлов в системе echo 1000000 > /proc/sys/fs/file-max # установить кол-во открываемых файлов на 1 млн. cat /proc/sys/net/ipv4/ip_forward # разрешено ли переадресовывать пакеты между сетевыми интерфейсами echo 1 > /proc/sys/net/ipv4/ip_forward # разрешить переадресацию
/dev/ - информация об устройствах
/dev/sd буква - жёсткий диск
/dev/sd буква номер - раздел диска
/dev/sr номер (/dev/scd номер) - CD-ROM
/dev/eth номер - Сетевые интерфейсы Ethernet
/dev/wlan номер - Сетевые интерфейсы Wireless
/dev/lp номер - принтеры
/dev/video номер - устройства изображений, камеры, фотоаппараты и т. д.
/dev/bus/usb/000/номер - Устройство на шине USB 1-го контроллера (000)
/dev/dsp - звуковой вывод
Команды вывода перечня устройств
lsmod - о модулях ядра
lspci - об устройствах PCI
lspcmcia - об устр. PCMCIA
lsusb - об устр. USB
lshal - база устройств HAL (сейчас не исп.)
lshw - детально о комплектующих
Управление модулями ядра
lsmod - информация о модулях ядра
modinfo - инф. о конкретном модуле
rmmod - удаление модуля (тупое)
insmod - установка модуля (тупая)
modprobe - «умное» удаление и добавление модулей, вместе с зависимостями
modinfo e1000 # например, инфо по модулю сетевой карты Intel rmmod e1000 # тупо удалить модуль insmod e1000 # вставить модуль (будет ошибка, т. к. зависимости не удовлетворены) modprobe e1000 # вставить модуль, удовлетворив зависимости
Взаимодействие с CPU
IRQ - механизм прерываний
cat /proc/interrupts
IO адреса - обмен информацией между устройствами и процессором
cat /proc/ioports # по портам cat /proc/iomem # как выглядит в памяти
DMA - обращение устройств к ОЗУ минуя процессор
cat /proc/dma
Основные интерфейсы
PATA - параллельный
SATA - последовательный
SCSI - стандарт передачи данных
SAS - замена SCSI
blkid - просмотр смонтированных устройств и их ID.
101.2 Boot the system
Weight: 3
Description: Candidates should be able to guide the system through the booting process.
Key Knowledge Areas:
- Provide common commands to the boot loader and options to the kernel at boot time
- Demonstrate knowledge of the boot sequence from BIOS to boot completion
- Understanding of SysVinit and systemd
- Awareness of Upstart
- Check boot events in the log files
Terms and Utilities:
- dmesg
- BIOS
- bootloader
- kernel
- initramfs
- init
- SysVinit
- systemd
Порядок загрузки системы
- BIOS/UEFI - запуск системы
- MBR/GPT - 1-я стадия загрузки
- LILO/GRUB - 2-я стадия загрузки (загрузчик)
- Linux kernel - запуск ядра ОС (инициализация устройств и т. п.)
- Init - пользовательская среда
В Ubuntu нажатие Shift вызывает меню загрузки. Клавиша I показывает скрипт загрузки. Пример параметров загрузки ядра - ro quiet splash $vt_handoff
dmesg # вывод сообщений ядра (все) cat /var/log/dmesg # только сообщения загрузки
pstree - команда вывода дерева запущенных процессов
Каталог /boot
Ядра, initRAM-диски (для загрузки)
/boot/grub - каталог загрузчика GRUB
101.3 Change runlevels / boot targets and shutdown or reboot system
Weight: 3
Description: Candidates should be able to manage the SysVinit runlevel or systemd boot target of the system. This objective includes changing to single user mode, shutdown or rebooting the system. Candidates should be able to alert users before switching runlevels / boot targets and properly terminate processes. This objective also includes setting the default SysVinit runlevel or systemd boot target. It also includes awareness of Upstart as an alternative to SysVinit or systemd.
Key Knowledge Areas:
- Set the default runlevel or boot target
- Change between runlevels / boot targets including single user mode
- Shutdown and reboot from the command line
- Alert users before switching runlevels / boot targets or other major system events
- Properly terminate processes
Terms and Utilities:
- /etc/inittab
- shutdown
- init
- /etc/init.d/
- telinit
- systemd
- systemctl
- /etc/systemd/
- /usr/lib/systemd/
- wall
Init в стиле SysV
Процесс запуска инициализации системы на одном из заданных уровней запуска (runlevel)
Уровни загрузки:
0 - выключение
1 - однопользовательский режим
2 - Debian/Ubuntu по умолчанию
3 - Redhat/Suse по умолчанию текстовый режим
4 - Wildcard (программируемый режим, можно поставить что угодно)
5 - Redhat/Suse (GUI)
6 - перезагрузка
runlevel # вывести текущий уровень загрузки telinit 1 # перейти в однопользовательский режим (без перезагрузки)
/etc/inittab - уровни загрузки, задан уровень по умолчанию, как реагировать на Ctrl+Alt+Delete и т. п.
/etc/init.d - папка скриптов, запускающих определённые службы
/etc/init.d/rc номер - скрипты соответствующего уровня загрузки
# перезапуск сетевой службы sudo /etc/init.d/network restart # или service network restart
Основные команды:
init - управление инициализацией
telinit - управление процессом init
wall - вывод сообщения пользователям системы
halt - выключение компьютера
reboot - перезагрузка
shutdown - запланированное выключение
service service_name start|stop|reload|restart
Init в стиле Systemd
Процесс запуска инициализации системы в ускоренном режиме за счёт распараллеливания потоков
Unit - модули, которыми оперирует Systemd:
- .service - службы
- .mount - точки монтирования
- .device - устройства
- .socket - сокеты
- .target - цели
/usr/lib/systemd - юниты по умолчанию
/etc/systemd - управляемые юниты
systemctl list-units # показать все модули systemctl --failed # сбойные модули systemctl list-units --type=service # службы systemctl status cron # состояние crond systemctl stop cron # остановить crond systemctl start cron # запустить crond
Цели (targets), соответствующие уровням загрузки SysV
Runlevel | Target | Описание |
---|---|---|
0 | poweroff.target | Выключение |
1 | rescue.target | Однопользовательский режим |
2,4 | multi-user.target | Настраиваемые режимы |
3 | multi-user.target | Многопользовательский режим |
5 | graphical.target | Графический режим |
6 | reboot.target | Перезагрузка |
systemctl list-units --type=target # узнать запущенные таргеты systemctl isolate name.target # переключиться на другой таргет systemctl set-default -f name.target # установить по умолчанию
Старые команды telinit и runlevel также сохранены в целях совместимости
journald - служба журналирования
journalctl -f # журнал в реальном времени journalctl -n 10 # последние 10 событий journalctl _UID=0 # по ID пользователя
Работа с питанием:
systemctl reboot|poweroff|suspend|hibernate|hybrid-sleep
Работа со службами:
systemctl start|stop|reload|restart|status unit
Init в стиле Upstart
Процесс запуска инициализации системы на основе отслеживания событий (служб и задач), которые принимаются от любых системных процессов. Обратно совместим с SysV и схож с ним.
Upstart оперирует службами и задачами (services, tasks). Служба перезапускается в случае сбоя, задача - нет.
/etc/init - каталог файлов-заданий (jobs), которые имеют расширение *.conf. Запускаются по условиям (например, по событию power-status-changed запускается задание shutdown.conf, где прописана команда выключения компьютера shutdown -h).
initctl - утилита управления upstart.
Команды telinit и runlevel работают так же, как и с SysV.
Управление службами:
status ufw # состояние файрволла ufw stop ufw # остановить ufw start ufw # запустить ufw initctl show-config # вывод информации о задачах initctl check-config # проверка конфигурации
Topic 102: Linux Installation and Package Management
102.1 Design hard disk layout
Weight: 2
Description: Candidates should be able to design a disk partitioning scheme for a Linux system.
Key Knowledge Areas:
- Allocate filesystems and swap space to separate partitions or disks
- Tailor the design to the intended use of the system
- Ensure the /boot partition conforms to the hardware architecture requirements for booting
- Knowledge of basic features of LVM
Terms and Utilities:
- / (root) filesystem
- /var filesystem
- /home filesystem
- /boot filesystem
- swap space
- mount points
- partitions
Следующие папки могут быть смонтированы как отдельные разделы жёсткого диска:
- / - корень, самый большой раздел
- /boot - загрузочный раздел (≈100 МБ)
- /home - домашние папки
- /root - домашняя папка суперпользователя
- /etc - конфигурация системы и её компонентов
- /opt - ПО сторонних поставщиков
- /var - изменяющиеся данные (логи и т. п.)
- /usr - пакеты программ, документация, исходный код ядра (чаще всего смонтирована read only)
- /tmp - временные файлы
- swap - никуда не монтируется
/boot
abi-[version] - бинарный интерфейс приложений
config-[version] - конфиг ядра
grub - папка загрузчика
initrd.img-[version] - временная файловая система в ОЗУ
memtest - утилита проверки ОЗУ
System.map-[version] - карта символов ядра (аппаратных адресов)
vmlinuz-[version] - сжатое ядро ОС
Разбиение дисков на разделы и форматирование
На диске может быть только 4 основных раздела, если нужно больше разделов - один раздел делается расширенным и в нём создаются логические разделы. Расширенный нужно делать только один, так как могут быть проблемы с тем, чтобы прочитать содержимое диска где-то ещё.
Нумерация логических разделов начинается с 5, т. е. минимальный номер логического раздела - sda5, цифры 1-4 зарезервированы под основные разделы.
fdisk - разбиение жёсткого диска
mkfs - создание файловой системы
# иногда сначала нужно поменять тип раздела, см. список (fdi sk опция l) mkfs.ext4 /dev/sdb5 # создать файловую систему ext4 на разделе sdb5 mkfs.ntfs /dev/sdb5 # создать файловую систему ntfs на разделе sdb5
swapon и swapoff - работа с разделом подкачки
/etc/fstab - конфигурационный файл монтирования файловых систем при загрузке системы
mkswap - создание раздела или файла подкачки
# смонтировать раздел sdb5 в папку /folder # работает до перезагрузки; чтобы работало постоянно, надо редактировать файл /etc/fstab mount /dev/sdb5 /folder # отмонтировать umount /folder
Linux Volume Manager (LVM) - система управления томами
pvdisplay # показать Physical Volumes vgdisplay # показать Volume Groups lvdisplay # показать Logical Volumes
При создании разделов на физических дисках (до LVM, командой fdisk) нужно указывать их тип как 8e (Linux LVM). Затем создаются:
# "физические разделы" LVM pvcreate /dev/sdb1 pvcreate /dev/sdb2 # группа томов vgcreate vg_test /dev/sdb1 /dev/sdb2 # логические тома (в данном случае размером в 2 ГБ) lvcreate -n lv1 -L 2G vg_test lvcreate -n lv2 -L 2G vg_test # отформатировать логические тома в ext4 mkfs.ext4 /dev/vg_test/lv1 mkfs.ext4 /dev/vg_test/lv2
Можно изменить размер логического тома, например
lvresize -L 4G /dev/vg_test/lv2 # увеличить размер тома lv2 до 4 ГБ # далее нужно увеличивать файловую систему resize2fs /dev/vg_test/lv2
Также можно удалять, переносить логические тома, изменять размеры, делать снимки (snapshots).
https://www.youtube.com/watch?v=x0sWtN5Mv3Q
https://help.ubuntu.ru/wiki/lvm
http://xgu.ru/wiki/LVM
Расширить раздел
fd lvextend -l +100%FREE /dev/server1-vg/root resize2fs /dev/server1-vg/root
102.2 Install a boot manager
Weight: 2
Description: Candidates should be able to select, install and configure a boot manager.
Key Knowledge Areas:
- Providing alternative boot locations and backup boot options
- Install and configure a boot loader such as GRUB Legacy
- Perform basic configuration changes for GRUB 2
- Interact with the boot loader
The following is a partial list of the used files, terms and utilities:
- menu.lst, grub.cfg and grub.conf
- grub-install
- grub-mkconfig
- MBR
LiLo, Grub - старые, Grub2 - новый.
MBR (Master boot record)
- главная загрузочная запись, первые 512 байт диска.
# посмотреть, где загрузчик fdisk -l # скопировать 1-й блок жёсткого диска в 512 байт, т. е., MBR dd if=/dev/sda of=/root/backup.mbr bs=512 count=1
LiLo
apt-get install lilo # установить LiLo liloconfig # создаёт /etc/lilo.conf
В конфиге в параметр boot = /dev/disk/by-id/ нужно добавить диск, с которого нужно грузиться
# Выяснить ID диска /dev/disk/by-id ls /dev/disk/by-id
Grub legacy
Настройки лежат в /boot/grub
Grub
# Установка на /dev/sda grub-install /dev/sda # Версия grub-install --version # Конфиг: /boot/grub/grub.cfg, руками не редактируется, генерируется командой grub-config # /etc/default/grub - настройки по умолчанию, можно редактировать # /etc/grub.d - скрипты на shell, параметры указаны по очереди применения 00_, 10_, 20_ и т. д. update-grub # применить изменения после изменения настроек sudo grub-mkconfig -o /boot/grub/grub.cfg # создать типовую конфигурацию загрузчика
102.3 Manage shared libraries
Weight: 1
Description: Candidates should be able to determine the shared libraries that executable programs depend on and install them when necessary.
Key Knowledge Areas:
- Identify shared libraries
- Identify the typical locations of system libraries
- Load shared libraries
Terms and Utilities:
- ldd
- ldconfig
- /etc/ld.so.conf
- LD_LIBRARY_PATH
Библиотека - набор функций, используемые программами.
Статические библиотеки - в составе дистрибутива той или иной программы (нет проблем совместимости, но увеличивает размер дистрибутивов)
Динамические библиотеки - сидят в памяти (могут использоваться сразу несколькими программами)
/lib - библиотеки, используемые программами в /bin
/usr/lib - библиотеки, используемые программами в usr/bin
/etc/ld.so.conf - список путей к библиотекам
/etc/ld.so.cache - кэш библиотек
ldconfig # обновить кэш библиотек ldd /bin/ls # какие библиотеки использует команда ls?
Добавить библиотеки вручную - добавить путь в /etc/ld.so.conf или
export LD_LIBRARY_PATH=/opt/some_soft/lib # после этого нужно обновить кэш: ldconfig
102.4 Use Debian package management
Weight: 3
Description: Candidates should be able to perform package management using the Debian package tools.
Key Knowledge Areas:
- Install, upgrade and uninstall Debian binary packages
- Find packages containing specific files or libraries which may or may not be installed
- Obtain package information like version, content, dependencies, package integrity and installation status (whether or not the package is installed)
Terms and Utilities:
- /etc/apt/sources.list
- dpkg
- dpkg-reconfigure
- apt-get
- apt-cache
- aptitude
dpkg
Утилита управления пакетами в Debian-системах
dpkg --help # справка dpkg -l # перечень пакетов в системе dpkg -L # перечень файлов в пакетах dpkg -s firefox # статус пакета firefox dpkg -p firefox # информация о пакете firefox, описание dpkg -S # поиск пакета, содержащего данный файл dpkg -i # установка пакета (без зависимостей) dpkg -I # информация о пакете в файле .deb dpkg -r # простое удаление пакета dpkg -P # удаление пакета вместе с конфигурационными файлами dpkg-reconfigure # реконфигурация пакета
/etc/dpkg/dpkg.cfg - настройки dpkg
apt
Более удобная программа работы с пакетами
apt-get - скачивание и установка пакетов
apt-cache - поиск пакетов
aptitude - управление пакетами с опцией псевдографики
/etc/apt/sources.list - список репозиториев
apt-get --help # справка apt-get update # обновить список пакетов из репозиториев apt-get upgrade # обновить пакеты в системе apt-get install # установить программу apt-get remove # удалить программу без зависимостей apt-get autoremove # удалить незадействованные зависимости apt-cache search # поиск информации apt-cache show # информация о конкретном пакете apt-cache depends # зависимости конкретного пакета apt-cache rdepends # зависимости от конкретного пакета
aptitude
По умолчанию не установлен, то же самое, что и apt-get, только с псевдографикой.
Выбрать пакет для установки - кнопка +, установить - g, выйти - q.
/etc/apt/sources.list
main - основные пакеты, поддерживаемые производителем, restricted - частично свободное ПО, universe - неподдерживаемое производителем ПО, multiverse - закрытое ПО.
102.5 Use RPM and YUM package management
Weight: 3
Description: Candidates should be able to perform package management using RPM and YUM tools.
Key Knowledge Areas:
- Install, re-install, upgrade and remove packages using RPM and YUM
- Obtain information on RPM packages such as version, status, dependencies, integrity and signatures
- Determine what files a package provides, as well as find which package a specific file comes from
Terms and Utilities:
- rpm
- rpm2cpio
- /etc/yum.conf
- /etc/yum.repos.d/
- yum
- yumdownloader
RPM
То же самое, что dpkg в Debian.
rpm --help # помощь rpm -iv # установить пакет, verbose mode rpm -e # удалить пакет rpm -K # проверка подписи пакета rpm -Vv # проверка файлов в пакете, verbose mode rpm -qi # информация пакета rpm -qd # документация
rpm2cpio - разбор пакета на двоичные файлы
rpm2cpio any.rpm > any.cpio
YUM
/etc/yum.repos.d/ - перечень репозиториев
yum --help # помощь yum install # установить пакет yum remove # удалить yum upgrade # обновить yum search # найти yumdownloader # скачивание пакетов вместе с зависимостями
Topic 103: GNU and Unix Commands
103.1 Work on the command line
Weight: 4
Description: Candidates should be able to interact with shells and commands using the command line. The objective assumes the Bash shell.
Key Knowledge Areas:
- Use single shell commands and one line command sequences to perform basic tasks on the command line
- Use and modify the shell environment including defining, referencing and exporting environment variables
- Use and edit command history
- Invoke commands inside and outside the defined path
Terms and Utilities:
- bash
- echo
- env
- export
- pwd
- set
- unset
- man
- uname
- history
- .bash_history
bash
cat /etc/passwd # узнать используемую оболочку ls -a # список файлов, в т. ч. скрытые /etc/profile # глобальные настройки оболочки, "PS1=" - это вид значка командной строки ~/.profile # настройки конкретного профиля ~/.bashrc # настройки bash
echo # вывод информации в консоль cat > info # интерактивный режим записи информации в файл env # показать переменные pwd # показать текущее местоположение export # внести заданную переменную в системные unset # удалить переменную из системных uname # вывести системную информацию file # информация о файле whatis # информация о программе history # история команд man -k http # вывести список мануалов по ключевому слову exec ls -a # выполнить ls -a, игнорируя настройки оболочки и выгружая её # чтобы загрузить оболочку обратно, выполнить bash
103.2 Process text streams using filters
Weight: 3
Description: Candidates should should be able to apply filters to text streams.
Key Knowledge Areas:
Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package
Terms and Utilities:
- cat
- cut
- expand
- fmt
- head
- join
- less
- nl
- od
- paste
- pr
- sed
- sort
- split
- tail
- tr
- unexpand
- uniq
- wc
cat # вывод содержимого файла на экран cat hello1.txt hello2.txt > hello3.txt # слить содержимое двух файлов в третий rm # удаление файла cut # вырезать часть из файла cut -c 2,3,4,5,10 hello.txt # вывести файл hello.txt без 2-го, 3-го и т. д. символов expand # заменить символы табуляции на пробелы (расстояние сохраняется) fmt # форматирование вывода fmt -w 10 hello.txt # выводить строки не больше 10 символов (слова не режет, переносит по пробелам) head # просмотр начала файла head -n 3 /var/log/syslog # первые 3 строчки od # конвертер в другой формат od hello.txt # конвертация в восьмеричный код join # объединение строк по общим полям join 1.txt 2.txt # вывести содержимое двух файлов, не повторяя то, что у них общего less # постраничный вывод файлов nl # нумерация строк paste # объединение файлов построчно pr # вывод файла в виде для печати sed # мощный неинтерактивный текстовый редактор sort # сортировка строк, без ключей - в алфавитном порядке sort -r hello.txt # сортировать в обратном алфавитном порядке split # разбиение файлов split -l 2 hello.txt # разбить hello.txt на 2 части split -b 2 hello.txt # разбить hello.txt на части по 5 байт tail # антипод head tail -f /var/log/syslog # показывать лог в реальном времени tr -t A-Z a-z # заменить все заглавные буквы на строчные tr -t l L # заменить все l на L tr -d l # удалить все буквы l tr -s l # объединить соседние буквы l в одну unexpand # антипод expand, пробелы в табуляцию uniq # вывод только уникальных строк uniq -c hello.txt # подсчитать повторы строк uniq -d hello.txt # показать только дубли uniq -u hello.txt # показать только уникальные строки wc # подсчёт количества строк, слов и символов
103.3 Perform basic file management
Weight: 4
Description: Candidates should be able to use the basic Linux commands to manage files and directories.
Key Knowledge Areas:
- Copy, move and remove files and directories individually
- Copy multiple files and directories recursively
- Remove files and directories recursively
- Use simple and advanced wildcard specifications in commands
- Using find to locate and act on files based on type, size, or time
- Usage of tar, cpio and dd
Terms and Utilities:
- cp
- find
- mkdir
- mv
- ls
- rm
- rmdir
- touch
- tar
- cpio
- dd
- file
- gzip
- gunzip
- bzip2
- xz
- file globbing
touch # создание файла и смена времени доступа mkdir # создать папку cp # копирование cp -R folder1 folder2 # копировать папку рекурсивно mv # перенести (переименовать) rm -rf # удалить форсированно и рекурсивно rmdir # удаление папок file # определение типа файла find . -name "In*" # найти в текущей папке всё, начинающееся на In find . -size +5M # найти в текущей папке всё, что больше 5 МБ find . -type f # найти в текущей папке все файлы
Маски символов
* - всё, что угодно
? - один любой символ
! - не
[ac] - a или c
[a-c] - a,b,c
Архивация
ls | cpio -o > ../test.cpio # запаковать все файлы в текущей папке в архив test.cpio уровнем выше cpio -id < ../test.cpio # распаковать обратно dd if=/dev/sdb of=drive.img # снять образ диска sdb gzip drive.img # запаковать (оригинал затрётся) gunzip drive.img.gz # распаковать (архив затрётся) bzip2 drive.img # запаковать (оригинал затрётся) bunzip2 drive.img.bz2 # распаковать (архив затрётся) xz drive.img # запаковать (оригинал затрётся) unxz drive.img.gz # распаковать (архив затрётся) tar cvfz archive.tar.gz folder # заархивировать folder со сжатием tar xvfz archive.tar.gz # разжать и распаковать
103.4 Use streams, pipes and redirects
Weight: 4
Description: Candidates should be able to redirect streams and connect them in order to efficiently process textual data. Tasks include redirecting standard input, standard output and standard error, piping the output of one command to the input of another command, using the output of one command as arguments to another command and sending output to both stdout and a file.
Key Knowledge Areas:
- Redirecting standard input, standard output and standard error
- Pipe the output of one command to the input of another command
- Use the output of one command as arguments to another command
- Send output to both stdout and a file
Terms and Utilities:
- tee
- xargs
Stdin (0) - ввод
Stdout (1) - вывод
Stderr (2) - вывод ошибки
> - передать в >> - дописать в < - взять из | - отправить следующей команде
Tee - отправить и в файл, и на stdout
Xargs - передать на ввод команде построчно
wc < file1.txt # посчитать строки в файле ls > list.txt # записать листинг в файл cat >> list.txt # добавить листинг в конец файла ls folder 2> error.txt # записать ошибку выполнения команды в файл ls folder > list.txt 2> error.txt # записать листинг в файл, а если будет ошибка, то записать её в другой файл ls | grep r # вывести все имена с буквой r ls | tee list.txt # вывести результат и на экран, и в файл find . -name "*.txt" | xargs rm -f # последовательно удалить найденные текстовые файлы
103.5 Create, monitor and kill processes
Weight: 4
Description: Candidates should be able to perform basic process management.
Key Knowledge Areas:
- Run jobs in the foreground and background
- Signal a program to continue running after logout
- Monitor active processes
- Select and sort processes for display
- Send signals to processes
Terms and Utilities:
- &
- bg
- fg
- jobs
- kill
- nohup
- ps
- top
- free
- uptime
- pgrep
- pkill
- killall
- screen
fg - активный режим (foreground)
bg - фоновый режим (background)
nohup - оставлять процесс работающим после выхода пользователя из системы
ps - инф. об активных процессах
pstree - дерево процессов
pgrep - поиск процессов
pkill - завершение процессов
top - диспетчер задач, можно завершать процессы
free - загрузка оперативной памяти
uptime - время работы, показывает load average (загрузка последнюю минуту, пять минут, 15 минут)
screen - управление сессиями. Ctrl+a - рабочий режим, d - свернуть текущий скрин, screen -r - вернуться в скрин, exit - завершить скрин.
sleep 1000 & # запустить процесс в фоновом режиме (амперсанд) jobs # вывести выполняющиеся процессы в текущей сессии fg 1 # переключить первый процесс в активный режим # Ctrl+z - остановить выполнение процесса bg 1 # перевести процесс в фоновый режим ps aux # все процессы всех пользователей (снапшот) kill 1234 # убить процесс 1234 killall # грохнуть все процессы текущего пользователя nohup sleep 1000 # запустить процесс, независимый от сессии пользователя pgrep sleep -l # все процессы sleep с номерами pkill sleep # убить все процессы sleep screen -S yandex ping ya.ru # создать скрин с именем yandex, где пингуется ya.ru screen -r yandex # вернуться в скрин yandex
103.6 Modify process execution priorities
Weight: 2
Description: Candidates should should be able to manage process execution priorities.
Key Knowledge Areas:
- Know the default priority of a job that is created
- Run a program with higher or lower priority than the default
- Change the priority of a running process
Terms and Utilities:
- nice
- ps
- renice
- top
Приоритет от -20 (максимальный) до +19 (минимальный).
nice - выставить приоритет
renice - изменить приоритет
ps alx # в столбике NI (nice) показывается приоритет ps -eo user,pid,pcpu,nice,comm # список процессов с приоритетами nice sleep 5000 & # запустить sleep с приоритетом 10 (приоритет по умолчанию) nice -n 19 sleep 5000 & # sleep с приоритетом 19 nice -n -20 sleep 5000 & # sleep с высшим приоритетом # (отрицательные значения может ставить только привилегированный пользователь) renice 5 -p 2572 # изменить приоритет процесса 2572 на 5 renice 15 -u userok # изменить приоритет процессов пользователя userok
103.7 Search text files using regular expressions
Weight: 2
Description: Candidates should be able to manipulate files and text data using regular expressions. This objective includes creating simple regular expressions containing several notational elements. It also includes using regular expression tools to perform searches through a filesystem or file content.
Key Knowledge Areas:
- Create simple regular expressions containing several notational elements
- Use regular expression tools to perform searches through a filesystem or file content
Terms and Utilities:
- grep
- egrep
- fgrep
- sed
- regex(7)
\<text - слова, начинающиеся с text
text\> - слова, заканчивающиеся на text
^ - начало строки
$ - конец строки
[a-z] - диапазон от a до z
[^t] - не буква t
\[ - читать символ [ буквально
. - любой символ
a|z - a или z
grep - поиск по выражению
egrep - расширенный grep
fgrep - быстрый grep, не понимает регулярных выражений
rgrep - рекурсивный grep
sed - потоковый текстовый редактор
grep -n w file.txt # вывести строки, содержащие букву w, и их номера grep -i w file.txt # вывести строки, содержащие буквы W или w grep ^p file.txt # вывести строки, начинающиеся на букву p grep e$ file.txt # вывести строки, заканчивающиеся на букву e grep .o file.txt # вывести строки, содержащие букву o после любого символа egrep '^(b|d)' file.txt # вывести строки, начинающиеся на b или d egrep '^([a-k]|[A-K])' file.txt # вывести строки, начинающиеся на любую букву с a по k, в т. ч. заглавные fgrep c$ file.txt # вывести строки, содержащие c$ (fgrep не понимает рег. выражений) rgrep word * # найти слово word во всех файлах, в т. ч. в подпапках sed -e '/s/oo/aa/' file.txt # вывести file.txt, заменив в словах oo на aa sed -re '/s/^(B|b)/C/' file.txt # вывести file.txt, заменив первую букву B или b на C
103.8 Perform basic file editing operations using vi
Weight: 3
Description: Candidates should be able to edit text files using vi. This objective includes vi navigation, basic vi modes, inserting, editing, deleting, copying and finding text.
Key Knowledge Areas:
- Navigate a document using vi
- Use basic vi modes
- Insert, edit, delete, copy and find text
Terms and Utilities:
- vi
- /, ?
- h,j,k,l
- i, o, a
- c, d, p, y, dd, yy
- ZZ, :w!, :q!, :e!
Навигация:
←h ↓j ↑k l→
b e - начало и конец файла
( ) - начало и конец предложения
{ } - начало и конец абзаца
^ $ - начало и конец строки
1G G - начало и конец файла
i - режим вставки (insert) перед текущим символом
Esc - выход из режима
a - режим добавления (append?), после текущего символа
o - вставить новую строку
s - замена символа
yy - скопировать строку
yw - скопировать слово
yl - скопировать символ
dd - вырезать строку
dw - вырезать слово
dl - вырезать символ
p - вставить
cw - редактирование конкретного слова
d$ - удалить до конца строки (сочетание предыдущих клавиш)
h} - скопировать текст до конца абзаца
/ - искать ниже
? - искать выше
N и n - продолжить поиск
:e - отменить изменения
:w - записать изменения
:q - выйти из файла
:q! или ZQ - выйти без сохранения
:wq или ZZ - выйти и сохранить
Topic 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard
104.1 Create partitions and filesystems
Weight: 2
Description: Candidates should be able to configure disk partitions and then create filesystems on media such as hard disks. This includes the handling of swap partitions.
Key Knowledge Areas:
- Manage MBR partition tables
- Use various mkfs commands to create various filesystems such as:
- ext2/ext3/ext4
- XFS
- VFAT
- Awareness of ReiserFS and Btrfs
- Basic knowledge of gdisk and parted with GPT
Terms and Utilities:
- fdisk
- gdisk
- parted
- mkfs
- mkswap
Сделать раздел подкачки
С помощью fdisk разметить место и выбрать ID раздела (82) (см. занятие 102.1). Предположим, это раздел /dev/sdb2. Затем выполнить команду
mkswap /dev/sdb2 swapon /dev/sdb2 # задействовать раздел подкачки в системе swapon -s # посмотреть разделы swap swapoff /dev/sdb2 # выключить раздел подкачки
mkfs
mkfs -t ext2 /dev/sdb1 # отформатировать раздел в ext2 mkfs.ext2 /dev/sdb1 # то же самое # файловая система xfs sudo apt-get install xfsprogs # установить поддержку xfs в систему mkfs.xfs /dev/sdb1 # отформатировать раздел в xfs # reiserfs sudo apt-get install reiserfsprogs # установить поддержку reiserfs в систему mkfs.reiserfs /dev/sdb1 # отформатировать раздел в reiserfs # btrfs sudo apt-get install btrfs-tools # установить поддержку btrfs в систему mkfs.btrfs /dev/sdb1 # отформатировать раздел в btrfs
Совместимые с Windows разделы
Надо изменить тип раздела в fdisk, например, тип «c» (FAT32 LBA), затем отформатировать, например
mkfs.vfat /dev/sdb1 mkfs.ntfs /dev/sdb1
GPT
fdisk не работает с GPT и не работает с разделами больше 2 ТБ. Для этого используется gdisk.
gdisk /dev/sdb # опция "o" создаёт разметку GPT
parted
Очень мощная утилита по работе с дисками и разделами.
gparted - графическая утилита.
104.2 Maintain the integrity of filesystems
Weight: 2
Description: Candidates should be able to maintain a standard filesystem, as well as the extra data associated with a journaling filesystem.
Key Knowledge Areas:
- Verify the integrity of filesystems
- Monitor free space and inodes
- Repair simple filesystem problems
Terms and Utilities:
- du
- df
- fsck
- e2fsck
- mke2fs
- debugfs
- dumpe2fs
- tune2fs
- XFS tools (such as xfs_metadump and xfs_info)
df -h # показать место на дисках (ключ -h - показать в понятном виде) df -i # показать inode - метки файлов (индексные дескрипторы) du -h # показать список папок с их размерами (рекурсивно) du -h --summarize # показать список папок с их размерами (нерекурсивно) ls -l # размер файлов и папок в текущем каталоге ls -i # номера inode
Починка файловой системы
Сначала нужно размонтировать раздел, который нужно проверить (как, собственно, это происходит и под виндой).
fsck /dev/sdb1 fsck -t ext4 /dev/sdb1 # указать ext4 принудительно # для xfs нужно запускать xfs_check, fsck не может запустить проверку xfs_check /dev/sdb1 # если ничего не пишет - всё в порядке xfs_repair /dev/sdb1 # команда проверки и восстановления раздела xfs_info /dev/sdb1 # информация о разделе xfs xfs_metadump /dev/sdb1 dump.file # сделать дамп в файл debugfs -w /dev/sdb1 # отладчик файловой системы, режим записи # ls - показать файлы с inode (debugfs) # rm file.txt - удалить файл (debugfs) # lsdel - показать удалённые файлы (debugfs) # undel <12> test.txt - восстановить inode 12 в файл test.txt (debugfs) dumpe2fs /dev/sdb1 > dump.txt # сделать дамп всей информации о файловой системе mke2fs -t ext2 /dev/sdb1 # переделать файловую систему в ext2 tune2fs -O has_journal /dev/sdb1 # включить журнал в файловой системе на /dev/sdb1 tune2fs -O ^has_journal /dev/sdb1 # удалить журнал в файловой системе на /dev/sdb1
104.3 Control mounting and unmounting of filesystems
Weight: 3
Description: Candidates should be able to configure the mounting of a filesystem.
Key Knowledge Areas:
- Manually mount and unmount filesystems
- Configure filesystem mounting on bootup
- Configure user mountable removable filesystems
Terms and Utilities:
- /etc/fstab
- /media/
- mount
- umount
mount устройство точка_монтирования_(папка)
umount устройство
или
umount точка_монтирования_(папка)
/etc/fstab:
устройство точка_монтирования тип_файловой_системы options dump pass
Тип файловой системы - можно написать auto для автоопределения
options - непример, rw,user,auto,noexec - чтение-запись, право монтирования под обычным пользователем, монтировать при загрузке, нельзя запускать исполняемые файлы
dump - сохранять ли файлы автоматически при внезапном отключении питания
pass - параметры проверки файловой системы
Стандартные папки для монтирования:
/mnt - для дисков
/media - для съёмных носителей
Наиболее надёжный способ монтирования - по UUID, так как порт подключения может поменяться.
blkid /dev/sdb1 # посмотреть UUID раздела eject # команда, безопасно отключает флешку (после отмонтирования)
104.4 Manage disk quotas
Weight: 1
Description: Candidates should be able to manage disk quotas for users.
Key Knowledge Areas:
- Set up a disk quota for a filesystem
- Edit, check and generate user quota reports
Terms and Utilities:
- quota
- edquota
- repquota
- quotaon
quotaon - включение квоты
quotaoff - отключение квоты
edquota - редактирование квоты
repquota - отчёты по квотам
sudo apt-get install quota # установить функционал квотирования
В опциях монтирования /etc/fstab у раздела, где будет применяться квотирование, нужно дописать usrquota, grpquota.
sudo quotacheck -cug /mnt/hdd # создать конфигурационные файлы квотирования в /mnt/hdd sudo edquota -u user # задать квоту для user (-g - для группы)
Файл настройки квот
blocks - сколько занято места
soft - мягкая квота (допускает превышение в течение 1 недели)
hard - жёсткая квота, превышения не допускает
inodes - кол-во файлов и папок в системе, созданных пользователем
для inodes тоже есть квоты soft и hard
edquota -t # изменить временной лимит для превышения мягких квот quotaon /mnt/hdd # включить квоты repquota /mnt/hdd # показать отчёт по квотам
warnquota - шлёт письма пользователям, превысившим квоту
104.5 Manage file permissions and ownership
Weight: 3
Description: Candidates should be able to control file access through the proper use of permissions and ownerships.
Key Knowledge Areas:
- Manage access permissions on regular and special files as well as directories
- Use access modes such as suid, sgid and the sticky bit to maintain security
- Know how to change the file creation mask
- Use the group field to grant file access to group members
Terms and Utilities:
- chmod
- umask
- chown
- chgrp
chown - задать владельца
chgrp - задать группу владельцев
chmod - задать права доступа
В отличие от винды, в линуксе у объекта файловой системы может быть не только владелец, но одновременно с тем и группа владельцев. По умолчанию при создании пользователя создаётся одноимённая группа. Владельца и группу владельцев показывает команда ls -l
.
sudo chown user file.txt # задать владельца user для файла file.txt sudo chgrp testers file.txt # задать группу testers для файла file.txt sudo chown :testers file.txt # то же самое sudo chown user:testers file.txt # задать для файла сразу и владельца, и группу владельцев sudo chown -R user:testers folder # задать владельца и группу владельцев для папки рекурсивно
Права
eXecute=1, Write=2, Read=4
Число | Разрешение | Символ |
---|---|---|
0 | Нет прав | --- |
1 | Execute | --x |
2 | Write | -w- |
3 | Write, execute | -wx |
4 | Read | r-- |
5 | Read, execute | r-x |
6 | Read, write | rw- |
7 | Read, write, execute | rwx |
Права на объект выглядят так:
rwxrwxrwx, первые три разрешения относятся к владельцу, вторые - к группе, третьи - к остальным.
Например, rwxrw-r-- - это полные права владельцу, rw группе, остальным - только чтение.
Если дать права на папку только rw, то зайти в неё будет нельзя - для этого нужно дать право x.
chmod 750 file.txt # полные права владельцу, rx группе, остальным ничего chmod u+w file.txt # дать право записи владельцу (user) chmod go-x file.txt # отобрать право выполнения у группы и остальных chmod -x file.txt # отобрать право выполнения файла у всех
Маска
umask - маска создания файлов и папок, т. е., с какими правами будут создаваться файлы и папки от имени данного пользователя.
Маска указывается по принципу вычитания из максимальных прав (777 для папки и 666 для файла).
umask 022 - все папки будут создаваться с разрешением 755 (777-022), т. е., rwxr-xr-x
umask 754 - все папки будут создаваться с разрешением 023 (777-754), т. е., ----w--wx
Параметр UMASK убран из /etc/profile, и управляется либо модулем pam_umask, либо /etc/login.defs
# Сделать права по умолчанию 702 (для папок) и 602 (для файлов) # действует до перезагрузки umask 075
Чтобы сделать желаемое значение umask постоянным, надо редактировать файл /etc/login.defs
Специальные биты
suid - бит запуска от имени владельца (любой, кто работает с объектом, будет работать от имени владельца объекта). Устанавливается для файлов. Пример применения - /bin/ping. Так как доступ к сетевой карте ограничен, на /bin/ping установлен suid, чтобы все пользователи могли от имени root запускать ping.
sgid - бит запуска от имени группы владельцев. Устанавливается для файлов и папок. Если на папке установлен sgid, то все вложенные объекты будут иметь ту же группу владельцев.
sticky - бит защиты содержимого. Устанавливается для папок. Если установлен, то только владелец или root может удалить содержимое этой папки вне зависимости от выданных прав.
Значения спец. битов
SUID=4, SGID=2, sticky=1
Значения при выставлении нужной комбинации битов суммируются.
Например,
4755 - установлен suid
6750 - установлены suid и sgid
3764 - установлены sticky и sgid
chmod u+s file.txt # установить suid (s на пользователя) chmod g+s file.txt # установить sgid (s на группу) chmod o+t file.txt # установить sticky (t на остальных) stat file.txt # вывести статистику по файлу chmod 0755 file.txt # обнулить спец. биты
https://www.youtube.com/watch?v=tfMwyQIfjM4
В связи с выставленными битами появляются эффективные идентификаторы.
- EUID - эффективный идентификатор пользователя, изменяется для процессов (не для пользователя) с битом SUID
id uid=1000(user) gid=1001(user) euid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo)
- EGID - эффективный идентификатор группы. Процесс с битом SGID выполнится с правами текущего пользователя и группой владельца.
$ id uid=1000(user) gid=1001(user) egid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo)
Есть ещё RUID - настоящий идентификатор пользователя, остающийся неизменным. Показательный пример - утилита passwd
, с помощью которой можно поменять пароль.
ls -l /bin/passwd -rwsr-xr-x 1 root root 59976 Mar 14 11:59 /bin/passwd
У passwd
установлен SUID, поэтому, меняя пароль, passwd
выполняется от рута. Но чтобы таким образом нельзя было менять пароли у всех учёток в системе, passwd
проверяет RUID пользователя.
Расширенные права доступа (ACL)
# Проверить, включена ли поддержка в конфигурации ядра cat /boot/config* | grep _ACL ... CONFIG_EXT4_FS_POSIX_ACL=y ... # Установить средства управления apt install acl -y # Дать права ещё одному пользователю на файл setfacl -m u:testuser:rw file.txt # Проверить ls -l # в конце строки с правами появляется + -rw-rw-r--+ 1 root root 0 Aug 23 12:55 file.txt getfacl file.txt # file: file.txt # owner: root # group: root user::rw- user:testuser:rw- group::r-- mask::rw- other::r-- # Сразу несколько разрешений за раз setfacl -m g:testgroup:rw,o:r file.txt # Удалить разрешение setfacl -x u:testuser file.txt # Удалить все расширенные права setfacl -b file.txt
О параметре mask
Например, есть подозрения, что файл содержит вирус, и нужно предотвратить его запуск, убрав все ACL (опция –remove-all
). Но если потом выяснится, что файл безопсен, надо будет раздавать все права обратно, это неудобно. Поэтому можно применить маску, чтобы заблокировать файл, но сохранить ACL, чтобы потом можно было бы легко вернуть всё обратно.
# Применить маску: chmod 000 /tmp/testfile.txt # Эффективные права: getfacl /tmp/testfile.txt # file: tmp/testfile.txt # owner: root # group: root user::--- user:homer:rwx #effective:--- user:bart:r-- #effective:--- user:marge:rwx #effective:--- user:lisa:rw- #effective:--- user:maggie:r-- #effective:--- group::r-- #effective:--- mask::--- other::---
Маска - это максимально разрешённые права для всех пользователей, она перекрывает ACL. Маску можно обновить командами chmod
или setfacl
, но можно редактировать и саму маску.
# Установить маску в r-x (обратите внимание на двойное двоеточие) setfacl -m m::r-x /tmp/testfile.txt
Стандартные права
Если для папки задать стандартные права ACL, то все создаваемые объекты в ней будут наследовать те же права.
# После применения команды всё, что создаст testuser в папке, будет иметь права rw setfacl -m default:u:testuser:rw /tmp/data
Выгрузка-восстановление ACL
# Выгрузка cd /tmp/data getfacl -R * > ~/tmp_data.acl # Восстановление setfacl --restore=~/tmp_data.acl
104.6 Create and change hard and symbolic links
Weight: 2
Description: Candidates should be able to create and manage hard and symbolic links to a file.
Key Knowledge Areas:
- Create links
- Identify hard and/or soft links
- Copying versus linking files
- Use links to support system administration tasks
Terms and Utilities:
- ln
- ls
Жёсткая ссылка - это ссылка на определённое место на жёстком диске, соответственно, имеет тот же самый inode (индексный дескриптор), что и оригинальный файл. На папку жёсткая ссылка не создаётся. Также, невозможно сделать жёсткую ссылку на объект в другой файловой системе. Если насоздавать жёстких ссылок на файл, а потом удалить оригинал, то содержимое этого файла будет доступно до тех пор, пока существует хоть одна жёсткая ссылка. По сути, само название файла - это и есть жёсткая ссылка на некое содержимое.
Inode содержит следующие свойства:
- владелец
- права
- размер
- время последней модификации
- время создания
- группа
- местонахождение файла
Имени файла inode не содержит. Вывести информацию из inode можно с помощью stat
.
stat /etc/adduser.conf File: /etc/adduser.conf Size: 3028 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 262820 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-08-04 19:35:23.811558808 +0000 Modify: 2022-02-23 08:50:28.000000000 +0000 Change: 2022-08-04 19:34:02.423663772 +0000 Birth: -
На вид файлы и жёсткие ссылки между собой в консоли не различаются. Можно понять, что несколько объектов ссылаются на одно и то же содержимое - по одинаковому inode и по счётчику справа от прав доступа:
ls -li # вывести список файлов с отображением inode
Результат выполнения команды для файла file.txt, на который создана жёсткая ссылка hardlink.txt:
550097 -rwxr--r-- 2 user user 243 авг 19 21:53 file.txt 550097 -rwxr--r-- 2 user user 243 авг 19 21:53 hardlink.txt
Первое число - inode, он одинаковый. После перечисления прав - кол-во ссылок (две).
У мягкой (или символической) ссылки свой inode, она ориентируется на имя объекта, т. е., если переименовать файл, то мягкая ссылка перестанет работать. Мягкие ссылки могут находиться в разных файловых системах. Иногда это свойство используется, чтобы быстро решить проблему нехватки места на диске: можно добавить диск, перенести на него данные и создаь символическую ссылку из старого местоположения в новое.
ln file.txt hard # сделать жёсткую ссылку на file.txt ln -s file.txt soft # сделать мягкую ссылку на file.txt (-s - soft, symbolic) ln -s file.txt Folder/ # мягкая ссылка создастся, но будет нерабочей, т. к. # команда выполняется в папке, а там нет file.txt. # Если не указывать имя ссылки, то она будет с тем же именем, что и объект. ln -s ~/file.txt Folder/ # так - сработает (если file.txt в домашней папке). # Нужно указывать полный путь к объектам, на которые даётся ссылка.
104.7 Find system files and place files in the correct location
Weight: 2
Description: Candidates should be thoroughly familiar with the Filesystem Hierarchy Standard (FHS), including typical file locations and directory classifications.
Key Knowledge Areas:
- Understand the correct locations of files under the FHS
- Find files and commands on a Linux system
- Know the location and purpose of important file and directories as defined in the FHS
Terms and Utilities:
- find
- locate
- updatedb
- whereis
- which
- type
- /etc/updatedb.conf
FHS
FHS - это File System Hierarchy Standard, т. е., стандартная иерархия файловой системы.
/bin - базовые бинарники команд
/boot - файлы загрузчика
/dev - устройства (devices)
/etc - конфигурация ПК (конфиг. файлы)
/home - домашние папки
/lib - библиотеки и модули ядра
/proc - информация о работающей системе (процессы)
/media - монтирование съёмных носителей (флешки, CDs и т. п.)
/mnt - для монтирования носителей
/opt - пакеты доп. ПО
/root - домашняя папка root
/sbin - настройки основных компонентов системы
/srv - данные для системных служб
/tmp - временные файлы
/usr - бинарники пользователей
/var - часто меняющиеся данные (логи, почта и т. п.)
Команды
grep - поиск по содержимому
find - поиск файлов по свойствам
find / -name mail # искать объекты с именем mail (точное соответствие) find / -user user # найти всё, относящееся к user
locate - быстрый поиск файлов, не ищет на смонтированных устройствах, в /tmp, /var/spool и т. п. Конфиг locate - /etc/updatedb.conf. Работает с индексом файлов, создающимся командой find по запланированному заданию раз в день.
sudo updatedb # обновить индекс принудительно locate mail # показать всё включающее слово mail
which - поиск команды
which ls # путь к команде ls в файловой системе
type - вывод точной команды
type ls # вывести параметры запуска команды ls из её расположения в файловой системе
whereis - поиск команды, исходников и мануала
whereis ls # похоже на which, но подробнее + доп. функционал