- •Билеты по unix.
- •Системные вызовы в Unix. Errno. Отличие системных вызовов от обычных функций. Обработка ошибок системных вызовов с помощью функций perror и strerror.
- •Завершение процессов. Отличие функции exit от системного вызова _exit. Функция atexit
- •Сигналы. Наследование сигналов. Задание обработчика сигнала.
- •Возвращаемые значения
- •Возвращаемое значение
- •Возвращаемое значение
- •Принцип согласования параметров
- •Запуск демонов через суперсервер inetd. Формат файла inetd.Conf. Файл /etc/services.
- •Параметры
- •Функции преобразования ip-адресов inet_ntoa(), inet_aton()
- •System V ipc. Типы объектов, используемых в System V ipc. Создание уникального ключа
- •Очереди сообщений. Функции msgget, msgsnd, msgrcv.
- •Семафоры. Функции semget и semop
Запуск демонов через суперсервер inetd. Формат файла inetd.Conf. Файл /etc/services.
Демоны — это неинтерактивные процессы, которые запускаются обычным
образом — путем загрузки в память соответствующих им программ
(исполняемых файлов), и выполняются в фоновом режиме. Обычно демо
ны запускаются при инициализации системы (но после инициализации
ядра, подробнее см. главу 3) и обеспечивают работу различных подсистем
UNIX: системы терминального доступа, системы печати, системы сетевого
доступа и сетевых услуг и т. п. Демоны не связаны ни с одним пользова
тельским сеансом работы и не могут непосредственно управляться пользо
вателем. Большую часть времени демоны ожидают пока тот или иной
процесс запросит определенную услугу, например, доступ к файловому
архиву или печать документа. Некоторые демоны работают постоянно, наиболее яркий пример такого
демона — процесс
init, являющийся прародителем всех прикладных
процессов в системе. Другими примерами являются
cron позволяю
щий запускать программы в определенные моменты времени,
inetd обеспечивающий доступ к сервисам системы из сети, и
sendmail обес
печивающий получение и отправку электронной почты.
Обработка SIGHUP в демонах.
● Либо демон перезапускает сам себя, чтобы заново открыть файлы, прочит.
конфигурацию, заново себя инициализирует
● либо просто пересматривает конфигурацию etc/inetd.conf
(28 стр у девочки) — специальный конфигурационный файл, предназначенный для создания прог на ip-сокетах. Для каждого порта в inetd.conf он делает listen. Если получилось подключиться, то выполняется программа, прописанная дальше.
1) Для каждого сервиса отдельная строчка:
Первое слово - имя сервиса
/etc/services - соответствие между именем сервиса и номером порта.
2 -3) Следующие два параметра:
как должен был создан сокет (stream tcp)
4) Параллельный или последовательный сервис (nowait или wait)
5) Имя пользователя, от которого должен запускаться сервер
6) Имя программы, которая должна быть запущена
7) Параметры этой программы syslogd — для ведения протоколов работы других серверов. Сервер на юникс-сокетах. Вся инфа с других серверов подается на /var/run/log (сокет) работает через Unix-сокеты по протоколу udp, предназначен для ведения
протоколов работы других демонов.
Сообщение:
1) Записать в файл
2) Вывести на экран пользователю
3) Прислать на stdin другой программы
4) Послать другому syslog-демону
Чтобы управлять логами, нужно их сосредоточить в одном месте:
/etc/syslog.conf
Каждая строка — действие ( первая колонка — на какое сообщение, вторая — какое действие). В первой колонке через ';' разделены приоритеты. Первая часть facility, вторая warning. Первое — к какой системе сообщение относится.
1) селектор (разделяются “ ; “ )
2) действие, которое определяется 1-м символом
/ - записать в файл
@ - переслать на другую машину
| - запустить программу и передать на stdin сообщ. Алфавитно-цифровой символ
конкретному пользователю
* - всем пользователям
+ 1) селектор состоит из 2 частей, разделяемых точкой
● служба
● уровень
Список служб жестко фиксирован: auth - сообщение, связанное с авторизацией пользователя
authpriv - не показывать всем
console - для вывода на консоль
cron — cron-демон
duemon
ftp
kern - сообщение ядра
lpr - связывает с системой печати
news с конференцией
ntp связывает со службами точного времени
secunty безопасный
syslog самого syslogдемон
user пользователь процесса
local 0
.......
local 7
Уровень определяет важность сообщения.
emerg посмертное сообщение
alert ядро ОС еще может работать, но скоро ОС загнется
crit ОС не может дальше работать, но проблема не в ядре
err ошибка в программе
warning в программе возможно есть ошибка, но она может продолжать работать
notice обращает внимание на особенности поведения программы
info сообщение, которое можно игнорировать
debug отлад. информацию
Когда в селектор указывается уровень: селектор соответствует сообщению данного
уровня или выше
Причем, * произвольная подсистема/уровень
“ = “ перед уровнем сообщение только этого уровня Команда logger — для shell. Может отправлять сообщения в syslog. -p — facility и warning сообщения Команда syslog (Для Си) Первый параметр — приоритет, второй — сообщение. Openlog и closelog позволяют добавлять сообщения в логи. #include <syslog.h>
void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void);
closelog() закрывает описатель, используемый для записи данных в журнал. Использование closelog() необязательно.
openlog() устанавливает связь с программой, ведущей системный журнал. Строка ident добавляется к каждому сообщению и обычно представляет собой название программы. Аргумент option указывает флаг управляющий работой openlog() и соответствующих вызовов syslog(). Аргумент facility устанаваливает значение по умолчанию если не указываются соответствующие параметры при вызовах syslog(). Значения option и facility приводятся ниже. Использование openlog() тоже необязательно, оно при необходимости автоматически будет вызвано функцией syslog(), и в этом случае значение ident будет установлено равным NULL.
syslog() создает сообщение для журнала, которое передается syslogd(8). priority получаеся при логическом сложении facility и level. Остаются аргументы format (как и в printf(3)) и аргументы для format, кроме того, что сочетание %m будет заменено сообщением об ошибке strerror(errno) и будет добавлен завершающий символ новой строки.
