Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Li Статии » Полезно » Услуги, нива на стартиране, скриптове rc.d
  • Страница 1 от 1 Skip to Page:
  • 1
Тема: Услуги, нива на стартиране, скриптове rc.d, Увод
Мнение #1
Написано на: Януари 15 2006, 17:13
saejoh
 

Avatar




Група: Li maniacs
Мнения: 449
Регистриран: Септември 2005

Оценка: няма

Offline
Източник: Услуги...
От: Mark Alexander Bain
Превод: saejoh


Кое е първото нещо, което правите, веднага след като сте влезли в Linux? Стартирате “ръчно” процес като например Apache или MySQL, или дори стартирате мрежовата си връзка? А трябва ли да спирате приложения, които са се стартирали без вашата намеса и които претоварват машината ви? Ако имате нежелани процеси, стартиращи по време на началното зареждане на системата (boot), или сте принудени да стартирате “ръчно” важни процеси, нека се опитаме да улесним поне малко живота ви, като ви представим света на услугите в Linux.

Linux-услуга (service) е приложение (или съвкупност от приложения), което изпълнява функции на заден план, скрито е в очакване да бъде използвано или осъществява основни задачи. Типични представители на такива приложения бяха споменати вече - (Apache и MySQL). В общия случай вие няма да забелязвате услугите, докато не ви потрябват.

Как можете да разберете, кои услуги се изпълняват в момента, и по-важното – как можете да настроите ваши собствени?
Първо да видим как е настроена системата, и в частност – директорията /etc/rc.d. Тук ще намерите или съвкупност от файлове с имена rc.0, rc.1, rc.2, rc.3, rc.4,, rc.5, и rc.6, или съвкупност от директории с имена  rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, и rc6.d. Ще намерите също файла /etc/inittab. Системата използва тези файлове (и/или директории), за да контролира услугите, които трябва да бъдат стартирани.

Ако погледнете файла /etc/inittab ще видите нещо подобно на това:
Код: 
id:4:initdefault:

l0:0:wait:/etc/rc.d/rc.0
l6:6:wait:/etc/rc.d/rc.6
x1:4:wait:/etc/rc.d/rc.4

Процесът на начално зареждане на системата (boot process) използва тези параметри за определяне на нивото на зареждане (runlevel) по подразбиране и файловете, които ще се използват от това ниво. В нашия пример нивото 4 е основно и скриптовете, които го определят, могат да бъдат намерени в /etc/rc.d/rc.4.

Какво представлява в крайна сметка едно ниво на зареждане? Може да предположите, че се отнася  до различни нива, през които минава системата по време на началното си стартиране (boot up). Вместо това, мислете за нивото като за точка, от която се влиза в системата. Първо ниво е най-основната конфигурация (осигурява достъп на обикновен самостоятелен потребител с помощта на команден [текстов] интерфейс), докато пето ниво е най-пълното (многопотребителски режим с възможност за работа в мрежа и графична среда [GUI]). Нива 0 и 6 се използват за спиране и съответно рестартиране на системата.

Съществуват все пак и различия между Linux дистрибуциите. Например, Fedora използва ниво 5 за влизане в графичната Х-базирана среда, докато Slackware използва 4-то ниво за същата задача. Следователно, трябва да проверите документацията на вашата дистрибуция, преди да предприемете каквито и да било промени. Следната таблица показва списък на конфигурации с общо приложение (generic) и с някои примери от различни дистрибуции, взети от “Linux - The Complete Reference” (R.Peterson, Osbourne/McGraw-Hill).

Run
Level  Generic                  Fedora Core           Slackware            Debian
------------------------------------------------------------------------------------------


0        Halt                       Halt                       Halt                     Halt
------------------------------------------------------------------------------------------


1         Single-user mode   Single-user mode   Single-user mode Single-user mode
------------------------------------------------------------------------------------------


2        Basic multi-user      User definable        User definable       Multi-user
         mode                     (Unused)               - configured the    mode
         (without networking)                           same as runlevel 3
------------------------------------------------------------------------------------------


3        Full (text based)      Multi-user mode     Multi-user mode    Multi-user mode
         multi-user mode                                  - default Slackware
                                                                  runlevel
------------------------------------------------------------------------------------------


4        Not used                Not used                X11 with KDM/     Multi-user mode
                                                                 GDM/XDM
                                                                 (session managers)
------------------------------------------------------------------------------------------


5       Full (GUI based)     Full multi-user        User definable -     Multi-user mode
        multi-user mode     mode (with an         configured the
                                    X-based login         same as runlevel 3
                                    screen) - default
                                    runlevel
------------------------------------------------------------------------------------------


6       Reboot                  Reboot                   Reboot                 Reboot
------------------------------------------------------------------------------------------



Както виждате, съществуват малки (но важни) различия между дистрибуциите. Едно нещо е общо между тях – ако искате да промените нивото по подразбиране, трябва да редактирате файла /etc/inittab. Естествено, трябва да сте супер-потребител (root) или да ползвате команда sudo, за да редактирате този файл.

Защо бихте искали да промените нивото? Обикновено ще ползвате само пълен графичен (GUI) или текстов многопотребителски режим – ниво 4 или 5. Ниво 1 или 2, ако имате някакви системни проблеми и искате най-основен достъп. Ниво 0 и 6 не трябва да се използва никога като ниво по подразбиране (по очевидни причини – не искате системата да се изключва или рестартира веднага щом я пуснете).

Можете, разбира се, да промените режима, докато системата работи. Напишете init, последвано от номера на желаното ниво, примерно:
Код: 
init 6

Това ще доведе до рестартиране на системата.

Процесът на начално зареждане (boot process), или по-точно командата init, решава кое ниво на стартиране да избере (в горния пример то е 4-то ниво), а оттук ще реши и кои файлове със скриптове rc.d трябва да се стартират. В този случай става дума или за файла /etc/rc.d/rc.4 или за някой от намиращите се в директорията /etc/rc.d/rc4.d. Нека видим примерен файл със скрипт rc.d. Това е файлът rc.4 по подразбиране на Slackware 10.2:
Код: 
# Try to use GNOME's gdm session manager:
if [ -x /usr/bin/gdm ]; then
 exec /usr/bin/gdm -nodaemon
fi

# Not there?  OK, try to use KDE's KDM session manager:
if [ -x /opt/kde/bin/kdm ]; then
 exec /opt/kde/bin/kdm -nodaemon
fi

# If all you have is XDM, I guess it will have to do:
if [ -x /usr/X11R6/bin/xdm ]; then
 exec /usr/X11R6/bin/xdm -nodaemon
fi

Както може да се очаква, тъй като 4-то ниво осигурява графичен режим Х11 в Slackware, всички команди са насочени към настройване на графичния интерфейс.

При другите дистрибуции (като Fedora и Debian) ще разберете, че скриптовете за стартиране всъщност представляват символни връзки към файлове в директорията /etc/init.d – централното хранилище за всички стартови скриптове. Така, всичко което трябва да направите, е да напишете ваш стартов скрипт, да го поставите в /etc/init.d, след което да създадете символна връзка към него от съответната подходяща директория на нивото на зареждане (или файл на нивото на зареждане, ако това се използва от вашата система).

Например, ниво 2 е ниво по подразбиране за Debian в неграфичен режим (non-GUI). Ако имате зареден Apache 2 на Debian, ще намерите скрипт init за Apache 2 в /etc/init.d, наречен  apache2. Символна връзка - S91apache2 – сочи към /etc/init.d/apache2 от /etc/rc2.d, това уведомява init да стартира Apache 2 в ниво 2, но само след други услуги с номера, по-малки от S.

Когато системата се спира (shut down), съществува друга символна връзка в директориите /etc/rc0.d и /etc/rc6.d (съответно halt [спиране] и reboot [рестартиране]), която стартира с K-, вместо S-номер, което уведомява init да спре процеса на работа.

Ако всичко това все още ви звучи твърде сложно, вместо него можете да използвате файла /etc/rc.d/rc.local. Този скрипт се зарежда веднъж, преди всички останали скриптове, но и преди появата на командния ред за влизане в системата (logon prompt). По подразбиране изглежда подобно на това:
Код: 
#!/bin/bash
#
# /etc/rc.local - run once at boot time
# Put any local setup commands in here:

Можете да добавяте вашите инструкции тук в края на файла като определите друг скрипт за зареждане:
Код: 
/root/bin/start_bb

Или можете да модифицирате rc.local чрез добавяне на самите команди:
Код: 
modprobe -r uhci
modprobe usb-uhci
eciadsl-start
iptable -F
iptables -A INPUT -i ppp0 -p tcp --syb -j DROP
netdate time.nist.gov

Тук се инициализира USB модем, настройва се широколентова мрежова връзка, правят се основни настройки на сигурността, и накрая местното време се синхронизира с времеви сървър. Можете също да стартирате Apache или MySQL:
Код: 
apachectl start
echo "/usr/bin/mysqld_safe &" | su mysql

Забележете, че някои дистрибуции, като Debian, не използват rc.local за стартови скриптове. Вижте ЧЗВ на Debian (FAQ), ако искате да добавите стартови скриптове в Debian или Debian-базирани дистрибуции.

Финална мисъл – в допъление към стартовите скриптове (за rc.local), опитайте да запомните, че трябва да напишете и добавите затварящи скриптове (close-down scripts) към rc.0 и rc.6. Така ще бъдете сигурни, че вашите услуги са спрени (shut down) правилно и не са оставени в странни състояния, когато системата спира да работи.

Относно спирането (shutting down) – как спирате дадена услуга, така че да не се стартира, когато рестартирате системата (reboot)? Точно обратно на това, което вече разгледахме. Или редактирайте файла на съответното ниво на зареждане (т.е. поставете със знак # коментар пред редовете, вместо да ги триете) или махнете връзката от директорията на нивото за стартиране. Забележете, че може да не е нужно да правите това “ръчно”, тъй като доста дистрибуции съдържат в себе си инструменти (tools) за управление на услуги. Например, Red Hat и Fedora използват chkconfig, докато Debian използва update-rc.d.

Накратко, надявам се, че сте се убедили, колко полезни могат да бъдат скриптовете rc.d, когато става дума за контролиране на услугите във вашето PC. Сега можете да добавяте ваши собствени според нуждите си, както и да виждате съществуващи такива, които може да не ви трябват и които забавят влизането ви в системата или претоварват PC-то.

Сравнение между System V и BSD

В тази статия става въпрос за дистрибуции, базирани на System V (извлечение от System V на AT&T). Това е най-разпространената инициализираща система в linux. Другата е базирана на BSD (Berkeley Software Distribution). Разликата между двете е, че в основни линии BSD няма нива на стартиране. Това означава, че System V дава много по-голяма гъвкавост в ръцете на администратора на системата.
Повечето Linux дистрибуции поставят стартовите скриптове в “rc”-поддиректориите (rc1.d, rc2.d, и т.н.), докато BSD-системите държат системните скриптове в /etc/rc.d. “Init” настройката на Slackware е подобна на тази в BSD-системите, но въпреки това Slackware има нива на зареждане и притежава съвместимост със System V от версия Slackware 7 насам.

Накратко за процеса на начално зареждане на системата (boot process)

Когато пускате компютъра си, първото нещо, което той ще направи, е зареждането на програмата с начални стъпки (bootloader) – или GRUB или LILO в повечето случаи. Тази начална програма след това зарежда ядрото на Linux (kernel) – сърцевината на операционната система. След това се стартира процесът, наречен init. Този процес прочита файла /etc/inittab, за да осъществи използваното ниво на зареждане. Самото ниво е стартовият режим на компютъра.

Когато init вече знае кое ниво на зареждане да ползва, той ще потърси подходящите файлове или директории, както е определено в /etc/inittab. След това init или ще стартира скриптовете, дефинирани в /etc/inittab, или ще стартира скриптовете от директориите, дефинирани в /etc/inittab (в зависимост от настройките на вашата система).

Накрая, init ще ви доведе до режима на влизане в системата (logon mode), който сте избрали.

Вижте също How Linux Runlevels Operate?


Редактирано от saejoh на Април 19 2006, 21:33

Ath XP 1700+, NVidia, Biostar M7NCG, Повече тук и тук
Контакти:  saejoh

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Общо 0 отговор(а) от Януари 15 2006, 17:13 до сега
  • Страница 1 от 1 Skip to Page:
  • 1
 » Начало » Li Форуми » Li Статии » Полезно » Услуги, нива на стартиране, скриптове rc.d

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums