Včasih je veljalo, da ima povprečen uporabnik operacijskega sistema Linux dom poln računalniške opreme in na desetine utripajočih majhnih lučk ter žic, ki so običajno predstavljale skrajno razvejano omrežje. Stereotip se je z leti omilil, ker je v tem času Linux dosegel širše publiko, a še vedno velja, da uporabniki tega sistema zelo dobro poznajo njegovo delovanje. Na srečo se sodobne pingvinove distribucije rade spogledujejo s konkurenčnimi operacijskimi sistemi, zato so »podedovale« njihovo prijaznost, področje, kjer v preteklosti niso ravno blestele. Ko se pojavijo težave, imajo moderni grafični vmesniki kar nekaj vzvodov za njihovo reševanje. Žal se vsake toliko pojavi problem, ki ga je moč rešiti le z umazanimi rokami. Tu nastopimo mi.

LUPINA

Ukazna lupina (Shell) je program, ki služi za komunikacijo uporabnika z jedrom. Uporabnik prek tipkovnice vnaša ukaze, zaganja programe in nato prebere odgovore oziroma rezultate z zaslona. V Linuxu lahko posameznik izbira med več različnimi lupinami. Najbolj znana med njimi je Bash. Ime pomeni združevanje, saj lupina Bash vsebuje funkcije lupin sh, csh in ksh. V osnovi gre za lupino POSIX z dodanimi razširitvami. Najdemo jo kot privzeto možnost v večini priljubljenih Linuxovih distribucij, Mac OS X-u in celo v Windows z emulacijo v okoljih Cygwin in MSYS.

Z ukazom type v terminalu preverimo, kaj direktiva, ki mu sledi, pomeni. V distribuciji Ubuntu s številko 10.10 tako type ls vrne ls is aliased to 'ls –color=auto', kar pomeni, da je ukaz ls le sinonim za razširjeno različico tega ukaza, ki vrne rezultat preverjanja vsebine na disku, obarvan z barvo. Type sudo vrne sudo is /usr/bin/sudo. To pomeni, da type v osnovi ni razlaga posameznih direktiv, marveč le pomoč za uporabnika, ki tako izve, kaj se ob vnosu posameznega ukaza v sistemu res izvede.

Bash ima zgodovino. S puščico navzgor lahko dostopamo do že vnesenih ukazov iz preteklosti. Ukazna vrstica nam jih našteva v obratnem vrstnem redu, enega za drugim. Čez čas se zgodovine nabere toliko, da s takšnim pregledovanjem ni več obvladljiva, zato je treba takrat uporabiti naprednejši postopek. S pritiskom tipk Ctrl + r vstopimo v način vnašanja ukazov s hkratnim enačenjem že vnesenih. Ob tipkanju nam bo računalnik sam ponudil najprimernejšo rešitev iz svoje bogate arhive. Ukaza nam ni treba dokončati, kajti tipka Enter zajame trenutno izbrani ukaz iz preteklosti, ki ga nato sistem takoj zatem izvede. Zgodovina nam lahko pomaga pri dopolnjevanju ukazov, saj je sposobna dopolniti novo direktivo z argumenti prejšnje. Na primer po ukazu mkdir /srv/htdocs/www/test, bo vpisana direktiva cd !$ prestavila uporabnika na prej ustvarjen imenik.

Iskanje posameznih datotek znotraj terminalskega okna je lahko mučno delo, a tako se je delalo včasih, in še danes je marsikomu takšno iskanje veliko hitrejše od tistega s pomočjo grafičnega vmesnika. Čarobna beseda nosi ime Find. Ukaz ima naslednjo sintakso – find vir_iskanja iskani_pojem. Tako ukaz sudo find / -name *log poišče z administratorskimi pravicami vse datoteke, ki se končajo s kombinacijo »log«. Išče po celotnem disku, kar smo mu določili z virom iskanja »/«, ki ponazarja osnovni (root) imenik. Osnovno izvedenko ukaza lahko dopolnimo z vrsto dodatkov, kakršna sta na primer atime (čas dostopa) in mtime (čas spremembe), s katerima filtriramo iskanje po časovnemu zaznamku. Več o ukazu find nam prikaže direktiva man find.

Vsak ukaz v terminalu ima načeloma izhod na zaslon. To lahko spremenimo s preusmeritvijo. Free izpiše na zaslon trenutno rabo notranjega pomnilnika. Če mu dodamo znak »>«, bo informacije o njem zapisal v datoteko (npr. free > pomnilnik.txt), pri čemer bo za vsako novo izvedbo ukaza na novo ustvaril besedilno datoteko z imenom »pomnilnik.txt«. Če želimo podatke v obstoječo datoteko le dopisati, moramo namesto znaka »>«, uporabiti »>>«.

Posamezne ukaze lahko preprosto kombiniramo. Z zduževanjem pridobimo na jasnosti rezultatov. Tako lahko ukaz ps –A na zaslon izpiše vrsto nezanimivih podatkov o tem, kateri procesi so v sistemu trenutno aktivni, če pa jih pošljemo do ukaza grep terminal, se bodo sami pretvorili v čisto informacijo, namenjeno uporabniku, ki je iskal delujoč proces z vsebovano besedo »terminal«. Celotna direktiva, ki bo izpisala procese z vsebovanim izrazom terminal, se glasi ps –A | grep terminal. Z znakom »|« lahko kombiniramo najrazličnejše med seboj združljive ukaze. Pri tem nismo omejeni s številom ukazov, le na zaporedje moramo paziti.

STORITVE

Ob vsakem zagonu operacijskega sistema Linux, se v določenem zaporedju zaganja nemalo pomožnih programov. Veliko jih je nastavljenih za delovanje v načinu storitve, nekakšnem nevidnem stadiju, ki deluje v ozadju. Primer takšnega programa je spletni strežnik Apache. Veliko teh storitev je življenjskega pomena za celoten sistem, a se kljub temu najde veliko popolnoma nepotrebnih. Osnovna distribucija je namreč sestavljena za povprečnega uporabnika v mislih, zato vsebuje kar nekaj storitev, ki ne bodo vsem po pogodu. Zakaj bi želeli imeti zagnano storitev, ki je ne potrebujete? Skoraj vsaka distribucija ima namensko orodje za urejanje nameščenih storitev. Pripomoček distribucije Ubuntu se skriva pod System > Preferences > Startup Applications. Žal dostopa do vseh storitev v ozadju takšne grafične aplikacije nimajo, zato bomo zahtevnejši uporabniki raje posegli po dobri stari ukazni vrstici znotraj terminala. Zagonski skripti so na področju /etc/init.d. Vsak skript je drugačen, saj so vsi vezani na povsem različne osnovne programe, a na srečo sledijo skupnim smernicam. Tako bo vsaka storitev vsebovala vsaj možnost ročnega zagona ter zaustavitve. Nekateri bodo takšno osnovno funkcionalnost še dodatno razširili z možnostmi za poročanje o stanju, izvedbo prisilnega zagona in podobno. Na področju init.d so tudi sinonimi za naprednejše pripomočke upravljanja s storitve. Tako nam ukaz /etc/init.d/cups start ne bo zagnal tiskalniške vrste cups, ampak nas bo napotil na samosvoj pripomoček, do katerega dostopamo z direktivo service cups start (izvajati ga je treba z administratorskimi pravicami sudo). Poleg naštetega lahko posameznik na področje storitev prispeva lasten programski skript za nadzor nad določenimi aplikacijami. Omenjeno zahteva globlje znanje lupine Bash, ki žal presega okvirje pričujočega članka. Ogromno uporabnih nasvetov lahko zainteresirani najdete na spletnem naslovu www.linuxconfig.org/Bash_scripting_Tutorial.

Moj mikro, april 2011 | Aleš Forte |