1. Въведение Какво означава Linux ?



страница6/6
Дата22.01.2017
Размер0.51 Mb.
#13253
1   2   3   4   5   6

4. Компютърът под контрол


4.1 Синхронизация на софтуера - версии, зависимости, библиотеки

Всяка Linux система можем да разглеждаме като множество от инсталирани пакети. Особено място заемат библиотеките - това са пакети които са предназначени за ползване от други пакети, зареждат се динамично и обикновено изпълняват услуги, изисквани от някакъв конкретен стандарт. Всеки нормален пакет при работата си използва една или няколко библиотеки, а често и услуги от други нормални пакети. Всяка дистрибуция на Linux се стреми да поддържа коректни зависимости между пакетите в следните направления:



  • пълнота - всеки пакет се инсталира само ако библиотеките и останалите пакети от които зависи, са вече достъпни (инсталирани).

  • непротиворечивост - ако два или повече пакета предизвикват конфликт при съвместна работа, дистрибуцията не допуска едновременната им инсталация.

  • минималност - ако даден пакет не е необходим за директно ползване от собственика на компютъра и от него не зависят други пакети, той не се инсталира.

Обикновено конкретната дистрибуция поддържа специален файлов формат на пакетите си (*.rpm, *.deb), съдържащ цялата информация необходима за автоматизирано инсталиране/деинсталиране на пакета, така че да не се наруши синхронизацията на цялата система.

Случва се обаче дистрибуцията или пакета да има грешка, или пък да искате да инсталирате пакет, който все още не е адаптиран към дистрибуцията. В този случай се налага да инсталирате ръчно пакета. Следвайте такава последователност:



  • Снабдете се със сорсовете (изходните текстове на пакета) и документация за него !

  • Разберете от документацията от кои други пакети зависи !

  • Проверете кои от тях са инсталирани ! Инсталирайте останалите !

  • Чак сега компилирайте и инсталирайте мечтания пакет !

При проследяване на зависимостите често номера на версията има голямо значение. За всеки Linux пакет това е символен низ от вида xx.yy.zz, където:

  • xx е основният номер на версията. 0 означава, че това е сравнително нов пакет, който все още не се ползва за отговорни задачи. 1 имат пакетите, достигнали стабилно състояние, а всеки следващ номер се дава при сериозна промяна във функционалността и стандартите.

  • yy е номер на поредната реализация. За много пакети (традиция, идваща от ядрото) четна реализация означава стабилна версия, предназначена за ползване при сериозна работа, а нечетната е за разработване - за изпробване на нови услуги, за откриване и отстраняване на грешки и пр.

  • zz е номер на кръпка (patch). Всеки пакет се изгражда чрез последователно извършване на сравнително малки промени. Тези промени се наричат кръпки. Ако разполагате с изходните текстове, можете да генерирате следващи версии само като изтеглите от Мрежата кръпките (обикновено те са на порядъци по-малки по обем) и ги залепите към старата си версия чрез командата patch.

4.2 Следене на състоянието

Колкото и автоматизиран да Ви изглежда вашият Linux, не е зле да го наглеждате от време на време и да сте наясно с методите за следене на текущото състояние. Те са толкова много и разнообразни, че за сравнително пълно изложение ще е необходим отделен учебник. Тук излагаме само най-често използваните и сравнително стари техники за контрол над компютъра, които могат да се използват от обикновена текстова конзола:



dmesg изписва съобщенията на ядрото при началното зареждане, както и някои последващи съобщения. Тази команда ще ви даде информация за услугите, които ядрото Ви поддържа, дали са открити вашите хардуерни устройства и дали при стартирането на ядрото всичко е наред.

syslogd е демон, който записва бележки, които различни програми му изпращат за да е достъпна историята на работата им. Файлът /etc/syslog.conf описва кои типове услуги къде ще насочват съобщенията си. Обикновено резултатите от работата на syslogd се записват в различни файлове от директорията /var/log и нейните поддиректории.

who дава информация за включените потребители.

ps изписва работещите в момента процеси.

netstat дава различни справки за състоянието на мрежовите услуги - TCP връзки, таблици за рутиране, състояние на мрейовите интерфейси и пр.

last дава списък на последните свързали се към системата потребители.

df дава статистика за използваната и свободна дискова памет по всички монтирани дискови дялове.

/proc е специална файлова система, отразяваща състоянието на ядрото. В различните поддиректории ще намерите информация за компонентите на вашата система, както и за състоянието на различните процеси. Няколко команди ползват тази информация и дават по-нагледна представа за компонентите:

  • free за състоянието на RAM и swap паметта.

  • top следи състоянието на процесите и системата изобщо.

ipchains е програма за управление и следене на мрежовите връзки. Взаимодействайки със специална част от ядрото, тя задава правила за работа с мрежовите пакети. Правилата позволяват спиране, пренасочване, преброяване, маскиране на пакетите. Най-често ipchains се ползва за следене и отчитане на трафика в мрежата, за забрана на нежелани мрежови услуги и за маскиране на intranet мрежа.

4.3 Добавяне и изключване на услуги

Linux е система, която работи толкова стабилно, че не се налага да бъде рестартирана при добро поддържане. Това, както и разпределеното и малко координирано създаване на програми изисква сравнително детайлно познаване на механизмите за настройка на услугите, които ползвате на конкретния компютър. Допълнителна трудност е липсата на стандарт за стартиране на системата - всяка основна дистрибуция поддържа собствен метод за стартиране.

Временното (само за конкретната работна сесия) стартиране и спиране на програми е лесно - пускането става като напишем името на програмата, последвано от евентуални параметри. Можем накрая да сложим и символа '&', за да пуснем програмата във фонов режим. Спирането става с команда kill.

Значително по-труден за управление е процеса на стартиране на програми по време на началното зареждане на системата.

Общото между различните дистрибуции е началото на стартирането на Linux. То протича така:


  • след зареждането и стартирането си ядрото стартира процеса init - единственият процес без родител.

  • init прочита конфигурационния си файл /etc/inittab и започва да стартира системата съобразно информацията в този файл. Редовете в /etc/inittab имат вида 'етикет:ниво:действие:процес'.

  • Първи се пуска процеса, указан в реда с действие 'sysinit'. Ето този ред за основните дистрибуции:

    • SlackWare: si:S:sysinit:/etc/rc.d/rc.S

    • RedHat:

    • Debian: si::sysinit:/etc/init.d/rcS

    • Caldera:

По нататък съответните скриптове съвместно с init започват да извършват дейностите по зареждане на системата, смяна на нивото и стартирането на услуги. По принцип за всяка дистрибуция скриптовете за стартиране и спиране на услуги са разположени на едно място, но в по-автоматизираните (RedHat, Debian) пускането на тези скриптове се извършва от символни линкове към тях, разположени в директории, съответстващи на нивото.

Тъй като материята е сложна, ще дам само един пример от дистрибуцията Debian. При тази дистрибуция скриптовете се намират в /etc/init.d и нека приемем, че скрипта за стартиране на SQL сървера ни е /etc/init.d/postgres. Тъй като този скрипт се пуска автоматично, той трябва да реагира на стандартен параметър, приемащ стойности:



Същинското пускане на скрипта обаче ще се извърши чрез символни връзки. В нашия конкретен случай искаме сървера да стартира на ниво 2, към края на стартирането на системата. За тази цел създаваме символна връзка (линк) в директория /etc/rc2.d така:

S95postgres -> ../init.d/postgres

Директорията /etc/rc2.d съдържа линкове към всички услуги, които ще бъдат пуснати или спрени при включване на ниво 2.

Буквата S в началото на името на връзката означава 'стартирай' (буква K означава 'спри').

Числото 95 в името на връзката влияе на реда на стартиране на услугите (00 се пускат първи, 99 - последни).

Тази наглед сложна схема за стартиране/спиране на услуги позволява унифициране на процеса на пускане/спиране на системата, както и методите за инсталация на пакети. Например ако искаме SQL сървера да не се стартира при рестарт на компютъра, просто изтриваме или преименуваме съответната символна връзка.

Единствено в дистрибуцията SlackWare процеса на стартиране се описва директно. Всички скриптове се намират в /etc/rc.d, а стартирането на многопотребителското ниво се извършва от скрипта /etc/rc.d/rc.M, където пряко се викат всички услуги.

4.4 Индекс на важни системни команди

kill [-сигнал] номер_на_процес

Изпраща сигнал към указания процес, обикновено с цел да го спре. При липса на 'сигнал' се изпраща TERM. По твърдата форма е 'kill -9 pid'.



nice [-n приоритет] [команда [аргумент...]]

Стартира 'команда' с нов приоритет. Добавя 'приоритет' към приоритета на родителския процес. Стандартно процесите са с приоритет 0, -20 е най-висок, 19 е най-нисък, а nice добавя 10 при липса на аргумент 'приоритет'. Само 'nice' връща приоритета на текущия процес.



pidof процес

Връща номера на указания процес. Можете да спрете процеса my_proc като напишете "kill -9 `pidof my_proc`".



fuser файл или мрежова връзка

Връща номера на процес, който използва указания файл или мрежова връзка (socket).



ps параметри

Връща списък на активните процеси.


5. Графична потребителска среда X Window


5.1 X-сървер и X-клиент

XWindow е графична среда за работа на потребителя в UNIX - съвместимите операционни системи. В Linux най-често се използва реализацията XFree86.

XWindow има клиент-сървер структура на най-ниското си ниво.

Сърверът (наричан още X-сървер) е хардуерно зависим. Той управлява входно изходните устройства, участващи в работата. Тези устройства са графичен дисплей (като хардуер се състои от графичен контролер и монитор), клавиатура и мишка. Можем да разглеждаме X-сървера като драйвер за този комплекс от устройства. Ядрото на Linux има възможност да стартира X-сървера в режим на обикновен потребител (от съображения за сигурност на системата). Стандарта позволява да стартираме няколко копия на X-сървера за един набор графични устройства, както и различни копия за различни устройства свързани към компютъра ни.

X-клиент е програма, която изгражда мрежова връзка към X-сървера (локална или отдалечена) и върши конкретната графична работа - приема команди от потребителя през мишката и клавиатурата, рисува по графичния екран и пр. X-клиентът не зависи от хардуера. Със един X-сървер обикновено се свързват много X-клиенти.

Обикновено X-клиентите са организирани във йерархия:

Най-отдолу седи WindowManager - програма за рисуване и управление на прозорчетата по екрана, за поддържане на няколко виртуални екрана, както и за управление на събитията (постъпващите клавиши и пипания на мишката) и разпределянето им между X-клиентите, които ползват конкретни прозорци.

По средата в тази йерархия се разполага DesktopEnvironment - използвайки управителя на прозорците, той създава цялостна среда за удобна работа на потребителя - икони, менюта, средства за обмен на данни, настройка, помощ и др. В по-старите реализции на X-среди този слой е много беден, в по-новите е развит и включва все повече интегрирани услуги и приложения.

Най-близо до потребителя са конкретните приложения - X-клиенти, извършващи специфична работа. Най-често се използват X-терминали (графични аналози на текстовите конзоли), текстови редактори и офис - програми, редактори на графика, графични Internet клиенти за email, WEB, ICQ, IRC, ftp и подобни услуги, програми за слушане на музика и гледане на филми.

5.2 Модни графични интерфейси

В момента (началото на 2001г.) са актуални две големи графични потребителски среди - KDE (K Desktop Environment) и GNOME.


6. Рай за програмисти


Linux (и другите операционни системи със свободен код) са създадени от програмистите най-напред за собствено ползване, поради което изобилстват със средства за разработка - компилатори, текстови редактори, помощни програми (utility) и специални средства за осигуряване на съвместна разработка по Мрежата.

6.1 Езици за програмиране

Подобно на всяка друга UNIX-подобна ОС, единственият жизнено важен език за Linux е C. На C са написани ядрото и всички базови програми на системата, както и основните мрежови клиенти и сървери. Самите средства за разработка на C-програми - компилатор, свързващ редактор, дебъгер и пр. също са написани на C. На практика повечето базови части на Linux, с изключение на ядрото, са разработват от GNU Software Foundation от средата на 80-те години насам. Затова вместо името Linux, често се употребява по-дългото GNU/Linux.

Ако степенуваме останалите използвани в Linux езици по важността на създадените с тях програми, би се получила следната класация:

shell

perl

C++

Lisp

Pascal

6.2 Хакерската култура

За да ползвате или създавате успешно софтуер за Linux, трябва да сте наясно с правилата и нормите за поведение в областта на Свободния софтуер.

Тези правила и норми формират хакерската култура. Индивидите в тази култура са сравнително равноправни, основната морална норма е сътрудничеството, основното средство за комуникация - Мрежата.

Основната структурна единица в хакерската култура е софтуерният пакет. Той представлява програма или група програми, придружени от документация, примери, лицензна и друга информация. Пакета обикновено решава конкретна задача и има характерен жизнен цикъл:



  • Жизненият цикъл на един пакет започва, когато някой мъдър програмист създаде нова програма и я предостави за ползване в Мрежата.

  • В началната фаза пакета се поддържа от създателя си и се ползва от сравнително малка група потребители, които си комуникират със собственика на пакета най-често по email, за да съобщят за грешки или да предлагат нови идеи. Огромното мнозинство от софтуерни пакети никога не напущат тази детска фаза на развитие.

  • Ако пакета е успешен, в разработката му се включват нови програмисти. Създава се mail-list за обмен на информация. Някой поема ролята на администратор и се грижи за актуалността на архивите и maillist-а. Обикновено през тази фаза се появява по-сериозна документация, WEB-място, news група и пр. места за обмен на информация.

  • Най-успешните пакети придобиват сложна инфраструктура. Администрирането им става разпределено - такъв пакет има няколко копия в мрежата (mirror), за да се улесни изтеглянето му от голям брой потребители. Софтуерния архив се поддържа от CVS (Concurrent Versions System) - система за синхронизация на изходните текстове, броят на mail-list-овете също нараства, като те се специализират - за разработчици, за начинаещи потребители, за новини и пр. Появяват се автоматизирани срества за следене на грешките в пакета. Обикновено на тази фаза пакета е достъпен за няколко операционни системи, поддържа сложни инсталационни процедури и се предлага в различни формати за разпространение.

Болшинството хакери правят свободен софтуер за удоволоствие в свободното си време. Когато мерака им секне, създадените от тях пакетите остават без поддръжка. Ако ползвате такъв пакет, трябва да разчитате само на себе си и останалите потребители на пакета и при нужда да организирате по-нататъшното му развитие.

Успехът на един пакет се определя от много фактори. Еднакво важни са майсторството на екипа от програмисти, ценността на началната идея на създателя на пакета, успешната администрация по време на растежа му и най-вече добрата документация и активното участие на потребителите в изграждането му.



Дори да не сте програмист, включвайте се в работата по пакетите, които ползвате най-често ! Изпращайте на групата която ги разработва съобщения за грешки, участвайте в обсъжданията на нови идеи, включвайте се в писането на учебници и документация, ако не с друго, поне с мнения и забележки !

Колкото и малък да е Вашият принос, той ще е полезен за развитието на любимия Ви пакет и ще подобри качестото на Свободния софтуер изобщо. Това е и единствения начин да заплатите свободния софтуер, който ползвате (ако не броим прякото спонсориране на проекти, което е твърде рядко явление).

Хакерската култура освен естествените си технологични аспекти се характеризира със специфични морални, икономически и социални аспекти. Някои от основните норми в тази култура откровено се разминават с нормите на съвременните елитарни общества, което често води до конфликти.

Хакерската култура се асоциира (не без основание) със социални течения като модерния анархизъм и църковната реформацията от края на XV век, с философски школи като Даоизма (създаден през V в. пр. Хр. от Лао Дзъ в Китай), и с икономически модели близки до модела на предземеделските култури, доминирани от авторитета, а не от частната собственост и пазара.

Полезни четива по темата:


  • Две ключови монографии на Eric S. Raymond: The Cathedral and the Bazaar и Homesteading the Noosphere.

  • Ram Samudrala, A primer on the ethics of ``Intellectual property''

  • Loyd Fueston, Is Self-Interest Sufficient to Organize an Free Economy?

  • Юридически аспекти от Eben Moglen: "So Much for Savages: Navajo 1, Government 0 in Final Moments of Play." и Anarchism Triumphant: Free Software and the Death of Copyright

  • Основния лиценз за свободния софтуер GNU General Public License, Version 2, June 1991.

6.3 Конструиране с готови модули

Основен принцип в хакерската култура е да не се пише два пъти една и съща програма. Много услуги в Linux са реализирани като малки програми, които описват само спецификата на услугата, а същинската обработка на данните се извършва от големи и добре тествани стандартни програми.

Добра илюстрация на този принцип е големия брой съществуващи Web-услуги, които се реализират чрез CGI-програми.

Common Gateway Interface (CGI) е стандартен начин за Web сървера да предаде заявка от някой Web клиент към някоя приложна програма, както и да прати създадения от нея отговор обратно на потребителя.

Някои Web-страници съдържат форма - празни полета, пригодени за попълване от потребителя. Когато последният попълни полетата и изпрати формата, Web сърверът изпраща информацията от полетата към програма, която анализира тази информация и връща към потребителя нова страница - отговор. Тази уговорка за прехвърляне насам-натам на информация между Web-страница, разглеждана от потребителя и приложна програма, разположена на сървера се нарича именно Common Gateway Interface (CGI). Тя е част от протокола HTTP.

Ако създавате Web-услуга и искате CGI-програма да получи управлението, трябва да сервирате към клиентите HTML страница, съдържаща името на CGI-програмата в специален URL. Обикновено този URL е част от описние на форма. В примера

Web-сърверът, намиращ се на "mybiz.com" ще предаде управлението на CGI-програма, наречена "formprog.pl" (".pl" означава, че става дума за програма, написана на Perl, но за подобни цели могат да се използват и много други езици. Употребяват се C, C++, Perl, Pascal и др.)

Обикновено CGI-програмите са малки и за да свършат работата, която им се възлага, се обръщат към големи стандартни сървери за обработка на данни (програми за управление на бази данни като PostgreSQL и MySQL, пощенски сървери като SendMail и др.).

Типичната Web-услуга извършва прехвърляне и обработка на данни по верига от вида:



Web-клиент (Netscape) <-> Web-сървер (Apache) <-> CGI-програми <-> СУБД (PostgreSQL)

Трите големи програми в тази вериага са със свободен код и единственото, което се налага да направим, е да напишем група от CGI-програми на любимия си език за програмиране, за да опишем конкретния облик на Web-услугата.

Каталог: wp-content -> uploads -> 2014
2014 -> Роля на клъстерите за подобряване използването на човешките ресурси в малките и средни предприятия от сектора на информационните технологии
2014 -> Докладна записка от Петър Андреев Киров Кмет на община Елхово
2014 -> Биография: Цироза е траш група от град Монтана. Началото й дават Валери Геров (вокал/китара), Бойко Йорданов и Петър Светлинов (барабани) през 2002година
2014 -> Албум на Първични Счетоводни Документи 01. Фактура
2014 -> Гр. Казанлък Утвърдил
2014 -> 1. Do you live in Madrid? A
2014 -> Брашно – тип „500” седмична справка: средни цени за периода 3 10 септември 2014 Г
2014 -> Права на родителите: Да изискват и получават информация за развитието, възпитанието и здравословното състояние на детето, както и информация за програмите, по които се извършва възпитателно-образователната работа в одз№116


Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница