Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Команда ОС Linux ps. Управление процессами при помощи сигналов.

Читайте также:
  1. II. Порядок оказания скорой медицинской помощи
  2. III. Порядок и формы контроля за качеством скорой медицинской помощи
  3. IV. Порядок обжалования действий (бездействий) при оказании скорой медицинской помощи
  4. Адвокатура. Понятие, задачи и виды юридической помощи, оказываемой адвокатами.
  5. Административно-территориальное устройство России и местное самоуправление XVIII в
  6. Административное управление
  7. АДМИНИСТРАТИВНОЕ УПРАВЛЕНИЕ
  8. Административное управление природопользованием.
  9. Алгоритм оказания неотложной помощи при остром коронарном синдроме с подъемом и без подъема сегмента ST.
  10. Алгоритм оказания неотложной помощи при фибрилляции желудочков.

Команда ps.

Предназначена для вывода информации о выполняемых процессах. Данная команда имеет много параметров, о которых вы можете прочитать в руководстве (man ps). Здесь я опишу лишь наиболее часто используемые мной:

Параметр Описание
отобразить все процессы, связанных с терминалом (отображаются процессы всех пользователей)
отобразить все процессы
-t список терминалов отобразить процессы, связанные с терминалами
-u идентификаторы пользователей отобразить процессы, связанные с данными идентификаторыми
-gидентификаторы групп отобразить процессы, связанные с данными идентификаторыми групп
-x отобразить все процессы, не связанные с терминалом

Например, после ввода команды ps -a вы увидите примерно следующее:

PID TTY TIME CMD

1007 tty1 00:00:00 bash

1036 tty2 00:00:00 bash

1424 tty1 00:00:02 mc

1447 pts/0 00:00:02 mpg123

2309 tty2 00:00:00 ps

Для вывода информации о конкретном процессе мы можем воспользоваться командой:

# ps -ax | grep httpd

698? S 0:01 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1261? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1262? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1263? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1264? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1268? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1269? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1270? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1271? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1272? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1273? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

1280? S 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_A

В приведенном выше примере используется перенаправление ввода вывода между программами ps и grep, и как результат получаем информацию обо всех процессах содержащих в строке запуска "httpd". Данную команду (ps -ax | grep httpd) я написал только лишь в демонстрационных целях - гораздо проще использовать параметр -С программы ps вместо перенаправления ввода вывода и параметр -e вместо -ax.

Управление процессами с помощью сигналов

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

Начальные условия: Командная строка после входа в систему.

1. Запустите команду yes, производящую бесконечный вывод символа

у

на экран. Прервите её нажатием Ctrl-C.

user@desktop ~ $ yes

y

y

y

y

...

y

user@desktop ~ $

При этом запущенному процессу был отправлен сигнал SIGTERM — завершения программы.

2. Запустим сбор информации обо всех файлах системы с помощью команды find / > files.txt.

user@desktop ~ $ find / > files.txt

3. Найдем идентификатор запущенного только что процесса с помощью команды ps aux | grep find, запущенной в другом терминале.

user@desktop ~ $ ps aux | grep find

user 8178 9.7 0.1 2844 1020 pts/1 R+ 23:45 0:00 find /

user 8230 0.0 0.1 2708 736 pts/2 R+ 23:45 0:00 grep find

Первая строка содержит необходимый PID.

4. Отправим сигнал завершения этому процессу с помощью команды kill 8178, указав в качестве параметара идентификатор процесса.

user@desktop ~ $ kill 8178

 

Можно убедиться, что на терминале с запущенной командой появились строка «Terminated» и приглашение.

5. Если попытаться завершить системный процесс, например командой kill 1, появится сообщение об ошибке доступа:

user@desktop ~ $ kill 1

bash: kill: (1) - Operation not permitted

Отправление сигналов системным процессам может производить только суперпользователь.

6. Альтернативным способом отправления сигналов процессам — по имени процесса, а не по PID — является команда killall. Выполнив команду killall bash, мы завершим все командные оболочки, а тем самым и сеансы пользователей.

user@desktop ~ $ killall bash

7. До этого мы отправляли только сигнал завершения процесса. Он может перехватываться и игнорироваться программами. Неперехватываемым является сигнал SIGKILL, который может быть отправлен, например, следующей командой: killall -SIGKILL find

user@desktop ~ $ killall -SIGKILL find

 




Дата добавления: 2015-01-30; просмотров: 107 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав