Книга «Библия Linux. 10-е издание» (Негус К.)

good-penguin.png

Издательский дом «Питер» предлагает вашему вниманию еще одну книгу — «Библия 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:

$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jake 2147 0.0 0.7 1836 1020 tty1 S+ 14:50 0:00 -bash
jake 2310 0.0 0.7 2592 912 tty1 R+ 18:22 0:00 ps u 

В этом примере параметр u (как и -u) запрашивает отображение имен пользователей и другой информации о времени запуска и использовании памяти и процессора для процессов, связанных с активным пользователем. Показанные процессы связаны с текущим терминалом (tty1). Понятие терминала восходит к былым временам, когда люди работали исключительно с символьными терминалами, которые обычно представляли одного человека на одном экране. Теперь же можно иметь несколько терминалов на одном экране, открыв несколько виртуальных терминалов или окон на рабочем столе.

В примере в этом сеансе оболочки событий немного. Первый процесс показывает, что пользователь по имени jake открыл оболочку bash после входа в систему. Следующий процесс показывает, что jake выполнил команду ps u. Терминал tty1 используется для входа в систему. Столбец STAT отображает статус процесса, указывая, запущен ли процесс ® или находится в спящем режиме (S).

ПРИМЕЧАНИЕ В столбце STAT могут отображаться несколько значений. Например, знак плюс (+) указывает, что процесс связан с операциями, протекающими в обычном режиме.

В столбце USER отображается имя пользователя, запустившего процесс. У каждого процесса есть номер, называемый идентификатором процесса, или PID. Задействуйте PID, если нужно убить процесс или отправить другой сигнал процессу. Столбцы CPU и MEM показывают процентное соотношение работы процессора и оперативной памяти, которые использует текущий процесс.

VSZ (виртуальный размер процесса) показывает размер процесса изображения (в килобайтах), а RSS (размер страниц памяти) — размер программы в памяти. Значения VSZ и RSS могут различаться, потому что VSZ — это объем памяти, выделенный для процесса, тогда как RSS — это объем, который используется фактически. RSS-память представляет собой физическую незаменяемую память.

Столбец TART показывает время начала выполнения процесса, а TIM — совокупное используемое системное время. (Большинство команд потребляет мало процессорного времени, для тех, которые не использовали и секунды, время отражается как 0:00.)

Многие запущенные на компьютере процессы не связаны с терминалом. Обычно в системе Linux множество процессов работает в фоновом режиме. Фоновые системные процессы выполняют различные задачи, к примеру измеряют активность системы или изучают данные из сети. Они часто запускаются при загрузке Linux и работают непрерывно, пока система не выключится. Аналогично вход на рабочий стол Linux запускает многие фоновые процессы, к примеру процессы управления аудио, панели рабочего стола, аутентификацию и другие функции рабочего стола. Чтобы просмотреть все процессы, запущенные в системе Linux для текущего пользователя, добавьте в ps ux конвейер (|) и команду less:

$ ps ux | less

Чтобы просмотреть все процессы, запущенные для всех пользователей системы, используйте команду ps aux следующим образом:

$ ps aux | less

Конвейер | (на клавиатуре располагается над символом обратной косой черты) позволяет направлять вывод одной команды на вход следующей. В этом примере выходные данные команды ps (список процессов) направляются в команду less, которая позволяет просматривать эту информацию на странице. Нажимайте клавишу Пробел, чтобы пролистать страницу, и введите q, чтобы закончить список. Можно также применять клавиши со стрелками для перемещения по строкам вывода данных.

Команда ps может отображать выбранные столбцы информации и сортировать информацию по одному из этих столбцов. Используя параметр -o, можно добавить ключевые слова для указания столбцов, которые нужно перечислить с помощью команды ps. Далее в примере отображаются все запущенные процессы (-e), а за ними следует параметр -o для каждого столбца, содержащего нужную информацию, включая идентификатор процесса (pid), имя пользователя (user), идентификатор пользователя (uid), название группы (group), идентификатор группы (gid), количество выделенной виртуальной памяти (vsz), количество резидентной памяти (rss) и запущенную командную строку (come).

По умолчанию выходные данные сортируются по номеру процесса (PID):

$ ps -eo pid,user,uid,group,gid,vsz,rss,comm | less
PID USER UID GROUP GID VSZ RSS COMMAND
1 root 0 root 0 187660 13296 systemd
2 root 0 root 0 0 0 kthreadd

Если нужно отсортировать данные иначе, примените параметр sort=. Например, чтобы увидеть, какие процессы используют больше всего памяти, я сортирую список по столбцу vsz от меньшего к большему. Поскольку мне сначала нужно увидеть самые затратные процессы, я поставил дефис перед параметром сортировки (sort=-vsz):

$ ps -eo pid,user,group,gid,vsz,rss,comm --sort=-vsz | head
PID USER GROUP GID VSZ RSS COMMAND
2366 chris chris 1000 3720060 317060 gnome-shell
1580 gdm gdm 42 3524304 205796 gnome-shell
3030 chris chris 1000 2456968 248340 firefox
3233 chris chris 1000 2314388 316252 Web Content

Обратитесь к справочной странице 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.org.ru