Рейтинговые книги
Читем онлайн Linux: Полное руководство - Денис Колисниченко

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 59 60 61 62 63 64 65 66 67 ... 158

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

Листинг 9.3. Шаблон для запуска демона

#!/bin/bash

#

# Подключаем библиотеку функций

. /etc/init.d/functions

#

# Определяем параметры

case "$!" in

start)

 # Запуск демона

 echo "Starting my_daemon..."

 daemon my_daemon

 touch /var/lock/subsys/my_daemon

 ;;

stop)

 # Останов демона

 killproc my_daemon

 rm -f /var/lock/subsys/my_daemon

 rm -f /var/run/my_daemon.pid

 ;;

status)

 # Выводим статистику работы

 ;;

restart | reload)

 # действия, выполняемые при перезагрузке демона

 ;;

*)

 # Произошел вызов без параметров

 echo "Usage: my_daemon {start|stop|status|restart|reload}"

 exit 1

esac

exit 0

После того, как в процессе инициализации системы будет выполнен загрузочный сценарий уровня но умолчанию, последним выполняется сценарий /etc/rc.local. Выполнив все сценарии, init переходит к другим записям в /etc/inittab, относящимся к текущему уровню. Обычно там остаются только перезапускаемые (respawn) действия: процессы, которые init запускает в фоне, а когда какой-нибудь из них завершается, запускает вновь. Так ведут себя процессы *getty, обслуживающие виртуальные консоли, и менеджер дисплеев системы X Window. Инициализация системы считается законченной, когда запушены все перезапускаемые процессы и init остается только следить за ними.

9.2. Команды управления процессами

9.2.1. Иерархия процессов: ps и pstree

О том, что команда ps позволяет просмотреть сведения обо всех процессах, протекающих в системе в данный момент, вы уже знаете (п.3.2). С ключом -f эта команда выводит как PID самого процесса, так и PPID его родителя, то есть по ее выводу можно восстановить всю структуру дерева процессов до их общего предка — процесса init. «Древовидный» взгляд может понадобиться, например, если вам нужно уничтожить целую группу процессов, происходящих от общего предка: в этом случае вы можете не убивать их по очереди, а просто послать сигнал TERM их родительскому процессу.

Команда pstree представляет дерево процессов сразу в наглядном виде:

$ pstree

init┬acpid

    ├atd

    ├bonobo-activati

   ...

    ├crond

    ├gconfd-2

    ├gdm-binary──gdm-binary┬X

    │                      └gnome-session

    ├gnome-panel

    ├gnome-settings-

    ├gnome-terminal┬bash─pstrее

    │              ├bash─su─bash─man─sh─sh—i┬less

    │              │                        └─nroff—iconv

    │              ├bash─su─bash

    │              └gnome-pty-helpe

   ...

    ├syslogd

    ├udevd

    └xinetd

Ключ -p выводит вместе с именем процесса его PID, а ключ -u — имя пользователя, запустившего процесс. Если в качестве аргумента указать PID, то команда выведет не все дерево, а только ветку потомков процесса с этим PID. Имя пользователя в качестве аргумента требует вывести все ветки процессов, запущенных этим пользователем: у них общего предка может и не быть.

9.2.2. Информация о ресурсах системы: команды free, df, du

Команда free показывает общее количество занятой и свободной памяти: физической, в разделе подкачки и в буферах ядра. По умолчанию объем памяти выводится в килобайтах, а ключи -b и -m позволяют измерять его в байтах и мегабайтах соответственно.

Ключ -s <число> требует опрашивать систему непрерывно, через каждые <число> секунд, пока вы не прервете выполнение команды, нажав Ctrl+С.

Команды df (disk free) и du (disk usage) показывают, сколько места доступно и занято на жестком диске.

Утилита df выводит сведения о дисковом пространстве на всех смонтированных в данный момент файловых системах — как локальных, так и сетевых:

$ df

Файловая система 1K-блоков    Исп Доступно Исп% смонтирована на

/dev/hda4        22200824 4630864 16442200  22% /

/dev/hda2          101105    8383    87501   9% /boot

/dev/hda6        10221420 1737440  8483980  17% /mnt/win_disk_e

//user5/share     7543680 4623488  2920192  62% /mnt/win_user5

С ключом -i команда df измеряет дисковое пространство не в блоках, а в индексных дескрипторах (п.2.2.1), а с ключом -T показывает тип файловой системы. О других ключах можно узнать, как обычно, на man-странице.

Команда du показывает, сколько места занимает каждый подкаталог каталогов, указанных в качестве аргумента (если аргументы не указаны, то это будет текущий каталог), и подсчитывает общий итог. Если у вас недостаточно прав на просмотр некоторых подкаталогов, то итог будет отличаться от правильного на размер запрещенных каталогов.

9.2.3. Процессы в реальном времени: команда top

Команда top предназначена для наблюдения за процессами в реальном времени и интерактивного управления ими. Терминал, на котором запущена программа top, превращается в окно, разделенное на области (рис. 9.4, сверху вниз):

♦ сведения о системе — продолжительность текущего сеанса, количество задач, использование памяти и процессора, средняя длина очереди задач, ожидающих выполнения (load average) и т.п.;

♦ командная строка;

♦ заголовки столбцов;

♦ область задач. Задачи в терминологии top — это не только пользовательские процессы — потомки init, но и системные процессы — части ядра.

Рис. 9.4. Программа top запущена на виртуальном терминале

Каждые несколько секунд (по умолчанию 3 секунды) окно обновляется.

В командную строку можно вводить команды управления самими задачами или порядком отображения сведений в окне программы top. Вот некоторые из таких команд:

♦ h — вызов справки;

♦ q — завершение работы программы (для выхода можно нажать и комбинацию Ctrl+C);

♦ u — показывать только процессы, запущенные определенным пользователем (следует указывать его регистрационное имя, а не UID);

♦ d — изменить интервал обновления;

♦ f — добавить или удалить столбцы;

♦ F — изменить столбец, по которому сортируются задачи. По умолчанию это %CPU — доля использованного процессорного времени, но можно сортировать, например, по убыванию объема занятой памяти;

♦ i — переключатель отображения: либо все задачи, либо только активные (в состоянии Running);

♦ k — отправить процессу сигнал. Программа спросит у вас PID процесса, а затем номер или название сигнала. По умолчанию посылается сигнал TERM;

♦ r — изменить приоритет процесса.

Количество и порядок отображаемых свойств процесса (столбцов) можно изменять. Всего доступно 26 свойств процесса (нумеруемых буквами английского алфавита), и соответствующие им заголовки столбцов перечислены в секции DESCRIPTIONS of Fields man-страницы команды top. На рис. 9.4 (команда top запущена с настройками по умолчанию) отображены следующие свойства:

♦ PID — PID процесса;

♦ USER — регистрационное имя владельца процесса;

♦ PR — приоритет;

♦ NI — показатель уступчивости (см. п.9.2.4);

♦ VIRT — занятая виртуальная память в килобайтах;

♦ RES — физическая (без подкачки) память, занятая процессом;

♦ SHR — объем разделяемой памяти, используемой процессом;

♦ S — состояние процесса;

♦ %CPU — доля процессорного времени, доставшаяся процессу с момента последнего обновления экрана;

♦ %MEM — доля занятой процессом физической памяти;

♦ TIME+ — процессорное время, израсходованное с момента запуска процесса, в секундах с сотыми долями;

♦ COMMAND — либо имя исполняемого файла программы, либо вся командная строка с аргументами. Режим переключается вводом в командную строку команды «с».

Процесс может находиться в одном из следующих состояний, отображаемых в столбце «S»:

♦ R (Running) — активен, то есть находится в основной памяти и ждет выделения ему процессорного времени либо уже выполняется;

♦ S (Sleeping) — выгружен из основной памяти;

♦ T (Traced) — приостановлен, например, в ходе отладки;

1 ... 59 60 61 62 63 64 65 66 67 ... 158
На этой странице вы можете бесплатно читать книгу Linux: Полное руководство - Денис Колисниченко бесплатно.
Похожие на Linux: Полное руководство - Денис Колисниченко книги

Оставить комментарий