Заметки об ОС 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 — посылает сигналы процессам;

Смотрите также: