Главная страница

Практика бд. Операционные. Министерство образования и науки российской федерации университет итмо д. А. Зубок, А. В. Маятин


Скачать 324.61 Kb.
НазваниеМинистерство образования и науки российской федерации университет итмо д. А. Зубок, А. В. Маятин
АнкорПрактика бд
Дата11.04.2023
Размер324.61 Kb.
Формат файлаdocx
Имя файлаОперационные.docx
ТипДокументы
#1055283
страница15 из 22
1   ...   11   12   13   14   15   16   17   18   ...   22

минута час день_месяца месяц день_недели команда


Допустимые значения:

минута

от

0

до

59




час

от

0

до

23

день_месяца

от

1

до

31

месяц

от

1

до

12

(или три буквы от jan до

dec, независимо от регистра)

день_недели

от

0

до

6

(0 это воскресенье или три буквы от sun до sat)


Если в соответствующее поле поместить символ * это будет соответствовать любому возможному значению. Для полей можно указывать диапазоны значений, разделенных дефисом, например:
0 11 6-9 1-3 * echo "Hello World!" – вывод "Hello World!" в 11:00

в 6,7,8,9 дни января, февраля и марта.
0 */2 * * mon echo "Hello World!" вывод "Hello World!" каждый четный час каждого понедельника
tail – не только выводит последние n строк из файла, но и позволяет организовать "слежение" за файлом – обнаруживать и выводить новые строки, появляющиеся в конце файла.
sleep задает паузу в выполнении скрипта.


Организация взаимодействия двух процессов



Существует несколько вариантов организации взаимодействия процессов. Поскольку суть взаимодействия состоит в передаче данных и/или управления от одного процесса к другому, рассмотрим два распространенных варианта

организации такого взаимодействия: передачу данных через файл и передачу управления через сигнал.

Взаимодействие процессов через файл



Для демонстрации передачи информации через файл рассмотрим два скрипта – «Генератор» и «Обработчик». Требуется считывать информацию с консоли с помощью процесса «Генератор» и выводить ее на экран с помощью процесса «Обработчик», причем таким образом, чтобы считывание генератором строки «QUIT» приводило к завершению работы обработчика. Каждый скрипт запускается в своей виртуальной консоли. Переключаясь между консолями, можно управлять скриптами и наблюдать результаты их работы.

Генератор

Обработчик

#!/bin/bash while true; do

read LINE

echo $LINE >> data.txt

done

#!/bin/bash

(tail -n 0 -f data.txt) | while true; do

read LINE; case $LINE in

QUIT)

echo

"exit"

killall

tail

exit

;;

*)

echo

$LINE

;;

esac

done

Скрипт «Генератор» в бесконечном цикле считывает строки с консоли и дописывает их в конец файла data.txt.

Скрипт «Обработчик» рассмотрим подробнее.
Команда tail позволяет считывать последние n строк из файла. Но один из наиболее распространенных вариантов ее использования организация

«слежения» за файлом. При использовании конструкции tail -f считывание из файла будет происходить только в случае добавления информации в этот

файл. При этом ключ -n 0 предотвращает чтение из файла, пока его содержимое не обновилось после запуска команды tail. Поскольку необходимо передавать выход команды tail на вход скрипта «Обработчик», используем конструкцию (команды)| Круглые скобки позволяют запустить независимый подпроцесс (дочерний процесс) внутри родительского процесса

«Обработчик», а оператор конвейера в конце позволит направить выход этого подпроцесса на вход родительского процесса. Таким образом, команда read в этом скрипте читает выход команды tail. Остальная часть скрипта основывается на конструкциях, изученных в предыдущих лабораторных работах, и не требует детального рассмотрения. Исключение составляет только команда killall tail. С ее помощью завершается вызванный в подпроцессе процесс tail перед завершением родительского процесса. Использование killall в этом случае используется для упрощения кода, но не всегда является корректным. Лучше определять PID конкретного процесса tail, вызванного в скрипте, и завершать его с помощью команды kill.


Взаимодействие процессов с помощью сигналов



Сигналы являются основной формой передачи управления от одного процесса к другому. Существуют «стандартные» (системные) сигналы, имеющие фиксированные имена и названия (например, SIGTERM, SIGKILL и т.д.), но существует возможность передавать процессу и вновь создаваемый, пользовательский сигнал.
Таблица 1. Часто используемые сигналы




Имя

Описание

Можно перехватывать

Можно блокировать

Комбинация клавиш

1

HUP

Hangup. Отбой. Получение этого сигнала как правило означает, что завершил работу терминал из которого был запущен процесс и следовательно процесс тоже должен быть завершен.

Да

Да




2

INT

Interrupt. В случае выполнения простых команд вызывает прекращение выполнения, в интерактивных программах - прекращение активного процесса

Да

Да

+

или

3

QUIT

Как правило, сильнее сигнала

Interrupt

Да

Да

+<\>

4

ILL

Illegal Instruction. Центральный процессор столкнулся с незнакомой командой (в большинстве случаев это означает, что допущена программная ошибка). Сигнал отправляется программе, в которой возникла проблема

Да

Да




8

FPE

Floating Point Exception. Вычислительная ошибка, например, деление на ноль

Да

Да




9

KILL

Всегда прекращает выполнение процесса

Нет

Нет




11

SEGV

Segmentation Violation. Доступ к недозволенной области памяти

Да

Да




13

PIPE

Была предпринята попытка передачи данных с помощью конвейера или очереди FIFO, однако не существует процесса, способного принять эти данные

Да

Да




15

TERM

Software Termination. Требование закончить процесс (программное завершение)

Да

Да




17

CHLD

Изменение статуса порожденного процесса

Да

Да




18

CONT

Продолжение выполнения приостановленного процесса

Да

Да




19

STOP

Приостановка выполнения процесса

Нет

Нет




20

TSTR

Сигнал останова, генерируемый клавиатурой. Переводит процесс в фоновый режим

Да

Да

+

В случае системных сигналов, как правило, процесс имеет обработчик этого сигнала – код, который выполнится в случае получения процессом этого сигнала. Для использования пользовательских сигналов необходимо написать свой обработчик.

Для обработки сигналов в sh (bash) используется встроенная команда

trap с форматом
1   ...   11   12   13   14   15   16   17   18   ...   22


написать администратору сайта