Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Введение в GNU Core Utilities

Оригинал: An introduction to the GNU Core Utilities
Автор: David Both
Дата публикации: 24 апреля 2018 года
Перевод: А. Кривошей
Дата перевода: сентябрь 2018 г.

Два набора утилит - GNU Core Utilities и util-linux - содержат большинство основных и регулярно используемых инструментов системного администратора Linux. Их основные возможности позволяют системным администраторам выполнять многие задачи, необходимые для администрирования компьютера Linux, включая управление текстовыми файлами, каталогами, потоками данных, носителями данных, элементами управления процессами, файловыми системами и многое другое.

Эти инструменты незаменимы, потому что без них невозможно выполнять любую полезную работу на компьютере Unix или Linux. Учитывая их важность, давайте рассмотрим их подробнее.

GNU coreutils

Чтобы понять происхождение GNU Core Utilities, нам нужно совершить короткую поездку на машине времени в ранние дни Unix в Bell Labs. Unix была написана так, что Кен Томпсон, Деннис Ричи, Дуг Макилрой и Джо Оссанна могли продолжать использовать что-то, что они начали писать, работая над большой многозадачной и многопользовательской операционной системой под названием Multics. Это что-то было игрой под названием Space Travel. Как и сегодня, геймеры продвигали технологии вычислений. Эта новая операционная система была намного более ограниченной, чем Multics, поскольку только два пользователя могли войти в систему одновременно, поэтому ее называли Unics. Это имя позднее было изменено на Unix.

Со временем Unix оказалась настолько успешной, что Bell Labs начала по сути отдавать ее университетам, а затем компаниям за стоимость носителя и пересылки. В те времена программное обеспечение на системном уровне распространялось между организациями и программистами, поскольку они работали над достижением общих целей в контексте системного администрирования.

В конце концов, PHB и AT&T решили, что они должны делать деньги на Unix и начали использовать более ограниченные и дорогостоящие лицензии. Это происходило в то время, когда программное обеспечение становилось все более проприетарным, ограниченным и закрытым. Становится невозможным совместное использование программного обеспечения с другими пользователями и организациями.

Некоторым людям это не нравилось, и они боролись с бесплатным программным обеспечением. Ричард Столлман, также известный как RMS, возглавил группу повстанцев, которые пытались написать открытую и свободно доступную операционную систему, которую они назвали операционной системой GNU. Эта группа создала GNU Utilities, но не создала жизнеспособного ядра.

Когда Линус Торвальдс впервые написал и скомпилировал ядро Linux, ему понадобился набор очень простых системных утилит, чтобы начать выполнять хоть какую-то полезную работу. Ядро не предоставляет команды или командную оболочку, например Bash. Оно бесполезно само по себе. Итак, Линус использовал свободно доступные GNU Core Utilities и перекомпилировал их для Linux. Это дало ему полную, если и достаточно примитивную, операционную систему.

Вы можете узнать обо всех отдельных программах, входящих в Утилиты GNU, введя команду info coreutils в командной строке терминала. Приведенный ниже список основных утилит является частью этой информационной страницы. Утилиты сгруппированы по функциям, чтобы облегчить их поиск; в терминале выделите группу, по которой вы хотите получить дополнительную информацию, и нажмите клавишу Enter.

* Output of entire files::       cat tac nl od base32 base64
* Formatting file contents::     fmt pr fold
* Output of parts of files::     head tail split csplit
* Summarizing files::            wc sum cksum b2sum md5sum sha1sum sha2
* Operating on sorted files::    sort shuf uniq comm ptx tsort
* Operating on fields::          cut paste join
* Operating on characters::      tr expand unexpand
* Directory listing::            ls dir vdir dircolors
* Basic operations::             cp dd install mv rm shred
* Special file types::           mkdir rmdir unlink mkfifo mknod ln link readlink
* Changing file attributes::     chgrp chmod chown touch
* Disk usage::                   df du stat sync truncate
* Printing text::                echo printf yes
* Conditions::                   false true test expr
* Redirection::                  tee
* File name manipulation::       dirname basename pathchk mktemp realpath
* Working context::              pwd stty printenv tty
* User information::             id logname whoami groups users who
* System context::               date arch nproc uname hostname hostid uptime
* SELinux context::              chcon runcon
* Modified command invocation::  chroot env nice nohup stdbuf timeout
* Process control::              kill
* Delaying::                     sleep
* Numeric operations::           factor numfmt seq

В этом списке 102 утилиты. Они охватывают многие функции, необходимые для выполнения основных задач на хосте Unix или Linux. Однако многие базовые утилиты здесь отсутствуют. Например, команды mount и umount не входят в этот список. Их, и многие другие команды, которых нет в GNU coreutils, можно найти в коллекции util-linux.

util-linux

Утилиты util-linix содержат многие другие базовые команды, которые используют системные администраторы. Эти утилиты распространяются организацией Linux Kernel, и практически каждая из этих 107 команд изначально входила в одну из трех отдельных коллекций - fileutils, shellutils и textutils - которые были объединены в единый пакет util-linux в 2003 году.

agetty          fsck.minix      mkfs.bfs        setpriv
blkdiscard      fsfreeze        mkfs.cramfs     setsid
blkid           fstab           mkfs.minix      setterm
blockdev        fstrim          mkswap          sfdisk
cal             getopt          more            su
cfdisk          hexdump         mount           sulogin
chcpu           hwclock         mountpoint      swaplabel
chfn            ionice          namei           swapoff
chrt            ipcmk           newgrp          swapon
chsh            ipcrm           nologin         switch_root
colcrt          ipcs            nsenter         tailf
col             isosize         partx           taskset
colrm           kill            pg              tunelp
column          last            pivot_root      ul
ctrlaltdel      ldattach        prlimit         umount
ddpart          line            raw             unshare
delpart         logger          readprofile     utmpdump
dmesg           login           rename          uuidd
eject           look            renice          uuidgen
fallocate       losetup         reset           vipw
fdformat        lsblk           resizepart      wall
fdisk           lscpu           rev             wdctl
findfs          lslocks         RTC Alarm       whereis
findmnt         lslogins        runuser         wipefs
flock           mcookie         script          write
fsck            mesg            scriptreplay    zramctl
fsck.cramfs     mkfs            setarch

Некоторые из этих утилит устарели и, скорее всего, будут удалены из коллекции в какой-то момент в будущем. Вы можете проверить страницу util-linux в Википедии для получения информации о многих утилитах, а man-страницы также содержат подробную информацию о командах.

Заключение

Эти две коллекции утилит Linux, GNU Core Utilities и util-linux, вместе предоставляют основные команды, необходимые для администрирования систем Linux. Когда я писал эту статью, я нашел несколько интересных утилит, о которых я никогда не знал. Многие из этих команд требуются редко, но когда вы в них нуждаетесь, они незаменимы.

Всего в этих двух коллекциях имеется более 200 утилит. Хотя в Linux есть еще много команд, это команды, которые необходимы для управления базовыми функциями типичного хоста Linux.