- •Лабораторная работа №4
- •Shell-программирование: сигналы и прерывания.
- •Хранение файлов во внешней памяти.
- •Общие cведения о системе
- •Команда kill
- •Команда trap
- •Виды действий с сигналами прерываний :
- •Размещение команды trap в программе
- •Сигналы и прерывания: заключения
- •Выполнение команд в фоновом режиме.
- •Команда tar
- •Команда cpio
- •Использование команды find при резервном копировании
- •Задания.
Лабораторная работа №4
Shell-программирование: сигналы и прерывания.
Хранение файлов во внешней памяти.
Общие cведения о системе
Команды, изучаемые в данной лабораторной работе:
1. kill передача сигнала процессу
2. trap защита от прерывания
3. tar создание архива
4. cpioработа с архивами
Сигнал- некоторая переменная, передаваемая процессу, когда наступает определенное
событие. Иначе, логическая переменная, посылаемая shell-программе по наступлении определенного события.
Сигнал Событие
EXITВыход изshell’а
HUPЗависание - посылается фоновому процессу при выходе из системы
INT<Ctrl>+<c> - прерывание
QUIT<Ctrl>+<\> - прекращение работы (генерирует файл ядра)
KILLУничтожение процесса
TERMПрекращение работы программы
Команда kill
Назначение: Командаkillпередает сигнал, заданный в явном виде, процессу.
Синтаксис:
kill[-sсигнал]идентификатор_процесса(PID)
kill-sсигналидент_процесса Передача сигнала процессу с номеромидент_процесс
killидент_процесса Передача сигналаTERMпроцессу с номеромидент_процесса
kill-sKILLидент_процесса Передача сигнала безусловного уничтожения процессу с номеромидент_процесса
trap ‘команды’ сигнал Перехват сигнала и запуск команды
stty -aПросмотр сигналов
Прерывание - способ захватывания сигналов, которые могут быть посланы процессам, и
выполнения в соответствии с видам сигнала некоторого действия.
Программы обработки прерываний (обработчики прерываний)- действия в ответ на
прерывания.
Команда trap
Назначение:Бывает необходимо защитить выполнение программы от прерывания.
Для защиты от прерываний существует команда trap, которая может быть использована вshell-программах с целью перехвата сигнала до того, как он удалит (уничтожит) процесс и выполнения некоторого дополнительного или альтернативного действия. Командуtrapследует применить для указания в явном виде сигналов и связанных с ними соответствующих действий, которые должны быть выполнены. Команды могут представлять собой список команд системыOCLinux, отделяемых;.Можно также создатьshell-программу, которая выполнит требуемые действия и указать имя этой программы в качестве аргумента. Обычно командыtrapпомещаются в началеshell-программы. Сигналы о прерывании определютсяshell’ом , когда он читает командуtrap. Прерывания активизируются по получении соответствующего сигнала.
Синтаксис :
trap‘команды’ сигнал[сигнал... ] выполняютсякомандыпо получениисигнала
Пример:
$cat > mytrap
trap‘echo bye; exit’ INT QUIT TERM
while true
do
echo hello
done
$mytrap
hello
hello
hello
bye -------------------------------------- нажать <Ctrl>+<c>
$
Виды действий с сигналами прерываний :
Перехват сигнала.Вместо прекращения выполнения процесса будут выполнены указанные специальные команды.
Игнорирование сигнала. Используется еслиshell-программа работает с важными файлами и важно сохранить их содержимое, несмотря на прерывание.
Синтаксис :
trap‘ ’ сигнал[сигнал... ]
Пример:
$ cat > mytrap2
trap‘ ’ INT
while true
do
echo hello
done
$ mytrap2
hello
hello-------------------------------------- нажать <Ctrl>+<c> (проигнорирован)
hello
hello -------------------------------------- нажать <Ctrl>+<\> (проигнорирован)
$
Сигнал KILL не может быть проигнорирован!
Сбрасывание сигналов прерывания.После захвата или игнорирования командаtrapумолчанию.Обычно такое действие связано с завершением процесса. Это не вызовет сброса прерываний по отношению к действиям, которые были заданы раньше, чем задано игнорирование прерываеий.
Сигнал NULLпосылается процессом при нормальном завершении. Он используется для
того, чтобы задать действие, которое должна выполнить shell-программа после нормального завершения процесса.
