Шрифт:
Интервал:
Закладка:
Если вы хотите сами создать сценарий для запуска своего демона, можете воспользоваться шаблоном, приведенным в листинге 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) — приостановлен, например, в ходе отладки;
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение