Брандмауэры и специальное программное обеспечение 8 Часть 4
Вид материала | Реферат |
СодержаниеСценарии rс, часть первая |
- Муниципальное общеобразовательное учреждение средняя общеобразовательная школа №12, 174.77kb.
- Управление экономикой и создание экономических информационных систем Изучив данную, 148.93kb.
- Программное обеспечение ЭВМ, 209.59kb.
- Программное обеспечение вычислительной системы, 824.71kb.
- Учебная программа (Syllabus) Дисциплина: Интерфейсы компьютерных систем (iks 3304), 321.31kb.
- Реферат по Информационной безопасности Тема: «Антивирусы», 711.1kb.
- Пк программный комплекс; по программное обеспечение; ппо прикладное программное обеспечение, 208.41kb.
- Лекция 4 Обеспечивающие подсистемы асу. Математическое, программное, лингвистическое,, 59.3kb.
- Математическое и программное обеспечение систем оперативной оценки характеристик сложных, 247.51kb.
- Учебная программа (Syllabus) Дисциплина «Инструментальные средства разработки программ», 374.12kb.
Сценарии rс, часть первая
В OpenLinux все сценарии инициализации хранятся в каталоге /etc/rc.d. В нем также имеются подкаталоги rc0.d - rc6.d, где номер соответствует уровню выполнения, а также подкаталог init.d. В каталогах rc#.d (# означает номер уровня исполнения) находятся символические ссылки, указывающие на сценарии из подкаталога /etc/rc.d/init.d (листинг 7.2). Всем сценариям из init.d можно передавать аргументы start и stop, а некоторым — еще два аргумента: reload и restart. Хотя реализация аргументов restart/reload несложна, по крайней мере один демон (dhcp) по сигналу SIGHUP неправильно считывает свой конфигурационный файл. Сигнал SIGHUP (от английского слова hangup — повесить телефонную трубку, дать отбой) означает, что демон должен заново прочитать файл конфигурации и продолжить работу с новой конфигурацией.
СОВЕТ
Сигналы, адресуемые работающим в системе процессам, являются средством передачи команд, предписывающих выполнение этими процессами определенных действий. Чаще всего они применяются для посылки фоновым процессам команды завершения работы. Разрешается использовать сигналы, номера которых лежат в диапазоне от 1 до 31. Команде завершения работы соответствует сигнал SIGTERM (15). Другими часто используемыми сигналами являются SIGKILL (9) и SIGHUP (1). Полный список сигналов можно получить при помощи команды man 7 signal. Посылкой сигналов процессам занимается команда kill, принимающая в качестве параметров имя или номер сигнала и идентификатор процесса, например kill -SIGHUP PID или kill -1 PID. При отсутствии параметра-сигнала посылается сигнал SIGTERM.
Листинг 7.2. Частичный список файлов каталога /etc/rc.d/
drwxr-xr-x 2 root root 1024 Aug 30 07:25 init.d
-rwxr-xr-x 1 root root 5336 Aug 16 22:45 re
-rwxr-xr-x 1 root root 8930 Jul 7 08:55 re.boot
-rwxr-xr-x 1 roo t root 478 Aug 27 08:48 re.local
-rwxr-xr-x 1 root root 2809 Jul 14 16:45 re.modules
-rwxr-xr-x 1 root root 5586 Aug 16 22:45 rc.orig
-rwxr-xr-x 1 root root 10903 Mar 12 1999 re.serial
. drwxr-xr-x 2 root root 1024 Aug 11 23:04 rcO.d
drwxr-xr-x 2 root root 1024 Aug 11 23:04 rcl.d
drwxr-xr-x 2 root root 1024 Aug 11 23:04 rc2.d
drwxr-xr-x 2 root root 1024 Aug 11 23:04 rcS.d
drwxr-xr-x 2 root root 1024 Aug 11 23:04 rc4.d
drwxr-xr-x 2 root root 1024 Aug 30 07:25 rcS.d
drwxr-xr-x 2 root root 1024 Aug 30 07:25 rc6.d
-rwxr-xr-x 1 root root 846 Jun 29 11:02 unconfigured.sh
init.d/
-rwxr-xr-x 1 root root 2144 Jul 14 16:56 bigfs
-rwxr-xr-x 1 root root 864 Jan 28 1999 cron
-rwxr-xr-x 1 root root 1364 Apr 13 13:38 dhcpd
-rwxr-xr-x 1 root root 6920 Jul 14 16:55 functions
-rwxr-xr-x 1 root root 833 Jul 14 22:46 gpm
-rwxr-xr-x 1 root root 1296 Aug 16 22:45 halt
-rwxr-xr-x 1 root root 983 May 11 11:24 httpd
-rwxr-xr-x 1 root root 1243 Jul 14 15:52 inet
-rwxr-xr-x 1 root root 978 Jul 7 05:30 keytable
lrwxrwxrwx 1 root root 11 Aug 5 12:35 local -> ../re.local
-rwxr-xr-x 1 root root 804 Jul 14 23:09 logoutd
-rwxr-xr-x 1 root root 931 Nov 4 1998 Ipd
-rwxr-xr-x 1 root root 1720 Jul 14 22:04 mta
-rwxr-xr-x 1 root root 1294 Jul 27 23:16 named
-rwxr-xr-x 1 root root 2260 Jul 14 16:05 netmount
-rwxr-xr-x 1 root root 2072 Jul 14 16:23 network
-rw-r-xr-x 1 root root 791 Jul 27 23:22 news
-r-xr-xr-x 1 root root 1863 Jun 22 07:57 nfs
-rwxr-xr-x 1 root root 1232 Jan 7 1998 nis-client
-rwxr-xr-x 1 root root 831 Jan 8 1998 nis-server
-rwxr-xr-x 1 root root 1489 Apr 3 00:26 ntp
-r-xr-xr-x 1 root root 3157 Aug 27 10:55 pcmcia
-rwxr-xr-x 1 root root 649 May 26 1998 ppp
lrwxrwxrwx 1 root root 4 Aug 5 12:35 reboot -> halt
-rwxr-xr-x 1 root root 238 Oct 2 1997 rmnologin
-rwxr-xr-x 1 root root 780 Oct 2 1997 rstatd
-rwxr-xr-x 1 root root 1130 Jul 14 22:06 rusersd
-rwxr-xr-x 1 root root 1130 Jul 14 22:05 rwalld
-rwxr-xr-x 1 root root 1130 Jul 14 22:06 rwhod
-rwxr-xr-x 1 root root 1211 Jul 15 03:10 samba
-rwxr-xr-x 1 root root 969 Nov 25 1997 single
-rwxr-xr-x 1 root root 1159 Apr 9 1998 skeleton
-rwxr-xr-x 1 root root 607 Apr 29 04:15 skipped
-rwxr-xr-x 1 root root 1714 Jul 14 20:08 squid
-rwxr-xr-x 1 root root 1147 Mar 25 06:28 syslog
-rwxr-xr-x 1 root root 1060 Mar 16 1999 urandom
-r-xr-xr-x 1 root root 6949 Aug 30 07:25 vmware
-rwxr-xr-x 1 root root 259 Jul 21 09:27 webmin
-rwxr-xr-x 1 root root 990 Aug 10 17:48 xdm
-rwxr-xr-x 1 root root 948 Mar 25 07:53 zap
rc2.d:
lrwxrwxrwx 1 root root 14 Aug 5 12:35 KO5news -> ../init.d/news
lrwxrwxrwx 1 root root 15 Aug 5 12:35 K09samba -> ../init.d/samba
lrwxrwxrwx 1 root root 15 Aug 5 23:51 K12squid -> ../init.d/squid
lrwxrwxrwx 1 root root 13 Aug 5 12:35 K25gpm -> ../init.d/gpm
lrwxrwxrwx 1 root root 15 Aug 5 09:01 K25httpd -> . ./init.d/httpd
lrwxrwxrwx 1 root root 17 Aug 5 12:35 K3Ologoutd -> ../init.d/logoutd
lrwxrwxrwx 1 root root 16 Aug 5 12:35 K39rwalld -> .,/init.d/rwalld
lrwxrwxrwx 1 root root 16 Aug 5 12:35 K40rstatd -> ../init.d/rstatd
lrwxrwxrwx 1 root root 15 Aug 5 12:35 K44dhcpd -> ../init.d/dhcpd
lrwxrwxrwx 1 root root 17 Aug 5 12:35 K47rusersd -> ../init.d/rusersd
lrwxrwxrwx 1 root root 15 Aug 5 12:35 K48rwhod -> ../init.d/rwhod
lrwxrwxrwx 1 root root 13 Aug 5 12:35 K5Omta -> ../init.d/mta
lrwxrwxrwx 1 root root 13 Aug 5 12:35 K60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 13 Aug 5 12:35 K70ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root 17 Aug 5 12:35 K73ipxripd -> ../init.d/ipxripd
lrwxrwxrwx 1 root root 20 Aug 5 12:35 K79nis-client -> . ./init.d/nis-client
lrwxrwxrwx 1 root root 20 Aug 5 12:35 K80nis-server -> . ./i nit. d/nis-server
lrwxrwxrwx 1 root root 14 Aug 5 12:35 K85inet -> ../init.d/inet
lrwxrwxrwx I root root 15 Aug 5 21:25 K90named -> . ./init.d/named
lrwxrwxrwx 1 root root 17 Aug 5 12:35 S0lnetwork -> ../Init.d/network
lrwxrwxrwx 1 root root 16 Aug 5 12:35 S0lpcmcia -> . ./imt.d/pcracia
lrwxrwxrwx 1 root root 16 Aug 5 12:35 S05syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 17 Aug 5 12:35 S05urandom -> ../init.d/urandom
lrwxrwxrwx 1 root root 18 Aug 5 12:35 S20netmount -> ../init.d/netmount
lrwxrwxrwx 1 root root 13 Aug 5 09:02 S26ipx -> ../init.d/ipx
lrwxrwxrwx 1 root root 13 Aug 5 12:35 S351pd -> ../init.d/lpd
lrwxrwxrwx 1 root root 14 Aug 5 12:35 S40cron -> .,/init.d/cron
lrwxrwxrwx 1 root root 13 Aug 5 12:35 S41atd -> ../init.d/atd
lrwxrwxrwx 1 root root 18 Aug 5 12:35 S75keytable •> ../init.d/keytable
lrwxrwxrwx 1 root root 15 Aug 5 12:35 S981ocal -> . ./irrit.d/local
lrwxrwxrwx 1 root root 15 Aug 5 12:35 S99bigfs -> ../init.d/bigfs
lrwxrwxrwx 1 root root 19 Aug 5 12:35 S99rmno1ogin -> ../init.d/rmnologin
lrwxrwxrwx 1 root root 17 Aug 5 12:35 S99skipped -> ../init.d/skipped
lrwxrwxrwx 1 root root 13 Aug 5 12:35 S99zap -> ../init.d/zap
Имена всех файлов из каталогов /etc/re.d/rc#.d начинаются либо с буквы S (от английского слова start — запуск), либо с буквы К (от английского слова kill — уничтожение). Соответственно, сценарии первой категории занимаются запуском демонов, а второй категории — их остановом. Вслед за первым символом идет число, определяющее относительный порядок выполнения сценариев, за которым следует собственно информационная часть имени, которая, как правило, совпадает с именем соответствующего сценария из init.d, на который указывает данная ссылка. Рассмотрим, например, файл S35lpd. Это символическая ссылка, указывающая на файл ../init.d/lpd, используемая сценарием rс для вызова сценария lpd из init.d с аргументом start, в результате чего начинает работу демон печати. Запустить этот сценарий можно из командной строки:
/etc/rc.d/init.d/lpd start
Именно в этом и состоит преимущество инициализации в стиле System V: пользователь root получает возможность запускать, останавливать и, в некоторых случаях, перезапускать и перезагружать произвольные демоны простым вызовом сценария из init.d с соответствующим аргументом. Выполнять это действие может только суперпользователь. Инициализация в стиле BSD не поддерживает подобного единого подхода к управлению различными демонами. Если в вашей системе используется стиль инициализации BSD, чтобы запустить или остановить тот или иной демон, вы должны знать, как именно этот демон управляется из командной строки, а это далеко не всегда ограничивается простым запуском исполняемого файла демона.
Если сценарий /etc/re.d/rc запускается без аргумента, он при помощи команды run level узнает текущий и предыдущий уровни выполнения и на основании этой информации определяет, какие сценарии и как ему следует запустить. Для этого он сравнивает содержимое каталогов, соответствующих предыдущему и текущему уровням выполнения, и, основываясь на различиях между ними, останавливает одни демоны и запускает другие. Говоря более подробно, сценарий rс сначала останавливает все те демоны, которые выполняются на момент его вызова и подлежат останову при переходе с предыдущего уровня выполнения на текущий, после чего стартует все те демоны, которые должны выполняться на текущем уровне, но сейчас не выполняются. Таким образом, сначала выполняются сценарии с префиксом К в порядке от младших номеров к старшим, а затем сценарии с префиксом S тоже от младших номеров к старшим. Благодаря этому запуск и остановка демонов осуществляются в нужном порядке. Например, прежде чем запускать sendmail (mta) или web-сервер Apache (httpd), следует запустить сетевую подсистему. И наоборот, прежде чем останавливать сетевую подсистему, сначала нужно остановить все зависящие от нее службы.
Такое поведение является отличительной чертой комплекта OpenLinux компании Caldera. В комплекте Red Hat и в других комплектах каталоги не сравниваются, вместо этого просто выполняются сценарии останова и запуска из каталога, соответствующего новому уровню выполнения.