Params fn l /etc
788
0
Х=2
Проанализируем полученную информацию. Как уже отмечалось, функция не порождает нового процесса, поэтому PID остался равным 788 как до вызова функции, так и во время ее выполнения. Переменная X доступна нашей функции, потому что описана до вызова функции. Функция «видит» значение переменной X, установленное в основном блоке сценария. Затем функция изменяет значение переменной X и передает его в основной блок (Х=2). Функции был передан только один параметр — /etc, вместо второго параметра была отображена пустая строка. Имя файла осталось прежним — fn. Обратите внимание на важный момент: функция сообщила нам много полезной информации об устройстве функций в bash, но не оправдала своего названия — cdir (change dir). Реально изменения каталога не произошло, потому что перед выполнением команды cd была выполнена команда return с кодом завершения 0, которая прервала выполнение функции.
19.7.9. Обработка сигналов и протоколирование
Возможно, вы хотите обеспечить выполнение вашего сценария после выхода пользователя из интерпретатора или выполнить какие-нибудь действия при отключении удаленного пользователя от системы. «Перехватить» сигнал (прерывание) можно с помощью команды trap. Формат команды trap следующий:
trap имя сигналы
где: имя — это имя функции или набор команд, которые должны быть выполнены при получении сигнала;
сигналы — наиболее часто используется перехват сигналов, описанных в табл. 19.42. Полный список сигналов вы найдете в гл. 5.
Сигналы Таблица 19.42
Номер | Название | Описание |
---|---|---|
01 | SIGHUP | Освобождение линии (hangup) |
02 | SIGINT | Прерывание (interrupt) |
03 | SIGQUIT | Выход (quit) |
09 | SIGKILL | Уничтожение процесса (kill). He перехватывается и не игнорируется |
15 | SIGTERM | Программный сигнал завершения |
trap : 1 2 3 15
: — это пустой оператор, не выполняющий никаких действий.
Рассмотрим, как можно протоколировать работу собственного сценария. Для этого существуют два способа – с помощью команды tee и команды script.
Способ 1:
$LOGFILE=my_log
if ["$LOGGING" != "true"] then export LOGGING="true"; exec $0 I tee $LOGFILE; fi
Способ 2:
$LOGFILE=my_log
if ["$LOGGING" != "true"]; then export LOGGING="true"; exec script $0 $LOGFILE; fi
В первом случае мы устанавливаем флаг протоколирования LOGGING и заново запускаем наш сценарий. При этом перенаправляем весь стандартный вывод команде tee, которая выполнит протоколирование. Второй способ аналогичен первому за исключением того, что мы не будем самостоятельно запускать сценарий — это за нас выполнит команда script. Оба способа можно использовать для протоколирования работы других программ:
script program ~/program.log
20
Графический интерфейс пользователя.
Система X Window
Система X Window является мощной графической средой для UNIX-станций. Данная система была разработана Массачусетским технологическим институтом (MIT) и стала стандартом для всех UNIX-систем. Практически каждая рабочая станция UNIX работает на одном из вариантов системы X Window.
Группа программистов, возглавляемая Дэвидом Вексельблатом (David Wexelblat) создала свободно распространяемую версию MIT X Window для процессоров i80386–Pentium IV и совместимых с ними. Эта версия получила название XFree86, поскольку могла выполняться в операционных системах, предназначенных для процессоров, использующих систему команд х86 — Linux, FreeBSD и другие. XFree86 является торговой маркой XFree86 Project, Inc.
Данная глава включена в книгу последней, так как графический интерфейс на сервере — это излишество. Зачем тратить драгоценные системные ресурсы на графический интерфейс, если хороший администратор подходит к серверу очень редко, а иногда вообще один раз — во время первоначальной настройки? Однако, если вы начинающий администратор, графический интерфейс поможет вам быстрее настроить тот или иной сервис. Может случиться такое, что вы установите новую версию дистрибутива и окажется, что расположение некоторых системных файлов будет изменено. Чтобы не тратить время на прочтение документации, вы можете использовать один из конфигураторов, например, netconf или linuxconf. Графический конфигуратор уж точно знает, где и что лежит. Но применение графического интерфейса только для конфигураторов не оправдано, потому что упомянутые конфигураторы работают и в консоли.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии