Книга «Библия Linux. 10-е издание» (Негус К.)
Издательский дом «Питер» предлагает вашему вниманию еще одну книгу — «Библия Linux. 10-е издание», уже доступную для заказа на официальном сайте.
По промокоду LinuxORG действует скидка 30 % на все книги издательства.
Если станет доступна электронная версия этой книги, то при покупке физической копии вы получите ее в подарок.
«Библия Linux» рассказывает, как:
приступить к работе с Linux;
защитить системы и сети с Linux;
реализовать автоматизацию дата-центра с помощью Ansible;
упростить системное администрирование с помощью Cockpit;
получить доступ к командной оболочке и писать простые скрипты;
изучить контейнеризацию с применением Docker и Podman и, в частности, оркестрацию контейнеров с использованием Kubernetes и OpenShift;
конфигурировать различные серверы и устранять распространенные проблемы;
создавать виртуальные машины Linux, работающие на гипервизорах и облачных платформах.
Ниже представлен отрывок из книги.
Управление активными процессами
Linux не только многопользовательская, но и многозадачная операционная система. Многозадачность означает, что много программ могут выполняться одновременно. Экземпляр запущенной программы называется процессом. Linux позволяет перечислять запущенные процессы, мониторить использование системы и прерывать (убивать) процессы по необходимости.
Из оболочки можно запускать процессы, а затем приостанавливать, останавливать или завершать их. Их можно также выполнять в обычном или фоновом режимах. В этой главе описываются команды ps, top, kill, jobs и др., которые позволяют перечислять процессы и управлять ими.
Что такое процесс
Процесс — это запущенный экземпляр команды. Например, в системе может быть одна команда vi. Однако если с vi работают одновременно 15 пользователей, то она представлена 15 различными запущенными процессами.
Процесс идентифицируется в системе с помощью так называемого идентификатора процесса (PID). Этот PID уникален для текущей системы. Другими словами, ни один прочий процесс не может использовать этот номер в качестве идентификатора процесса, пока первый процесс работает. Однако после завершения первого процесса другой процесс может повторно задействовать это число.
У процесса есть не только идентификатор, но и другие атрибуты. Каждый выполняемый процесс связан с определенной учетной записью пользователя и учетной записью группы. Информация об учетной записи помогает определить, к каким системным ресурсам процесс может получить доступ. Например, у процесса, запущенного от имени суперпользователя, доступ к системным файлам и ресурсам больший, чем у процесса, запущенного от имени обычного пользователя.
Системному администратору Linux необходимо уметь управлять процессами, протекающими в системе. Иногда запущенные процессы могут привести к снижению производительности системы. Управление процессами, которые используют память и процессор, также будет описано в данной главе.
ПРИМЕЧАНИЕ Команды, отображающие информацию о запущенных процессах, получают бóльшую часть этой информации в виде необработанных данных, хранящихся в файловой системе /proc. Каждый процесс хранит свою информацию в подкаталоге /proc с именем идентификатора этого процесса. Часть необработанных данных можно просмотреть, отобразив содержимое файлов в одном из этих каталогов (используя команды cat или less).
Перечисление процессов
Команда ps — одна из первых и наиболее распространенных команд для перечисления процессов, запущенных в данный момент в системе. Linux-версия команды ps содержит множество параметров из устаревших систем UNIX и BSD, часть из которых конфликтуют и реализуются нестандартными способами. На справочной странице ps представлена информация об этих параметрах.
Команда top, которая также перечисляет процессы, больше ориентирована на экран и может служить для изменения статуса процессов. В интерфейсе GNOME можно использовать утилиту System Monitor (Системный монитор), которая отслеживает процессы в системе и представляет информацию с помощью графических средств. Эти команды будут описаны в следующих разделах.
Перечисление процессов с помощью команды ps
Наиболее распространенная команда для проверки запущенных процессов — это ps. Она позволяет посмотреть, какие программы запущены, какие ресурсы они используют и кем были запущены. Пример работы команды ps:
В примере в этом сеансе оболочки событий немного. Первый процесс показывает, что пользователь по имени jake открыл оболочку bash после входа в систему. Следующий процесс показывает, что jake выполнил команду ps u. Терминал tty1 используется для входа в систему. Столбец STAT отображает статус процесса, указывая, запущен ли процесс (R) или находится в спящем режиме (S).
ПРИМЕЧАНИЕ В столбце STAT могут отображаться несколько значений. Например, знак плюс (+) указывает, что процесс связан с операциями, протекающими в обычном режиме.
VSZ (виртуальный размер процесса) показывает размер процесса изображения (в килобайтах), а RSS (размер страниц памяти) — размер программы в памяти. Значения VSZ и RSS могут различаться, потому что VSZ — это объем памяти, выделенный для процесса, тогда как RSS — это объем, который используется фактически. RSS-память представляет собой физическую незаменяемую память.
Столбец TART показывает время начала выполнения процесса, а TIM — совокупное используемое системное время. (Большинство команд потребляет мало процессорного времени, для тех, которые не использовали и секунды, время отражается как 0:00.)
Многие запущенные на компьютере процессы не связаны с терминалом. Обычно в системе Linux множество процессов работает в фоновом режиме. Фоновые системные процессы выполняют различные задачи, к примеру измеряют активность системы или изучают данные из сети. Они часто запускаются при загрузке Linux и работают непрерывно, пока система не выключится. Аналогично вход на рабочий стол Linux запускает многие фоновые процессы, к примеру процессы управления аудио, панели рабочего стола, аутентификацию и другие функции рабочего стола. Чтобы просмотреть все процессы, запущенные в системе Linux для текущего пользователя, добавьте в ps ux конвейер (|) и команду less:
Чтобы просмотреть все процессы, запущенные для всех пользователей системы,используйте команду ps aux следующим образом:
Конвейер | (на клавиатуре располагается над символом обратной косой черты) позволяет направлять вывод одной команды на вход следующей. В этом примере выходные данные команды ps (список процессов) направляются в команду less, которая позволяет просматривать эту информацию на странице. Нажимайте клавишу Пробел, чтобы пролистать страницу, и введите q, чтобы закончить список. Можно также применять клавиши со стрелками для перемещения по строкам вывода данных.
По умолчанию выходные данные сортируются по номеру процесса (PID):
Если нужно отсортировать данные иначе, примените параметр sort=. Например, чтобы увидеть, какие процессы используют больше всего памяти, я сортирую список по столбцу vsz от меньшего к большему. Поскольку мне сначала нужно увидеть самые затратные процессы, я поставил дефис перед параметром сортировки (sort=-vsz):
Обратитесь к справочной странице ps, чтобы узнать больше о других столбцах, по которым можно выводить и сортировать информацию.
Об авторе
Кристофер Негус — главный специалист по разработке и написанию технической документации в компании Red Hat, Inc. За более чем десять лет работы в Red Hat Крис помог сотням ИТ-специалистов стать сертифицированными инженерами Red Hat (RHCEs) и написал множество технических руководств на различные темы, от Linux до виртуализации, облачных вычислений и контейнеризации.
До прихода в компанию Red Hat Крис написал десятки книг по Linux и UNIX, включая Red Hat Linux Bible (все издания), Docker Containers, CentOS Bible, Fedora Bible, Linux Troubleshooting Bible, Linux Toys, Linux Toys II и девять изданий «Библии Linux». Он также был соавтором нескольких книг из серии Linux Toolbox для опытных пользователей: Fedora Linux Toolbox, SUSE Linux Toolbox, Ubuntu Linux Toolbox, Mac OS X Toolbox и BSD UNIX Toolbox.
Еще до начала писательской деятельности Крис в течение восьми лет работал в организации AT&T, разработавшей операционную систему UNIX, а в начале 1990-х годов переехал в Юту, чтобы внести свой вклад в проект Novell UnixWare.
Книга «Библия Linux. 10-е издание»

Linux — основа большинства технологических прорывов в облачных вычислениях, поэтому вы должны как следует понимать эту систему, чтобы эффективно работать в дата-центрах будущего. Азы Linux, изложенные в начале книги, пригодятся в дальнейших главах, где автор рассказывает, как развертывать системы Linux в качестве гипервизоров, облачных контроллеров и виртуальных машин, а также как управлять виртуальными сетями и сетевыми хранилищами данных.
«Библия Linux» рассказывает, как:
Файловая система
В Linux организована иерархия каталогов. В каждом каталоге находятся файлы и другие каталоги. Можно создать ссылку на любой файл или каталог, используя либо полный путь (например, /home/joe/myfile.txt), либо относительный путь (например, если /home/joe — это текущий каталог, то можно просто ссылаться на файл через myfile.txt).
Если составить карту файлов и каталогов в Linux, то она будет выглядеть как перевернутое дерево. Вверху находится корневой каталог (также называемый каталогом root), который представлен одной косой чертой (/). Ниже располагается список общих каталогов системы Linux, таких как bin, dev, home, lib и tmp. Каждый из них, а также каталоги, добавленные в корневой, могут содержать подкаталоги.
На рис. 4.1 показано, как организована файловая система Linux. В качестве примера связи каталогов здесь приведен каталог /home, содержащий подкаталог для пользователя joe. В каталоге joe находятся подкаталоги Desktop, Documents и др. Чтобы добраться до файла memo1.doc, находящегося в каталоге memos, нужно ввести полный путь к нему: /home/joe/Documents/memos/memo1.doc. Если текущий каталог — /home/joe/, то можно ввести Documents/memos/memo1.doc.
Некоторые из этих каталогов Linux могут вас заинтересовать.
Файловые системы Linux и Windows
Хотя файловая система Linux во многом схожа с системами MS-DOS и Windows, у нее есть поразительные отличия, например следующие.
Базовые команды файловой системы
Одна из самых простых команд — это cd. Она может использоваться без каких-либо параметров (чтобы перенести пользователя в домашний каталог) или с полными или относительными путями. Рассмотрим следующие команды:
Параметр /usr/share представляет абсолютный путь к каталогу в системе. Поскольку он начинается с косой черты (/), этот путь указывает оболочке начать с корневого каталога файловой системы и привести к каталогу share, находящемуся в каталоге usr. Параметр doc для команды cd ищет каталог с именем doc, который относится к текущему каталогу. Таким образом, эта команда открывает /usr/share/doc и делает его текущим каталогом.
После этого, введя только cd, вы вернетесь в домашний каталог. Если необходимо узнать, где вы находитесь в файловой системе, команда pwd поможет. Вот еще несколько интересных вариантов использования команды cd:
) ссылается на ваш домашний каталог. С помощью команды cd
к нему можно перейти. Можно также применять тильду для ссылки на каталоги относительно вашего домашнего каталога, например, /home/chris/Music с помощью
/Music. Ввод имени в качестве параметра приведет вас в каталог ниже текущего каталога, а две точки (..) можно использовать, чтобы перейти в каталог уровнем выше текущего. В приведенном примере вы подниметесь на три уровня (до /), а затем перейдете в каталог /usr.
Далее рассмотрим, как создавать каталоги в домашнем каталоге, перемещаться между ними и устанавливать соответствующие права доступа.
1. Перейдите в домашний каталог. Для этого введите cd в интерпретаторе и нажмите клавишу Enter. (Другие способы перехода в домашний каталог см. во врезке «Обозначения каталогов» далее.)
2. Чтобы убедиться, что вы находитесь в домашнем каталоге, введите pwd. Далее появится такая строка:
3. Создайте в домашнем каталоге новый каталог с именем test:
4. Проверьте права доступа каталога:
Список показывает, что test — это каталог (d). После буквы d указаны права доступа (rwxr-xr-x), которые мы рассмотрим далее, в разделе «Владельцы и права доступа к файлам». Прочие сведения указывают на владельца (joe), группу (sales) и дату последнего изменения файлов в каталоге (24 января в 12:17).
ПРИМЕЧАНИЕ
Новый пользователь системы Fedora или Red Hat Enterprise Linux по умолчанию назначается в группу с тем же именем. В предыдущем примере пользователь joe назначен в группу joe. Данный подход к управлению группами называется личной группой пользователя (user private group, UPG).
Таким образом дается право на предоставление полного доступа вам и никакого — всем остальным. (Новые права доступа читаются как rwx——.)
5. Сделайте каталог test своим текущим каталогом следующим образом:
Теперь подкаталог test домашнего каталога является вашим текущим рабочим каталогом. В каталог test можно добавлять файлы и каталоги, следуя инструкциям, приведенным далее в этой главе.
Метасимволы и операторы
Независимо от того, перечисляете вы, перемещаете, копируете, удаляете или иным образом воздействуете на файлы в системе Linux, определенные специальные символы, называемые метасимволами и операторами, помогают работать с файлами более эффективно. Метасимволы помогают обработать один или несколько файлов, не вводя полностью имя каждого. Операторы позволяют направлять информацию из одной команды в другую или из одного файла в другой.
Метасимволы для пакетной обработки файлов
Чтобы экономить время и быстрее ссылаться на группу файлов, оболочка bash позволяет применять метасимволы. Всякий раз, когда нужно обратиться к файлу или каталогу, например, чтобы перечислить, открыть или удалить его, используйте соответствующие файлам метасимволы. Примеры полезных метасимволов:
Команда touch создает пустые файлы. Далее показано, как использовать метасимволы с командой ls для пакетной обработки файлов. Выполните следующие команды и проанализируйте результаты:
Первый пример соответствует любому файлу, имя которого начинается с a (apple). Следующий соответствует всем файлам, имена которых начинается с g (grape, grapefruit). Далее обрабатываются файлы, имена которых начинаются с буквы g и заканчиваются на букву t (grapefruit). Затем обрабатываются файлы, содержащие в именах букву e (apple, grape, grapefruit, watermelon). Наконец, обрабатываются все файлы, имена которых в любом месте содержат букву n (banana, watermelon).
Примеры выборки файлов с вопросительным знаком (?):
Первый пример соответствует любому файлу из пяти символов, имена которых заканчиваются на букву e (apple, grape). Второй соответствует любому файлу, имя которого начинается с буквы g и в пятой позиции есть буква e (grape, grapefruit).
Примеры выборки с квадратными скобками:
В первом примере ищется любой файл, имя которого начинается с буквы a, b или w. Во втором берется любой файл, имя которого начинается с буквы a, g или w и заканчивается либо на n, либо на e. В скобки можно включать и диапазоны букв, например:
В таком случае сопоставляются любые файлы, имена которых начинаются с букв от a до g.
Метасимволы перенаправления файлов
Команды получают данные после стандартного ввода и передают их на стандартный вывод. С помощью конвейеров (описаны ранее) можно направлять стандартный вывод одной команды на стандартный ввод другой. Для направления данных в файлы и из файлов используются знаки «меньше» ( ). Символы перенаправления файлов:
Другой тип перенаправления, называемый встроенным документом (here-документом), позволяет вводить текст, который используется в качестве стандартного ввода для команды. Встроенные документы включают в себя ввод двух символов «меньше» (
