Категории
Самые читаемые

Linux - Алексей Стахнов

Читать онлайн Linux - Алексей Стахнов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 88 89 90 91 92 93 94 95 96 ... 151
Перейти на страницу:

• Вариант третий и самый действенный. В том случае, если вам не удалось прекратить выполнение процесса вышеприведенными способами – например программа зависла или «слетел» терминал – для завершения процесса можно воспользоваться следующими командами: kill, killall.

Команда kill может получать в качестве аргумента как номер процесса, так и идентификационный номер (PID) процесса. Таким образом, команда

/home/vasya# kill 123

эквивалентна команде

/home/vasya# kill %1

Можно видеть, что не надо использовать "%", когда вы обращаетесь к работе по идентификационному номеру (PID) процесса.

С помощью команды killall можно прекратить выполнение нескольких процессов сразу, имеющих одно и то же имя. Например, команда killall mc прекратит работу всех программ тс, запущенных от имени данного пользователя.

Для того чтобы завершить работу процесса, вам надо быть его владельцем. Это сделано в целях безопасности. Если бы одни пользователи могли завершать процессы других пользователей, открылась бы возможность исполнения в системе множества злонамеренных действий. Пользователь root может завершить работу любого процесса в операционной системе.

Программы, используемые для управления процессами

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

Таблица 26.1. Программы управления процессами

nohup

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

nohup выполняемая_фоновая_команда &

ps

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

Простой запуск ps без параметров выдаст список программ, выполняемых на терминале. Обычно этот список очень мал:

PID TTY TIME CMD

885 tty1 00:00:00 login

893 tty1 00:00:00 bash

955 tty1 00:00:00 ps

Что означает полученная информация?

• Первый столбец – PID (идентификационный номер процесса). Как уже упоминалось, каждый выполняющийся процесс в системе получает уникальный идентификатор, с помощью которого производится управление процессом. Каждому вновь запускаемому на выполнение процессу присваивается следующий свободный PID. Когда процесс завершается, его номер освобождается. Когда достигнут максимальный PID, следующий свободный номер будет взят из наименьшего освобожденного.

• Следующий столбец – TTY – показывает, на каком терминале процесс выполняется. Запуск команды без параметров ps покажет процессы, выполняемые на текущем терминале.

• Столбец TIME показывает, сколько процессорного времени выполняется процесс. Оно не является фактическим временем с момента запуска процесса, поскольку Linux – это многозадачная операционная система. Информация, указанная в столбце time, показывает время, реально потраченное процессором на выполнение процесса.

• Столбец CMD показывает, что же это за программа. Отображается только имя программы, опции командной строки не выводится.

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

ps -ах

PID TTY STAT TIME COMMAND

1 ? S 0:04 init

2 ? SW 0:00 [keventd]

3 ? SW 0:00 [kapm-idled]

4 ? SWN 0:00 [ksoftirqd_CPU0]

5 ? SW 0:00 [kswapd]

6 ? SW 0:00 [kreclaimd]

7 ? SW 0:00 [bdflush]

8 ? SW 0:00 [kupdated]

9 ? SW< 0:00 [mdrecoveryd]

13 ? SW 0:00 [kjournald]

437 ? S 0:00 syslogd -m 0

442 ? S 0:00 klogd -2

462 ? S 0:00 portmap

490 ? S 0:00 rpc.statd

647 ? S 0:00 /usr/sbin/sshd

704 ? S 0:00 lpd Waiting

732 ? S 0:00 sendmail: accepting connections

751 ? S 0:00 gpm -t ps/2 -m /dev/mouse

769 ? S 0:00 crond

835 ? S 0:00 xfs -droppriv -daemon

853 ? S 0:00 anaсron

871 ? S 0:00 /usr/sbin/atd

885 tty1 S 0:00 login – root

886 tty2 S 0:00 /sbin/mingetty tty2

887 tty3 S 0:00 /sbin/mingetty tty3

888 tty4 S 0:00 /sbin/mingetty tty4

889 tty5 S 0:00 /sbin/mingetty tty5

890 tty6 S 0:00 /sbin/mingetty tty6

893 tty1 S 0:00 -bash

1037 tty1 R 0:00 /usr/bin/mc -P

1038 ? S 0:00 cons.saver /dev/ttyl

1039 pts/0 S 0:00 bash -rcfile .bashrc

1067 pts/0 R 0:00 ps -ax

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

Появился новый столбец – stat. В этом столбце отображается состояние (status) процесса. Полный список состояний вы можете прочитать в описании программы ps, а пока – самые важные состояния:

• буква R обозначает запущенный процесс, исполняющийся в данный момент времени;

• буква S обозначает спящий (sleeping) процесс – процесс ожидает какое-то событие, необходимое для его активизации;

• буква Z используется для обозначения «зомбированных» процессов (zombied) – это процессы, родительский процесс которых прекратил свое существование, оставив дочерние процессы рабочими.

Помимо этого позвольте обратить ваше внимание на колонку tty. Как вы, наверное, заметили, многие процессы, расположенные в верхней части таблицы, в этой колонке содержат знак"?" вместо терминала. Так обозначаются процессы, запущенные с более не активного терминала. Как правило, это всякие системные сервисы.

Если вы хотите увидеть еще больше информации о выполняемых процессах, попробуйте выполнить команду:

Как вы видите – информации прибавилось. Появились еще следующие столбцы:

• USER – показывает, от имени какого пользователя был запущен данный процесс;

• %CPU, %МЕМ – показывают, сколько данный процесс занимает соответственно процессорного времени и объем используемой оперативной памяти;

• TIME – время запуска программы.

В табл. 26.2 приведены некоторые параметры командной строки программы ps.

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

top

Еще одна утилита, с помощью которой можно получать информацию о запущенных в операционной системе процессах. Для использования достаточно просто запустить команду top на выполнение. Эта утилита выводит на экран список процессов в системе, отсортированных в порядке убывания значений используемых ресурсов.

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

Далее идет таблица, во многом напоминающая вывод программы ps. Идентификационный номер процесса, имя пользователя – владельца процесса, приоритет процесса, размер процесса, его состояние, используемые процессом оперативная память и ресурс центрального процесса, время выполнения и наконец – имя процесса.

Утилита top после запуска периодически обновляет информацию о состоянии процессов в операционной системе, что позволяет нам динамически получать информацию о загрузке системы.

kill

Программа kill (в переводе с английского – убить) предназначена для посылки соответствующих сигналов указанному нами процессу. Как правило, это бывает тогда, когда некоторые процессы начинают вести себя неадекватно. Наиболее часто программа применяется, чтобы прекратить выполнение процессов.

Для того чтобы прекратить работу процесса, необходимо знать PID процесса либо его имя. Например, чтобы «убить» процесс 123, достаточно выполнить следующую команду:

kill 123

Как обычно, чтобы прекратить работу процесса, вам необходимо быть его владельцем. Само собой, пользователь root может прекратить работу любого процесса в системе. Иногда обычное выполнение программы kill не справляется с поставленной задачей. Обычно это объясняется тем, что данный процесс завис либо выполняет операцию, которую с его точки зрения нельзя прервать немедленно. Для прерывания этого процесса можно воспользоваться следующей командой:

kill -9 123

Что это означает? Вообще-то программа kill предназначена для посылки процессам управляющих сигналов, одним из которых является сигнал sigterm (terminate, завершиться). Этот сигнал посылается процессу при выполнении программы kill по умолчанию. Процесс, получивший данный сигнал, должен корректно завершить свою работу (закрыть используемые файлы, сбросить буферы ввода/вывода и т. п.). Ключ -9 указывает программе kill посылать процессу другой тип сигнала – sigkill. Это приводит к тому, что процесс не производит корректного завершения, а немедленно прекращает свою жизнедеятельность. Помимо этих сигналов, в вашем распоряжении целый набор различных сигналов. Полный список сигналов можно получить, выполнив следующую команду:

1 ... 88 89 90 91 92 93 94 95 96 ... 151
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Linux - Алексей Стахнов.
Комментарии