Читаем Командная строка Linux. Полное руководство полностью

В момент запуска системы ядро инициирует выполнение нескольких собственных задач в виде процессов и запускает программу с названием init. В свою очередь init выполняет последовательность сценариев командной оболочки (находятся в /etc), называемых сценариями начальной загрузки (init scripts), которые запускают все системные службы. Многие из этих служб реализованы как программы-демоны (daemon programs), то есть программы, действующие в фоновом режиме и выполняющие свою работу без участия пользователя. Поэтому, даже в отсутствие зарегистрированных пользователей система выполняет определенные служебные процедуры.

Принцип, по которому программа может запускать другие программы, выражается правилом: родительский процесс запускает дочерний процесс.

Ядро хранит информацию обо всех процессах, чтобы упорядочить их работу. Например, каждому процессу присваивается номер, который называют идентификатором процесса (Process ID, PID). Идентификаторы процессов присваиваются в порядке возрастания, при этом процесс init всегда получает идентификатор PID 1. Ядро также следит за памятью, выделенной каждому процессу, и за готовностью процессов возобновить выполнение. Подобно файлам, процессы также имеют идентификаторы владельца и пользователя, эффективный (или действующий) идентификатор пользователя и т.д.

<p>Просмотр списка процессов с помощью ps</p>

Чаще всего для просмотра списка процессов используется команда ps. Программа ps имеет множество параметров, но в самом простейшем случае она используется следующим образом:

[me@linuxbox ~]$ ps

PID TTY TIME CMD

5198 pts/1 00:00:00 bash

10129 pts/1 00:00:00 ps

В этом примере команда вывела список с двумя процессами: процесс 5198 и процесс 10129 — программы bash и ps соответственно. Как можно заметить, по умолчанию ps выводит не очень много информации, только процессы, связанные с текущим сеансом. Чтобы увидеть больше, следует передать дополнительные параметры, но прежде чем мы сделаем это, давайте рассмотрим другие поля в выводе команды ps. Поле TTY — это сокращение от teletype (телетайп), оно содержит информацию об управляющем терминале процесса. В Unix в этом поле выводится тип терминала. Поле TIME содержит объем процессорного времени, потребленного процессом. Как видите, ни один из процессов не является слишком обременительным для компьютера.

Если добавить параметр x, можно получить более богатую информацию о происходящем в системе:

[me@linuxbox ~]$ ps x

PID TTY STAT TIME COMMAND

2799 ? Ssl 0:00 /usr/libexec/bonobo-activation-server –ac

2820 ? Sl 0:01 /usr/libexec/evolution-data-server-1.10 --

15647 ? Ss 0:00 /bin/sh /usr/bin/startkde

15751 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --

15754 ? S 0:00 /usr/bin/dbus-launch --exit-with-session

15755 ? Ss 0:01 /bin/dbus-daemon --fork --print-pid 4 –pr

15774 ? Ss 0:02 /usr/bin/gpg-agent -s –daemon

15793 ? S 0:00 start_kdeinit --new-startup +kcminit_start

15794 ? Ss 0:00 kdeinit Running...

15797 ? S 0:00 dcopserver –nosid

и еще много других процессов...

Дополнительный параметр x (обратите внимание на отсутствие дефиса) сообщает команде ps, что та должна вывести все процессы, независимо от того, какие терминалы (если таковые имеются) управляют ими. Символ ? в поле TTY указывает на отсутствие управляющего терминала. Таким образом, параметр x позволяет увидеть все процессы в системе, которыми мы владеем.

Так как в системе одновременно выполняется множество процессов, ps производит довольно длинные списки. Часто бывает полезно передать вывод ps команде less через конвейер, чтобы его проще было просматривать. Некоторые комбинации параметров приводят к выводу очень длинных строк, поэтому нелишним будет также распахнуть окно эмулятора терминала на весь экран.

В этом примере в выводе появился новый столбец — STAT. Название STAT — это сокращение от state (состояние), столбец содержит информацию о текущем состоянии процесса, как показано в табл. 10.1.

Таблица 10.1. Состояния процессов

Перейти на страницу:

Похожие книги

Компьютерные сети. 6-е изд.
Компьютерные сети. 6-е изд.

Перед вами шестое издание самой авторитетной книги по современным сетевым технологиям, написанное признанным экспертом Эндрю Таненбаумом в соавторстве со специалистом компании Google Дэвидом Уэзероллом и профессором Чикагского университета Ником Фимстером. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности. Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.

Дэвид Уэзеролл , Ник Фимстер , Эндрю Таненбаум

Учебные пособия, самоучители