Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mtd_SPO_2013i.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
370.18 Кб
Скачать

6. Атрибуты процесса. Ключевые слова команды ps.

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

ps -o СПИСОК

в команде ps выводятся только перечисленные в списке колонки. Опция же:

ps –O СПИСОК

где -O не ноль, а латинская буква в верхнем регистре, позволяет добавить перечисленные в списке атрибуты к колонкам, выводимым по умолчанию. Ключевые слова в списке перечисляются через запятую, без пробелов. Рассмотрим основные атрибуты процесса и их ключевые слова для задания колонок в команде ps.

pid -- идентификатор процесса. Это целое положительное число, максимальное значение которого зависит от реализации (В FreeBSD до 99999. Каждый новый процесс получает значение на 1 большее предшествующего, независимо от того закончился ли он или нет. По достижении максимума нумерация опять начинается сначала, но номера, занятые еще работающими в системе процессами - пропускаются. Таким образом в каждый момент времени каждый существующий в системе процесс имеет уникальный pid. Первым процессом, который запускается при загрузке операционной системы является процесс init, имеющий pid=1. Этот процесс не завершается до конца работы операционной системы.

ppid -- идентификатор родительского процесса. Каждый процесс порождается одним из работающих в системе процессов, при этом значение его атрибута ppid устанавливается равным атрибуту pid родительского процесса. При нормальной работе системы для любого существующего процесса, кроме процесса init, в системе существует и родительский процесс. Если родительский процесс завершается раньше, чем порожденные им процессы, то операционная система заменит атрибут ppid всех порожденных им и еще существующих процессов на 1, то есть его потомки передаются процессу init.

command -- командная строка запуска процесса. Процессы, при завершении которых оказалось, что породивший их процесс завершился ранее, не дожидаясь сигнала завершения своего потомка, и при этом потомок не был передан процессу init, в колонке command имеют отметку <defunct>, а процессы, заблокированные при попытке завершения, отмечаются пометкой <exiting>.

state -- текущее состояние процесса (статус). Вместо ключевого слова state может использоваться алиас stat. Некоторые символы статуса процесса могут сочетаться, одновременно характеризуя статус процесса, например, TJ -- приостановленный процесс в Jail или DE – процесс в стадии завершения, E – ожидающий окончания операции с диском.

ruid, uid – реальный и эффективный идентификаторы пользователя-владельца процесса, обычно эти значения одинаковы, но в случае запуска исполняемого файла с установленным битом SUID , ruid наследуется от родительского процесса, а uid, по которому определяются преференции прав на открываемые файлы наследуется от владельца запускаемого исполняемого файла. Чтобы отличить атрибут эффективного владельца процесса от реального иногда подчеркивают это в названии атрибута EUID. Если речь идет об атрибутах процесса, то UID и EUID - синонимы, обозначающие один и тот же атрибут.

ruser -- имя пользователя, соответствующее ruid процесса.

user -- имя пользователя, соответствующее uid(синоним euid) процесса.

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

Например, когда пользователь изменяет свой пароль, для чего запускает утилиту passwd, созданному процессу нужно разрешить запись в файл паролей, хотя он запущен не суперпользователем, следовательно имеет ненулевой ruid, требующийся для записи этого файла). Для этого исполняемым файлам таких системных утилит устанавливаются дополнительные атрибуты SUID или SGID. Установленный атрибут файла SUID означает, что файл исполняемый и при его запуске euid процесса будет равен UID владельца этого файла, а не UID запустившего его пользователя, как обычно. Установленный атрибут файла SGID означает, что файл исполняемый и при его запуске, если при работе процесса понадобится доступ к файлу по групповому классу, будет проверяться есть ли группа файла в составе групп пользователя- владельца исполняемого запущенного SGID-файла, а не как обычно, если процесс образован запуском не SGID-файла, в составе групп реального владельца процесса RUID.

egid процесса будет равен GID владельца этого файла, а не GID запустившего его пользователя.

logname - login_name пользователя, запустившего процесс. В течение сессии пользователь может с помощью команды su переключить свои реквизиты на другого пользователя, если он знает его пароль и является членом группы wheel. При этом запускаемые процессы будут иметь соответствующие новому пользователю реквизиты uid, user, однако реквизит logname по-прежнему будет отражать то имя, с которым пользователь авторизовался в начале сессии. Атрибуты tsid и sid также не изменятся при переключении на другого пользователя.

svuid - UID запущенного исполняемого файла, если у него установлен аттрибут SUID, в противном случае ruid;

svgid – GID запущенного исполняемого файла, если у него установлен аттрибут SGID, в противном случае rgid;

tt – имя управляющего терминала, с которого может производиться интерактивное взаимодействие с процессом; login-shell наследует его от процесса login, который проводил аутентификацию пользователя с этого терминала. Все последующие процессы, запускаемые в данной сессии, прямо или косвенно наследуют управляющий терминал от процесса login-shell.

tty – полное имя управляющего терминала (например, если атрибут tt имеет значение p8, то атрибут tty равен ttyp8. В течение жизненного цикла процесс может отцепить управляющий терминал и стать процессом-демоном, т.е. процессом, не связанным ни с какой терминальной сессией. При выводе командой ps в колонке TT для демонов отображается «??». Процессы, порождаемые процессом-демоном, также являются демонами, то есть не связаны ни с какой терминальной сессией. Процесс-демон может оставаться в системе после выхода из системы его владельца.

tsid -- указатель сессии управляющего терминала (терминальной сессии); одинаковое значение этого атрибута имеют процессы, имеющие один и тот же управляющий терминал и запускаемые с этого терминала. У процесса, являющегося лидером терминальной сессии TSID и PID совпадают.

sid -- указатель сессии, обычно он совпадает с tsid, однако когда процесс становится демоном tsid всегда обнуляется, в то время как существует возможность сохранить значение sid, поэтому некоторые демоны в системе имеют нулевой tsid и ненулевой sid. Это позволяет демонам принимать сигналы о завершении сессии, в которую они входили до того как стали демонами.

Существует ряд атрибутов для объединения процессов в группы по различным признакам. Группы процессов используются, например, для посылки сигнала сразу всем процессам группы, чаще всего сигнала завершения при наступлении определенного события в системе, например, выключении терминала или нарушении связи в сети.

tpgid -- идентификатор группы процессов, связанной с управляющим терминалом;

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

lstart -- дата и время запуска процесса в полном формате вывода;

start -- время запуска процесса; используются различные сокращенные форматы вывода времени в зависимости от давности момента запуска.

time -- суммарный (в режиме задачи и в режиме ядра) расход процессорного времени (cputime).

sl -- время в секундах, которое процесс находится в состоянии sleep, не используя системные ресурсы;

cpu -- коэффициент использования процессоров, являющийся одним из исходных данных при вычислении текущего приоритета процесса для планирования;

nice -- относительный приоритет, также используемый при вычислении текущего приоритета. Большему значению «nice» соответствует меньший приоритет.

pri -- текущий приоритет процесса (sheduling priority), изменяется по мере расходования процессорного времени процессом (чем дольше процесс занимает процессор, тем он становится менее приоритетным).

%cpu -- доля в процентах занятия процессоров данным процессом, в среднем, в течение последней минуты реального времени (pcpu);

vsz, rss, %mem (или pmem), tsiz, pagein (или majfls), minfls, re -- параметры процесса, характеризующие использование оперативной памяти процессом. При работе процесса только часть страниц его ода и данных может быть загружена в память (резидентная часть), остальные страницы могут оказаться выгруженными на диск для освобождения памяти для других процессов. Атрибут vsz -- это виртуальный размер программы в кb (резидентные страницы плюс выгруженные страницы), rss -- размер резидентной части в kb, %mem -- доля в процентах занятия реальной памяти данным процессом (отношение резидентной части к общему объему реальной оперативной памяти).

По умолчанию выводимая информация имеет колонки pid, tt, stat, time, command.

7. Опции команды ps.

-S изменяет способ вычисления процессорного времени, добавляя ко времени каждого процесса время всех его потомков, завершившихся на данный момент.

-c предписывает вместо вывода всей командной строки запуска процесса в колонке COMMAND выводить только имя команды,

-e выводит значения переменных окружения процесса перед командной строкой в колонке COMMAND. Поскольку в одной строке эта информация не умещается, эта опция всегда используется совместно с опцией -w, разрешающей использовать дополнительную строку для вывода. Поскольку и одной дополнительной строки обычно не хватает, используется двойной ключ

-ww разрешающий использовать столько дополнительных строк, сколько требуется, в итоге получается, к примеру, следующая командная строка:

ps -eww

-a добавляет к информации о ваших процессах строки о процессах других пользователей в системе.

-x добавляет строки о процессах-демонах, не имеющих управляющего терминала.

-h обеспечивает вывод на экран дополнительных строк шапки таблицы таким образом, что хотя бы одна из них всегда имеется на экране, так как без этой опции при большом числе строк таблицы процессов шапка таблицы вытесняется с экрана за счет вертикального скроллинга.

-U имя_пользователя выводит информацию о процессах заданного пользователя.

-p PID выводит информацию о процессе с заданным PID.

-t устройство_связи выводит информацию о процессах связанных с заданным терминалом или псевдотерминалом.

-T выводит информацию о процессах, ассоциированных со стандартным входным потоком.

Следующие 4 опции команды ps обеспечивают вывод определенных стандартных наборов колонок с информацией о процессах.

-j выводит колонки связанные со следующими ключевыми словами:

user,pid,ppid,pgid,sid,jobc,state,tt,time,command.

-l используется при анализе приоритетов и планирования процессов и выводит колонки связанные со следующими ключевыми словами:

uid,pid,ppid,cpu,pri,nice,vsz,rss,wchan,state,tt,time, command.

-u выводит колонки связанные со следующими ключевыми словами:

user,pid,%cpu,%mem,vsz,rss,tt,state,start,time,command.

-v применяется при анализе использования памяти процессами и выводит колонки связанные со следующими ключевыми словами:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]