Заметки об ОС Linux. Часть 4. Стандартные утилиты UNIX
Главное достоинство многих ОС семейства UNIX в том, что они модульные. Мы можем заменить один компонент системы, который нам не нравится, на другой, в случае. Например, мы можем удалить из системы рабочее окружение GNOME Shell и установить вместо него KDE Plasma. Либо мы можем создавать различные дистрибутивы одной ОС, единственное различие которых будет в разном наборе, казалось бы, однотипных программ. Всем же известно, что есть дистрибутивы Linux, использующие systemd, а есть дистрибутивы, использующие OpenRC или runit. А есть дистрибутивы, использующие glibc, но также есть и те, которые используют musl. Модульность является как плюсом для пользователей, ведь они могут найти систему, удовлетворяющую всем их требованиям, так и минусом, поскольку разные программы, делающие одно и тоже, могут различаться как по качеству, так и по набору функций, которые они могут выполнять. Но, тем не менее, наличие альтернатив каким-либо компонентам системы однозначно идёт на пользу таким системам.
Системные компоненты
В составе операционных систем семейства UNIX помимо ядра ОС, загрузчика и командной оболочки или иного интерфейса, с которым взаимодействует пользователь, входит ряд программ, которые предназначены, как правило, для администрирования и настройки системы. Среди этих программ есть утилиты для работы с файлами, правами доступа, процессами и прочим. Большинство этих утилит объединено в один пакет под названием coreutils
(некоторые из них, предназначенные для администрирования ОС, использующих ядро Linux, находятся в отдельном пакете util-linux
— как правило, это программы для работы с файловыми системами и подкачками, инициализации и запуска TTY, отображения логов ядра и т.п. — т.е. специфичные для Linux программы).
Программы
Условно все программы в coreutils можно разделить на следующие категории:
Работа с файлами. Программы отсюда предназначены для создания, копирования, перемещения файлов и для изменения их метаданных.
Управление доступом. Эти утилиты применяются для изменения прав доступа к файлам и указания владельцев/группы владельцев файлов и каталогов.
Управление процессами. Программы нужны для отправки сигналов процессам, изменения их приоритета и отслеживанию запущенных в системе процессов.
Системные утилиты. Работа с TTY, получение информации о ядре Linux, работа с переменными окружения и т.д.
Реализации coreutils
Свои версии стандартных утилит UNIX имеют системы семейства *BSD и системы, использующие ядро Linux: в дистрибутивах GNU/Linux используется GNU Coreutils, а во встраиваемых системах как правило используется BusyBox, который содержит едаже больше утилит, чем в coreutils, хотя по размеру эти программы весьма небольшие и компактные.
- GNU Coreutils — используется в большинстве дистрибутивов GNU/Linux по умолчанию;
- uutils coreutils — реализация стандартных утилит UNIX на языке программирования Rust. Пытается обеспечить максимальную совместимость с GNU-версией утилит;
- BusyBox — пакет, содержащий микроверсии программ из coreutils и ряда других проектов, объединяющий их в один небольшой исполняемый файл (размером до нескольких Мбайт). Обычно используется во встраиваемых системах;
- ToyBox — менее продвинутый и функциональный аналог BusyBox. Основная цель этого проекта — сделать Android самодостаточной системой, улучшив утилиты командной строки. В 2015 году Google объединила toybox с прошивкой AOSP и начала поставлять toybox с Android Marshmallow.
Состав
Работа с файлами
ls
— просматривает содержимое указанной директории;cat
— выполняет конкатенацию содержимого файла в поток стандартного вывода;mkdir
— создаёт директорию;rmdir
— удаляет пустую директорию;rm
— удаляет файлы или директории;cp
— копирует файлы или директории;mv
— перемещает файлы или директории;ln
— создаёт жёсткие или символьные ссылки;mktemp
— создаёт временный файл или директорию;mknod
— создаёт именованный канал или устройство;md5sum
,sha256sum
,*sum
— вычисляет контрольные суммы файлов;[
,test
— команда для проверки файла на его наличие, для проверки типа файла (файл, директория, ссылка), а также проверяет условия на истинность/ложность;truncate
— уменьшает или увеличивает размер файла;
Работа с дисками
dd
— утилита побайтового копирования файлов;df
— выводит информацию об использовании дисков;du
— выводит информацию о размере файлов;
Работа с правами доступа
chown
— изменяет владельца и группу владельца файла;chmod
— изменяет права доступа к файлу;
Управление процессами
nice
— изменяет приоритет процессов;nproc
— выводит число ядер/потоков процессора, доступных процессу;
Работа с данными
cut
— печатает выбранные части строк;expand
— конвертирует символы табуляции (\t
) в пробелы;od
— выгружает файлы в восьмеричном и других форматах;sort
— сортирует строки;uniq
— печатает или убирает повторяющиеся строки;comm
— построчно сравнивает два файла;head
— выводит первые n-строк из файла;tail
— выводит последние n-строк из файла;wc
— считает строки, символы и байты в файле;
Управление пользователями
groups
— сообщает о членстве пользователя в группах;hostid
— выводит идентификатор хоста в шестнадцатеричном формате;id
— выводит EUID, GID и членство в группах указанного пользователя;logname
— сообщает имя пользователя, от имени которого произошёл вход в систему;users
— выводит список пользователей, залогиненных в системе;who
— сообщает, кто вошёл в систему;whoami
— сообщает имя пользователя, связанное с текущим EUID;
util-linux
Из состава пакета util-linux
можно также отметить следующие программы:
dmesg
— выводит буфер сообщений ядра в stdout;lsblk
— выводит список блочных устройств в stdout;mount
— монтирует файловую систему;umount
— размонтирует файловую систему;su
— выполняет вход от имени указанного пользователя;kill
— посылает сигналы процессам;
Смотрите также: