C одержани е



страница5/6
Дата01.12.2017
Размер1.09 Mb.
ТипКонтрольные вопросы
1   2   3   4   5   6
РАЗДЕЛ 5. CRON-ДЕМОН
5.1. Понятие демона в Linux -понимании

Демоном в Unix называют программу, которая работает "на заднем фоне", не требуя управления с терминала и предоставляя пользователю возможность выполнять "на переднем фоне" другую работу. Демон может быть запущен либо другим процессом, например, одним из системных стартовых скриптов без обращения к какому-либо управляющему терминалу, либо пользователем с какого-нибудь терминала.

Демоны, ссылки на которых присутствуют /etc/init.d, призваны работать в Linux как сервисы или службы. Сервисы - это программы, которые запускаются и останавливаются через инициализационные скрипты, расположенные в каталоге /etc/init.d. Многие из этих сервисов запускаются на этапе загрузки системы.

Утилита /sbin/service обеспечивает интерфейс (взаимодействие) пользователя с инициализационными скриптами, которые в свою очередь обеспечивают интерфейс для управления сервисами, предоставляя пользователю опции для запуска, остановки, перезапуска, запроса состояния сервиса и т.п.

Просмотреть текущее состояние всех системных служб можно с помощью следующей опции утилиты service:

/sbin/service -status-all

Результат выполнения утилиты представлен ниже:



acpid (pid 2481) is running...

anacron (pid 2647) is running...

atd (pid 2657) is running...

auditd (pid 2189) is running...
Утилита /usr/bin/system-config-services предоставляет графический интерфейс к системным службам, позволяющий просматривать и модифицировать их текущее состояние, а также задавать их запуск на различных уровнях исполнения. Вид графического интерфейса, предоставляемого утилитой /usr/bin/system-config-services, представлен на рис. 5.1.

Сервисы и демоны отображаются в выводе команды ps:



UID PID PPID C STIME TTY TIME CMD

root 1 0 0 23:36 ? 00:00:00 init [5]

root 2161 1 0 23:37 ? 00:00:00 auditd

root 2177 1 0 23:37 ? 00:00:00 syslogd -m 0

root 2287 1 0 23:37 ? 00:00:00 rpc.idmapd

root 2577 1 0 23:37 ? 00:00:00 crond

root 2631 1 0 23:37 ? 00:00:00 /usr/sbin/atd

Как видно, для каждого из демонов идентификатор родительского процесса (PPID) равен 1. Это показывает, что демоны были запущены процессом init во время загрузки системы.

Рис. 5.1. Графический интерфейс, предоставляемый утилитой

/usr/bin/system-config-services



    1. Понятие cron

5.2.1. Определение cron

Cron - это демон, который используется для запуска задач по расписанию, в зависимости от времени, дня месяца, дня недели и т.д.

Периодически в системе необходимо обновлять разнообразные файлы, например, базы данных антивирусов, базу данных whatis или список всех доступных на чтение файлов системы, locatedb. Кроме того, необходимо собирать статистику по работе системы, анализировать цельность системы (этим занимаются службы OSec, TripWire или AIDE) и производить множество других регулярных действий. Всем этим и занимается демон cron. В Red Hat Linux также включена задача cron, удаляющая все неиспользуемые модули каждые десять минут. Эта задача cron описана в файле /etc/cron.d/kmod.

Чтобы использовать службу cron, необходимо установить RPM-пакет vixie-cron. Для проверки, установлен ли этот пакет, используется команда:



rpm -q vixie-cron

Чтобы запустить службу cron, следует выполнить следующую команду: /sbin/service crond start. Чтобы остановить её - команду: /sbin/service crond stop. Рекомендуется, чтобы эта служба запускалась при загрузке системы.



5.2.2. Конфигурационный файл /etc/crontab

При загрузке системы запускается демон cron и проверяет очередь at и заданий пользователей в файлах crontab.

Конфигурационный файл демона cron называется /etc/crontab и содержит следующие строки:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки - это переменные, настраивающие среду окружения, в котором будут работать задачи cron:

- значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), если переменная не указана, значение берется из файла /etc/passwd для пользователя, являющегося владельцем файла,

- переменная PATH определяет пути, используемые для выполнения команд,

- переменная MAILTO определяет адрес электронной почты пользователя, по которому будет выслан результат выполнения задач cron. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=""), электронные письма отправляться не будут,

- переменная HOME задаёт домашний каталог, используемый при выполнении команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute hour day month dayofweek command ,

где minute - любое целое число от 0 до 59,



hour - любое целое от 0 до 23,

day -любое целое от 1 до 31 (день должен быть корректным, если указан месяц),

month - любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее),

dayofweek - любое целое от 0 до 7, где 0 или 7 означает воскресенье (или короткое название дня недели, например: sun, mon и так далее),

command - команда, которая должна быть выполнена. Командой может быть как простая команда, так и команда запуска написанного пользователем специального сценария.

Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел.

Список значений, разделенных запятыми, обозначает перечень перечислений, например, перечисление 3, 5, 8, 9 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута.

В качестве шага значений также может быть указана звёздочка. Например, значение месяца */2 определяет, что будет пропущен каждый второй месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями и не обрабатываются.

Если ввести в командной строке пользователя root команду вывода файла на экран:



cat /etc/crontab

получим следующую информацию:

#minute (0-59),

#| hour (0-23),

#| | day of the month (1-31),

#| | | month of the year (1-12),

#| | | | day of the week (0-6 with 0=Sunday).

#| | | | | user

#| | | | | | commands

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly
Первые пять полей этого файла определяют время запуска команды: минуту, час, число месяца, месяц и день недели. Символ "*" означает, что соответствующая часть даты не учитывается. Шестое поле - имя пользователя, от лица которого запускается команда, указанная в остальных полях строки. Так, в примере команда:

run-parts /etc/cron.weekly

будет запускаться в 4 часа 22 минуты каждое воскресенье (нулевой день) любого числа любого месяца. Как видно из примера, обычно /etc/crontab невелик: чаще всего он состоит из почасового, подневного, понедельного и помесячного запуска специального сценария (в примере - run-parts). Этот сценарий реализует упрощенную схему ".d", он попросту запускает отсортированные в лексикографическом порядке сценарии из соответствующего каталога (например, из /etc/cron.daily):

ls /etc/cron.daily

Результат: 000anacron logrotate makewhatis osec stmpclean updatedb

Если задачи cron должны выполняться по расписанию, но не ежечасно, их можно добавить в каталог /etc/cron.d. Все файлы в этом каталоге имеют тот же синтаксис, что и /etc/crontab.

Демон cron каждую минуту ищет изменения в файле /etc/crontab и каталогах etc/cron.d/ и /var/spool/cron. Если какие-либо изменения будут найдены, они загружаются в память. Таким образом, демон не нуждается в перезапуске при изменении файла crontab.



5.3. Создание файла crontab для пользователя

Пользователям системы можно разрешить иметь собственные расписания, также обрабатываемые демоном cron. Все созданные пользователями файлы crontab хранятся в каталоге /var/spool/cron и выполняются от имени создавшего их пользователя.

Чтобы создать файл crontab для пользователя, войдите в систему под его именем и введите команду crontab -e, чтобы отредактировать crontab пользователя, с помощью редактора, указанного в значении переменной окружения VISUAL или EDITOR. Этот файл использует тот же формат, что и /etc/crontab, только шестое поле ("user") отсутствует. После сохранения изменений в файле crontab он будет записан в соответствии с именем пользователя под названием /var/spool/cron/username.

Рассмотрим пример создания файла crontab для пользователя user. Задача: запускать каждую минуту файл /home/user/mail, который будет отправлять почту:



#содержимое файла mail (должны быть права запуска, например,755)

#!/bin/bash

mess=''test cron''

echo ''$mess''|mutt –s '''subj'' –m application/octet-stream mst@server.ru

Создаем временный файл /home/user/test, содержимое которого приводится ниже:



SHELL=/bin/bash

MAILTO=user

0-59 * * * * /home/ user/mail

Далее запустить в терминале команду:

crontab /home/user/test

После этого в каталоге /var/spool/cron будет создан файл user с примерным содержанием:



#DO NOT EDIT THIS FILE –edit the master and reinstall/

#(/home/user/test installed on Mon Apr 07 09:20:00 2011)

#(Cron version --$Id:crontab. )

SHELL=/bin/bash

MAILTO=user

0-59 * * * * /home/ user/mail

Файл /home/user/test будет запускаться демоном cron каждую минуту.

Доступ в каталог /var/spool/cron непривилегированному пользователю закрыт, чтобы посмотреть пользователем user, есть ли у него файл crontab, достаточно набрать команду (для RedHat):

crontab -l

Если файл существует, будет показано содержимое.

Для удаления файла используется ключ crontab -r . Для редактирования файла используется команда: crontab –e.

5.4. Журнал событий cron-демона

Посмотреть информацию о всех командах, запускаемых демоном cron, можно в каталоге /var/log в соответствующих файлах cron, сron1 и т.д.

В файле /var/log/cron записано время запуска всех заданий cron за предыдущий день:

Apr 07 09:20:00 rst CROND[4434]: (user) CMD (/home/user/mail)

Apr 07 09:20:37 rst CROND[4479]: (user) CMD (/home/user/mail)

Apr 07 09:21:00 rst CROND[4514]: (user) CMD (/home/user/mail)

Apr 07 09:22:00 rst CROND[4551]: (user) CMD (/home/user/mail)

В остальных файлах cron, сron1 и т.д. находится подобная информация, но более старая, чем в cron.


Контрольные вопросы
1). Поясните термин «демон».

2). Что понимается под термином «crоn»?

3). Чем отличается crоn от crоntab?

4). Поясните формат файла crоntab.

5). Поясните использование файла cron.d.

6). Какая информация содержится в файле crontab?

7). Поясните формат и значение полей пользовательского файла crontab.

8). Какой каталог сначала проверяет демон cron при запуске?

9). Сколько файлов crontab может иметь пользователь?

10). Сколько записей может быть в пользовательском файле crontab?

11). Если не будет указано значение переменной SHELL, из какого файла будет взято значение?

12). Где можно посмотреть журнал событий cron демона?



РАЗДЕЛ 6. АДМИНИСТРИРОВАНИЕ И УСТАНОВКА WEB- CЕРВЕРА
6.1. Директивы, используемые для конфигурирования web-сервера

Apache является наиболее распространенным web-сервером в мире. По данным компании Netcraft (http://www.netcraft.com/Survey/) общее число web-узлов, работающих под его управлением, к концу прошлого века достигало 2 млн., т.е. 55% от общего числа узлов, и это число постоянно растет. Для сравнения - на долю серверов Microsoft приходится 25%, Netscape - 7 %.

Будучи бесплатной и открытой программой, предназначенной для бесплатных Unix-систем (FreeBSD, Linux и др.), Apache по функциональным возможностям и надежности не уступает коммерческим серверам, кроме того, широкие возможности конфигурирования позволяют настроить его для работы практически с любой конкретной системой. Существуют локализации сервера для различных языков, в том числе и для русского.

Каждая строка конфигурационного файла, кроме строк, начинающихся с символа #, описывает какую-либо директиву конфигурации и ее значение. Строки, начинающиеся с символа # - это комментарии.

Описание основных директив конфигурирования web-сервера приведено в табл. 6.1. Более подробную информацию получить в документации по web- серверу Apache.

Таблица 6.1. Описание основных директив конфигурирования



Наименование директивы

Описание

ServerType standalone

Показывает тип запуска программы httpd - может вызываться через inetd (inetd) или как отдельный демон (standalone).

По умолчанию вызывается как отдельный демон



Port 80

Порт, по которому http-сервер будет получать запросы.

По умолчанию 80



HostnameLookups off

Определяет, будут ли записываться в лог-файлы имена (on) или только IP-адреса (off) хостов, просматривающих сайт. По умолчанию off

User ser nobody

Group nobody



Определяет, под каким пользователем должен запускаться httpd. Для доступа к 80 порту httpd должен запускаться под root. Если в директивах User и Group указаны другие пользователи, то httpd все свои действия выполняет с правами этих пользователей, а не root.


httpd все свои действия выполняет с правами этих

ServerAdmin root@localhost

Здесь указывается e-mail администратора, отвечающего за работу сервера

ServerRoot /etc/httpd

Каталог, в котором находятся все конфигурационные файлы, лог-файлы и модули. Все пути, которые используются далее, указаны относительно этого каталога

ErrorLog logs/error_log

Местонахождение log-файлов об ошибках сервера

LogLevel warn

Уровень сообщений в log-файлах. Возможные значения: debug, info, notice, warn, error, crit, alert, emerg

LoadModule имя_модуля modules/имя_файла_модуля.sо

Команда используется для загрузки различных модулей сервера Apache

ClearModuIeList

Очистка списка модулей

AddModule имя_файла_модуля.c

Добавление модулей в список модулей

LogFormat "%h %1 %u %t\"%r\"

%>s %b \"%{Referer}i\" \"%{User- Agent}i\"" combined


LogFormat "%h %1 %u %t\"%r\"

%>s %b" common


LogFormat "%\{Referer}i->%U" referer
LogFormat "% {User- Agent}i" agent
LogFormat "формат" имя

Описание различных форматов записи логов. Имя формата используется в директиве CustomLog

CustomLog logs/access_log common


Задает формат log-файла логов запросов. С помощью CustomLog можно задать файл логов любого формата и имени.

PidFile /var/run/httpd.pid

Имя файла, в котором хранится PID запущенного httpd. Используется для останова сервера и перезапуcка

UseCanonicalName on

Разрешает использование коротких имен в URL. Удобно при использовании в Intranet-серверах. Если включено (on), преобразует, например строку http://www/stat в строку

http://www.user_домен.ru/stat.

Если отключено (off), преобразования не происходит.



Timeout 300

Время в секундах, по истечении которого при отсутствии запросов сервер прерывает связь с клиентом

KeepAlive On

Разрешать (on) или нет (off) множественные запросы через одно TCP- соединение

MaxKeepAIiveRequests 100

Максимальное количество запросов через одно TCP-соединение

KeepAliveTimeout 15

Время ожидания следующего запроса в секундах

MinSpareServers 8 MaxSpareServers 20

Минимальное и максимальное значение загруженных процессов httpd. Если набрать в консоли команду: ps ax | grep httpd, то можно просмотреть все процессы httpd, загруженные на машине. Если используется Apache на локальной машине, то необходимо уменьшить значение MinSpareServers

StartServers 10

Количество изначально запускаемых процессов

MaxClients 150

Ограничивает количество одновременно подключенных клиентов к серверу

MaxRequestsPerChild 100

Максимальное количество запросов, которые обрабатывает процесс до завершения работы

DocumentRoot /home/httpd/html

Путь к файлам сайта. Здесь хранятся те файлы, которые пользователь получает при наборе URL http://mвой_caum.ru. После установки там находится документация по Apache. Эти файлы следует заменить на файлы своего сайта

UserDir public_html

Имя каталога в домашней директории пользователя, где должны находиться файлы его веб-страницы, обращение к ним происходит по адресу http://твой.сайт.rи/~имя пользователя


DirectoryIndex index.html

index.shtml index.cgi



Файлы индекса каталога - файлы, которые выводятся при задании в браузере адреса, являющегося ссылкой на каталог. Например, http://localhost/manual - выведет файл index., html, находящийся в каталоге /home/httpd/html/manual. Если файл индекса отсутствует в каталоге, выводится все содержимое каталога. Можно задать значение Directorylndex default.htm

Fancylndexing on


При включении этой опции список файлов каталога будет выводиться в виде таблицы, в которой над каждой колонкой есть ссылка, при нажатии на которую список сортируется по этой колонке (например, по времени модификации или размеру)

AddlconByEncoding

(CMP,/ieons/compressed.gif) х-compress x-gzip

AddlconByType (TXT,/icons/text.gif) text/*

…….


Addlcon /icons/binary.gif .bin .exe

……..


Defaultlcon /icons/unknown.gif


Эти директивы задают имя файла иконки в зависимости от типа, расширения и имени файла, которое будет выводиться перед именем файла в списке содержимого каталога

ReadmeName README HeaderName HEADER

ReadmeName - имя README-файла, который сервер ищет по умолчанию. HeaderName - имя файла, который включается в листинг каталога в качестве заголовка

Indexlgnore .??* *~ *# HEADER* README* RCS

Файлы, не включаемые в список каталога

AccessFileName .htaccess

Имя файла с правилами доступа, содержимое которого проверяется для каждого каталога

TypesConfig /etc/mime.types

Файл с описаниями типов файлов и принадлежащих к ним расширений

DefaultType text/plain,

Тип файла по умолчанию для тех файлов, тип которых неизвестен

AddEncoding x-compress Z AddEncoding x-gzip gz

Позволяет некоторым браузерам распаковывать "сжатые" и gzip- архивы "на лету", т.е. при копировании файла типа textcounter.tar.gz получается уже распакованный файл textcounter.tar

AddLanguage en .en

AddLanguage fr .fr

AddLanguage de .de

AddLanguage da .da

AddLanguage el .el

AddLanguage it .it



Позволяет определить язык документа. Если на сайте есть английская и русская версии страницы, то можно создать файлы doc.html.ru и doc.html.en в зависимости от языка, прописанного в браузере клиента, ему будет показываться одна из страниц при обращении к doc.html. Расширение не обязательно должно совпадать с аббревиатурой языка

LanguagePriority en fr de


Определяет приоритет языка документа

Alias /icons/ /home/httpd/icons/


Разрешает создавать алиасы (альтернативные имена) для каталогов, т.е. если html-страница лежит в /home/httpd/html, то при обращении к http://mвoй.caum.ru/icons Apache будет искать каталог /home/httpd/html/icons, а после определения такого алиаса Apache будет искать каталог /home/httpd/icons


ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/


To же самое, что и Alias, но для серверных скриптов (CGI)



AddType text/html.shtml AddHandler server-parsed.shtml


Добавляет поддержку SSI для файлов с расширением .shtml


AddHandler imap-file map


Добавляет поддержку

BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4\.0b2;"

nokeepalive downgrade-1.0 force-

response-1.0

BrowserMatch "RealPlayer 4\.0" force-response-1.0

BrowserMatch "Java/1\.0" force-

response-1.0

BrowserMatch "JDK/1\.0" force-

response-1.0


Прописывает различные параметры работы httpd при обращении к нему описанных браузеров


Options None

AllowOverride None



Описывает параметры доступа к корневой директории. Options контролирует то, какие опции доступны. Как видно из третьего примера – запрещено изменять опции доступа посредством содержимого файла htaccess каталога

<Directory /home/httpd/htmI>

Options Indexes Includes FollowSymLinks

AllowOverride None

order allow,deny

allow from all




Устанавливает параметры доступа к каталогу /home/httpd/html/ .

Опции доступа (Options) следующие:




Indexes


если эта опция включена, то при указании URL, ссылающегося на каталог, например,

http://www.ru/nirvana или

http://localhost/manual), при отсутствии в каталоге файла, описанного директивой DirectoryIndex (index.html, index.php3, index.cgi и т.д.); httpd возвращает клиенту листинг этого каталога


Includes


разрешает выполнение SSI директив в файлах, описанных директивой AddHandler server-parsed тип и находящихся в каталоге

/home/httpd/html/



FollowSymLinks


позволяет использовать символические ссылки на файлы или каталоги, не находящиеся в /home/httpd/html/

AllowOverride None


аналогично вышеописанному

Order allow, deny

определяет последовательность применения права запрета и правил разрешения доступа к

каталогу. Здесь сначала проверяются разрешающие правила, затем запрещающие, т.е. если разрешено, например, по IP, и запрещено, например, по имени хоста, то будет запрещен доступ к этому каталогу, т.к. запрещающие правила сработали последними




Allow from all

разрешен доступ отовсюду

AllowOverride None

Options ExecCGI

Alias /doc /usr/doc





прописывает параметры доступа к каталогу /home/httpd/cgi-bin (т.е. где лежат CGI-скрипты). AllowOverride None - см. выше. Options ExecCGI - разрешен запуск CGI и больше ничего




Поделитесь с Вашими друзьями:
1   2   3   4   5   6


База данных защищена авторским правом ©vossta.ru 2019
обратиться к администрации

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