выше.
Чтобы установить какие программы заблокированного термина-
ла выполняются, необходимо описать имя порта в команде ps, ис-
пользуя для этого операнд -t. Если используется коммуникацион-
ный порт tty6c, то, как это описывалось выше, команда pc во
время своего выполнения выдает список программ, выполняющихся
на терминале в данном порту. При этом команда pc имеет следую-
щий формат:
ps -t tty6c
Данная команда должна быть введена еще раз с работающего
терминала. Данная команда также выведет на экран терминала для
каждой программы свой идентификатор процесса PID. Пользователь
необходимо записать имя каждой программы и номер PID.
Иногда, определяя какая программа выполняется в текущий
момент времени на терминале, можно сделать некоторые полезные
выводы. Часто, выполняя анализ последней строки списка команды
ps или программы, которая имеет наивысший PID, можно сделать
выводы о причине блокировки терминала. Другие ключи к разгадке
могут быть получены путем использования параметров -f и -d ко-
манды ps (комбинируя параметр -t в виде параметров -fit), кото-
рые выводят список начальных времен (STIME) и состояний (S)
процесса, соответственно (для получения дополнительной информа-
ции по данному вопросу, пользователь должен в " Справочном ру-
ководстве для пользователей" изучить команду ps(C)).
-19-4-
Пользователь может установить, что различные программы,
выполняющие на терминале, могут думать. Например, это может
случиться в том случае, когда пользователь случайно осуществля-
ет запуск программы из меню. В данном случае заблокированный
терминал может быть освобожден за счет использования собствен-
ных команд, которые обеспечивают выход из нежелаемой программы.
Если программа, выполняющаяся в текущий момент времени,
выполняет запланированные действия и терминал не отвечает на
верно введенные команды, относящиеся к данной программе, то
программа должна быть "убита". Только пользователь, который
стартует программу, или супер пользователь (корень), могут
убить программы пользователя. Таким образом пользователь войдет
в работающий терминал при условии, что данные программы уже не
сделали это (или войдет в корень).
В команде kill обычно используются два аргумента, аргумент
signal и идентификатор PID. (Для получения дополнительных све-
дений пользователь должен изучить в "Справочном руководстве для
пользователей" подробное описание команды kill(C). Примером ис-
пользования команды kill, которая "убивает" выполняющуюся прог-
рамму с идентификатором 1234, является следующая команда:
"kill -15 1234"
Данная команда посылает процессу 1234 сигнал 15, который
"вежливо" сообщает программе о том, что требуется завершить ра-
боту. Данная команда оказывает минимальное влияние на систему
(во время своей работы).
Сейчас используйте команду ps -t еще раз для того, чтобы
определить завершила ли свою работу "убитая программа". Если
выполнение программы не остановлено, то пользователю необходимо
еще раз выдать команду kill с операндом 9 вместо операнда 15.
Действием данной команды является "надежное убийство". Данное
действие может привести к тому, что оставшиеся части программ
не будут уничтожены. Примером таких частей программ являются
временные файлы. Пользователю во время завершения своих дейс-
твий необходимо найти данные программы в директориях /tmp и
/usr/tmp, выполнив для этого просмотр данных файлов, владельцем
которых он является, и удалить ненужные файлы. Следует заме-
тить, что файлы, относящиеся к программам, которые не были
"убиты", могут также находится в данных директориях. Если уда-
ление данных программ вызывает у пользователя сомнения, то ре-
комендуется сохранить данные файлы и удалить их позднее.
После того, как каждая из выполняющихся программ будет
"убита", может быть выполнено тестирование терминала. Терминал
-19-5-
может работать без ответа. Многие программы переводят терминал
в специальные режимы во время их выполнения и некоторые из дан-
ных режимов работы могут заблокировать терминал. Прикладные
программы могут использовать режим, который называется "необра-
ботанным" режимом, в котором символы, вводимые в терминал не
отображаются на экране. Во время нажатия ключей или
ENTER в "необработанном" режиме возникает проблема, которая
заключается в том, что обработка нажатия данных ключей осущест-
вляется не так, как это ожидается.
Оболочка ожидает ввода символов j (подачи строки или
новой строки) в конце каждой команды, однако большинство терми-
налов посылают символы m во время нажатия ключа .
Обычно символы m транслируются в символы m, однако ес-
ли прикладная программа отключает данную трансляцию и затем за-
вершает работу или будет "убита" без обратного включения транс-
ляции, то пользователь должен ввести требуемые символы j с
целью завершения выполнения своих команд.
На заблокированном терминале введите символы j, для
начала новой строки и затем ввести следующую команду:
stty sane j
Обязательно используйте ввод символов j вместо нажа-
тия на ключ или ключ ENTER в конце команды. Пользова-
телю может потребоваться ввести данную команду дважды перед
тем, как терминал выдаст ответы.
Последовательность действий "убить и оттестировать", при-
веденная выше, может быть необходима во время работы каждой
программы, которая формирует выход команды ps. Многие системные
администраторы просто убивают все программы с целью сокращения
времени. Выбор данных действий зависит от пользователя.
Если команда ps -t показывает только программу с именем
getty , то это означает, что пользователь "убил" все возможные
программы и на терминале появится подсказка о регистрации. Если
данная подсказка на экран терминала не будет выведена, то необ-
ходимо вернуться к началу проверки и снова проверить аппаратур-
ные средства.
---------------------------------------------------------------------------
Замечание
Некоторые программы не могут быть "убиты". Это встречается
не часто и, чтобы "убить" данные программы существует только
одно решение: должна быть выполнена свертка работы и выполнен
повторный пуск компьютера.
---------------------------------------------------------------------------
-19-6-
Выявление блокировки клавиатуры консоли
Во время работы очень небольшого количества систем, возни-
кает ситуация известная, как "блокировка клавиатуры". Если воз-
никла данная ситуация, то система не отвечает на ввод с клавиа-
туры консоли. Данная проблема была всесторонне исследована и
как показали исследования данная ситуация встречается весьма
весьма редко. Данная ситуация оказывает влияние только на рабо-
ту с клавиатурой, которая присоединена к видео адаптеру дисп-
лея, и к нестандартным терминалам, подключенным к последова-
тельным каналам.
Клавиатура на компьютере пользователя может быть заблоки-
рована в следующих случаях:
. Клавиатура системной консоли не может быть использована
для ввода данных или используется во время выполнения каких-ли-
бо задач.
. Пользователь не может переключить мультиэкраны и ключ
не переключает индикатор блокировки заглавных букв
в положение индикатор включен или индикатор выключен.
. Другие терминалы, входящие в систему, продолжают работу.
. Принтеры или другие устройства продолжают работу.
. Система все еще продолжает работу.
Блокировка клавиатуры аналогична другим ошибкам, и поэтому
перед тем, как выполнить попытку выявления ситуации блокировки
клавиатуры, пользователь должен убедиться в том, что:
. Случайно не были введены символы s.
. Ключ замка клавиатуры не находится в закрытом положении.
. Разъем клавиатуры еще вставлен.
. Сама система еще выполняет работу.
Во-первых, убедитесь в том, что случайно не были нажаты
ключи s. Нажмите на ключ q несколько раз и сделайте
проверку отображенных символов, введенных пользователем с кла-
виатуры. Нажмите на ключ возврата несколько раз, или введите
.
Далее, проверьте ключ замка клавиатуры, если данный ключ
предусмотрен на компьютере. Данный ключ должен переключаться в
положение "открыто". Кроме этого, убедитесь, что клавиатура все
еще подключена к нужной панели.
Убедитесь в том, что система все еще продолжает работу.
Сделайте проверку терминала с целью выявление того, выполняет
ли терминал работу, и возможно ли выполнение системных задач
таких, как задача регистрация или задача проверки даты. Если в
распоряжении пользователя отсутствует терминал, то контролируй-
-19-7-
те состояние индикатора доступа к накопителю на жестком магнит-
ном диске, если данный индикатор предусмотрен на компьютере.
Если данные индикаторы вспыхивают периодически, по крайней мере
через каждые 30 секунд или около этого, то система все еще про-
должает свою работу и использует накопитель на жестком магнит-
ном диске. Следует помнить о том, что нельзя использовать дру-
гие терминалы и о том что индикатор доступа к накопителю на
жестком магнитном диске может не вспыхивать тогда, когда выпол-
няется работа в режиме единственного пользователя.
Если была выполнена проверка всех предполагаемых ошибочных
ситуаций, при этом пользователь все еще не может работать со
своей клавиатурой консоли, то необходимо отсоединить разъем
клавиатуры консоли и после этого снова соединить данный разъем.
Если данные действия выявляют причину возникновения ошибки, то
данная ошибка определенно является причиной блокировки клавиа-
туры. Если выполнение последнего шага не приводит к выявлению
ошибки, то во время работы компьютера произошла блокировка кла-
виатуры.
Пользователь может предотвратить блокировку клавиатуры пу-
тем использования специальной "заплаты", которая изменяет ядро
операционной системы. (Ядро является основной программой опера-
ционной системы, которая всегда находится в памяти). Следует
заметить, что данная "заплатка" отключает некоторые индикаторы
клавиатуры (LED), и поэтому пользователю рекомендуется выпол-
нить данные действия, только в том случае, если все приведенные
ниже действия были испробованы:
1. Если системная консоль находится в нерабочем состоянии,
то необходимо перевести системную консоль в состояние работы.
Повторно загрузить операционную систему, если пользователю не-
обходимо перейти в режим единственного пользователя.
2. Если операционная система не перегружается, то требует-
ся войти с системой консоли в корень и сделать свертку операци-
онной системы, переведя ее в режим единственного пользователя
при помощи команды shutdown. Команда имеет следующий вид:
/etc/shutdown su
Дополнительная информация по использованию данной команды
находятся в разделе "Команда shutdown(ADM)".
-19-8-
3. После того, как система переведена в режим единственного
пользователя, восстановите ядро операционной системы используя
следующие команды:
cd /
mv unix unix.00
cp unix.00 unix
4. Далее введите следующие команды:
/etc/_fst -w /unix
ledspresent/w 0
$q
Данные команды фиксируют необходимые заплатки в ядре. Еще
раз следует заметить о том, что данные действия приводят к пос-
тоянному отключению индикаторов клавиатуры консоли (LED).
5. Сделайте свертку системы, используя для этого следующую
команду:
#/etc/shutdown 0
6. Если на экране появится сообщение "Нормальная системная