LPIC-1 - Kaku konspekt 2011, 1. osa

From ICO wiki
Revision as of 18:55, 20 April 2011 by Kaido (talk | contribs) (→‎Deb/dpkg)
Jump to navigationJump to search

NB! Tegemist on Kaku personaalsete märkmetega eksamiteks valmistumise ajast, aluseks on Roderick W. Smithi raamat LPIC-1: Linux Professional Institute Certification Study Guide.

Diskleimer: otseseid vastuseid päris eksamiküsimustele on eksamireeglite järgi keelatud levitada. Seetõttu neid ka siit konspektist ei leia.


LPI-101

bash ja käsurida

Käsukestad:

  • bash
  • csh
  • tcsh
  • ksh
  • zsh

/bin/sh - sümlink soovitavale kestale

Sisekäsud:

  • cd
  • cwd
  • echo
  • exec
  • time
  • set
  • exit/logout

NB! exec-iga programmi x-terminalist käivitades suletakse lõpetamisel ka xterm!

Mõned sisekäsud on dubleeritud väliskäskudeks - sel juhul on prioriteet sisekäsul, kui pole lisatud täit kataloogiteed väliskäsuni

Käskude tabuleerimine (tab completion) - Tab pakub käsu alguse järgi lõpusümboleid

.history - kättesaadav terminalis üles-noole abil


Bashi kiirklahvid on võetud Emacsilt:

  • Ctrl-A - rea algus (Home)
  • Ctrl-E - rea lõpp (End)
  • Ctrl-B - märk vasakule (<-)
  • Ctrl-F - märk paremale (->)
  • Ctrl-Left - sõna vasakule (Esc-B)
  • Ctrl-Right - sõna paremale (Esc-F)
  • Ctrl-D - kustutus paremalt (Del)
  • Ctrl-K - kustutus kursorist rea lõpuni
  • BkSp - kustutus vasakule
  • Ctrl-X + BkSp - kustutus kursorist rea alguseni
  • Ctrl-T - vahetab kursori all oleva sümboli eelmisega
  • Esc-T - vahetab kursori all oleva sõna eelmisega
  • Esc-U - muudab kursorist sõna lõpuni suurtähtedeks
  • Esc-L - muudab kursorist sõna lõpuni väiketähtedeks
  • Esc-C - muudab kursorialuse tähe suurtäheks
  • Ctrl-X + Ctrl-E - käivitab editori (määratud $EDITOR või $FCEDIT -muutujas). Varuvariant: Emacs

history sisaldab enamasti 500 viimast käsku; history -c puhastab

Kasutaja sätted: ~/.bashrc, ~/.profile

Süsteemsed: /etc/bash.bashrc, /etc/profile


Keskkonnamuutujad

Näide:

  • $ NNTPSERVER=news.abigisp.com
  • $ export NNTPSERVER

Võib ka kokku panna: $ export NNTPSERVER=news.abigisp.com

env - kuvab kõik muutujad!

man <käsk> - saab anda ka manuaali sektsiooni:

man 5 passwd - passwd-käsu manuaali 5. sektsioon (peatükk)

man vs info


Suunamised

Standardsed vood (enamasti käsitletakse programmides samaväärselt andmefailidega):

  • stdin - tüüpiliselt klaver
  • stdout - tüüpiliselt kuvar
  • stderr - tüüpiliselt kuvar

S/V suunamine:

  • käsk > fail.txt
  • käsk > käsk
  • > - loob stdout-i infost uue faili (olemasolev kirjutatakse üle)
  • >> - lisab stdout-i info olemasolevale failile (kui pole olemas, luuakse)
  • 2> - loob stderr-i infost uue faili (olemasolev kirjutatakse üle)
  • 2>> - lisab stderr-i info olemasolevale failile (kui pole olemas, luuakse)
  • &> loob stdout-i JA stderr-i infost uue faili (olemasolev kirjutatakse üle)
  • < - kasutab määratud faili stdin-ina
  • << - järgnevate ridade teksti kasutatakse stdin-ina
  • <> - kasutab määratud faili NII stdin-i KUI stdout-ina

/dev/null - eimiski. N: whine 2> /dev/null - whine'i kõik veateated visatakse ära

<< - nimet. ka "here document" (here doc) - enamasti ainult skriptides, mitte käsureal!

N: proge << blah jääb kuulama:

aaa - läheb proge sisendisse
bbb - see ka
ccc - see ka
ddd - see ka
blah - lõpetab ära

Ctrl-D - EOF-sümbol!

tee - suunab stdout-i lisaks ka mainitud failidesse. Enamasti skriptikäsk.

N: ls | tee blabla.txt - ls kuvab nagu tavaliselt, kuid lisaks läheb ka faili (nagu ls ja ls > blabla.txt koos!)

Toru

Ühe käsu väljundi suunamine teise sisendisse

esimene | teine


Backtick

Kasutatakse "käsk käsus" loomiseks:

$ rm `find ./ -name “*~”` - kustutab kõik ~-lõpulised failid

xargs - saadab argumendid edasi:

$ find ./ -name “*~” | xargs rm - find'i argumendid söödetakse rm-käsku (rm esimene~ , rm teine~ , rm kolmas~ jne )


Tekstifiltrid

cat - faili kuvamine või failide sidumine

cat esimene teine > kolmas

argumendid:

  • -E - näita realõpusümbolit ($)
  • -n - nummerdab read
  • -b - nummerdab mittetühjad read
  • -s - asendab tühjade ridade plokid üheainsa tühja reaga
  • -T - näitab tabulatsioone (ˇI)
  • -v - näitab mittetrükitavaid sümboleid

tac - cat tagurpidi, kuvab read vastupidises järjekorras

join - ühendab failid väljade kaupa. N:

fail nimed.txt:

1. Jüri
2. Mari
3. Peeter
4. Elmar

fail pikkus.txt:

1. 198
2. 166
3. 180
4. 178

Kokku:

1. Jüri 198
2. Mari 166
3. Peeter 180
4. Elmar 178

Saab määrata ka erinevaid võtmevälju:

  • -1 n - esimeses failis on võtmeväljaks n-es väli
  • -2 m - teises...

jne


paste - ühendab failid rida-realt:

1. Jüri 198
...

NB! sed jt tekstivahendid ei muuda algset faili, vaid saadavad muudetud tulemuse kas stout-i (kuvarile) või faili!

expand - asendab Tab-id tühikutega. Vaikimisi 8, väärtust saab lisada parameetriga expand -t number

unexpand - vastupidine

od (octal dump) - algselt mõeldud failide kuvamiseks kaheksandsüsteemis, aga suudab kuvada ka kuueteistkümnend- ja kümnendsüsteemi, ASCIId jmm.

sort

  • -f (--ignore-case) - ei erista suur- ja väiketähti
  • -M (--month-sort) - sorteerib ingliskeelsete kolmetäheliste kuunimede järgi (JAN...DEC)
  • -n (--numeric-sort) - arvude järgi
  • -r (--reverse-sort) - tagurpidi
  • -k väli (--key-field=) - võtmeväli (vaikimisi esimene). Saab panna ka kaks välja


split - jagab faili kaheks või enamaks failiks. Ette antakse väljundfaili nimi - komponendid luuakse kujul nimiaa,nimiab,nimiac ...

  • -b maht (--byte-size=) - komponentide maht baitides (märgipealt => viimane rida enamasti poolik)
  • -C maht (--line-bytes=) - maht ilma ridu poolitamata (kui aga rida on pikem kui etteantud suurus, poolitub ikkagi)
  • -l maht (--lines=) - komponentide ridade arv

N: $ split -l 2 listing1.1.txt numbers (väljund: numbersaa,numbersab ... kahe rea kaupa)


tr - tähtede asendamine - esimesena toodud hulga tähed asendatakse teise omadega

N: $ tr BCJ bc < listing1.1.txt - sisendfailis asendatakse B b-ga, C c-ga ja J samuti c-ga (viimane saadaolev märk teises hulgas)

erikuju: tr -d HULK - hulga elemendid kustutatakse tekstist


uniq - eemaldab topeltread N: $ sort shakespeare.txt | uniq

be
is
not
or
question
that
the
to

(eemaldati üks 'to' ja üks 'be')


Failiformaatimiskäsud

fmt - silub tekstifaili. Eeldab, et lõigud on eraldatud vähemalt 2 tühja rea või siis tabuleeritud. Vaikimisi reapikkus 75 märki

nl - ridade nummerdamine (nagu cat -b, aga võimsam).

pr - trükkimiseks ettevalmistamine (näit. päiste ja jaluste lisamine; mitu veergu jne). Peamiselt kasutatakse kombineeritud käskudes:

N: cat kiviajamull.txt | pr --columns=2 > blabla.txt

NB! pr on loodud eeskätt 80-ndate printereid silmas pidades. Ta on kasulik tänini, kuid uuemaid võimalusi (PostScript jpt) toetab paremini GNU Enscript


Failikuvamiskäsud

cat - vt eespool

head - kuvab stout-i faili alguse. Vaikimisi 10 esimest rida, saab määrata ka baitide (-c) või ridade (-n) arvu

tail - sama, kuid lõpust. Kasulik logide jälgimisel (värskeimad sissekanded). Lisavõimalused:

  • -f - jääb jälgima ja kuvab lisanduvad read
  • -pid=nr - lõpetab -f-iga alustatud jälgimise, kui protsess nr lõpetab töö

less - tõsisem failikuvaja. Enamasti ei kasutata käsuahelates (liiga interaktiivne), v.a. viimase käsuna

  • /sõna - otsing ettepoole. ainult / annab interaktiivse. n edasi, N tagasi
  • ?sõna - sama tahapoole
  • gNR - reale minek. N: g65
  • h - abiinfo
  • q - välja

Kokkuvõtvad käsud

cut - võimaldab filtreerida failist infot mingite tingimuste (baitide, märkide, väljade) järgi:

  • -b - baidid
  • -c - märgid
  • -f - väljad

Väärtused võivad olla konkreetsed (4), vahemikud (2-4) ja avatud vahemikud (-2, 4- - kuidas määratakse negatiivseid arve?)

N: $ ifconfig eth0 | grep HWaddr | cut -d “ “ -f 11 - kuvab ifconfig'ist MAC-aadressi

wc - sõnaloend. Võimaldab lugeda ka ridu (-l), sõnu (-w), baite (-b) ja märke (-c).

N: 65 372 2672 kiviajamull.txt - 65 rida, 372 sõna, 2672 baiti/märki.


Regulaaravaldised

  • Kantsulud - variandid. N: b[aeiou]g - bag, beg, big, bog, bug
  • kriips - vahemik. N: a[2-4]z - a2z, a3z, a4z
  • punkt - suvaline märk (peale reaalgussümboli). N: a.z - a2z, abz, aQz
  • katus (karee) - reaalgus
  • dollar - realõpp
  • tärn - 0-n sümbolit
  • pluss - 1-n sümbolit
  • küsimärk - 0-1 sümbol
  • kaigas - üks kahest. N: liha|kala
  • tavasulud - alamavaldis nagu matemaatikas
  • kurakaldkriips - paosümbol eelmiste sümbolite tavakasutuseks. N: kakupesa\.net


grep - paindlik otsinguvahend. Üldkuju: grep [valikud] regulaaravaldis [failid]

  • -c - ridade lugemine kuvamise asemel
  • -f failinimi - loeb regulaaravaldise failist
  • -i - ei erista suur- ja väiketähti
  • -r - rekursiivne otsing alamkataloogidest (võib aga ka rgrep-i kasutada)
  • -E - kasutab laiendatud regulaaravaldist (vaikimisi on tavakujul; võib aga ka egrep'i kasutada)

N: grep -E “(twain\.example\.com|bronto\.pangaea\.edu).*127” /etc/* - otsib /etc-st ridu, kus on üks kahest domeeninimest ja seejärel number 127

NB! Siin ja mõnel muul juhul kasutatakse jutumärke, et kest ei tõlgendaks avaldise osi enda käskudena!


sed - käsurearedaktor. Muudab faili ja saadab selle stdout'i. Kaks põhikuju:

  • sed [valikud] -f skriptifail [sisendfail]
  • sed [valikud] skriptifail [sisendfail]

N: $ sed ‘s/2011/2012/‘ cal-2011.txt > cal-2012.txt - asendab aastanumbri ja teeb järgmise aasta kalendri


Pakihaldus

RPM (RPM Package Manager, varem Redhat Package Manager)

Paki üldkuju: packagename-a.b.c-x.arch.rpm (a.b.c - versioon, x - build; arch - arhitektuur, v.a. lähtekoodipakil src)

Ideaalis peaks iga pakk töötama kõigil RPM-distrodel. Reaalselt ei pruugi, kuna

  • iga distro paigaldab erinevad RPM-i utiliidid
  • ühe versiooni pakil võivad olla sõltuvused, mida teises pole
  • sõltuvused võivad olla distroti eri nimedega
  • pakkides olevad failid võivad distroti veidi erineda
  • pakkides olevad skriptid ei pruugi ühilduda

RPM üldine süntaks: rpm [operation][options] [package-files|package-names]

Põhioperatsioonid:

  • -i - paigaldab paki, sama nimega pakki ei tohi varem olla
  • -U - uuendab olemasolevat või paigaldab, kui veel pole
  • -F - uuendab ainult siis, kui vanem versioon on olemas
  • -q - päring paki kohta
  • -V - paki kontroll
  • -e - eemaldab paki
  • -b - (vana) lähtekoodi ja konfi olemasolul ehitab binaarpaki; alates rpm 4.2-st teeb seda rpmbuild
  • --rebuild - sama
  • --rebuilddb - loob RPM-i andmebaasi uuesti, parandab vead
Põhivalikud
Valik Käsud Kirjeldus
--root dir Kõik Määrab konkreetse kataloogi juurkataloogiks
--force -i, -U, -F Sundpaigaldus (ka ülekirjutamise korral)
-h, --hash -i, -U, -F Näitab käsu täitmise edenemist #-sümbolite reaga
-v -i, -U, -F Kasutatakse koos -h-ga näitamaks iga paki kohta ühtmoodi #-de rida (-Uvh)
--nodeps -i, -U, -F, -e Eirab sõltuvusi (ohtlik!)
--test -i, -U, -F Kontrollib kõike nagu päris paigalduses, aga reaalselt ei paigalda
--prefix path -i, -U, -F Määrab paigalduskataloogi (toimib vaid osade pakkidega)
-a, --all -q, -V Kontrollib kõiki pakke
-f file, --file file -q, -V Kontrollib faili omanikuks olevat pakki
-p package-file -q Päring eemaldatud faili kohta
-i -q Kuvab paki info
-R, --requires -q Kuvab sõltuvused (pakid ja failid)
-l, --list -q Kuvab pakis olevad failid

NB! Osa operatsioone tahavad paki nime (lühem), teised aga paki täis-failinime (pikem)!

rpm -qi - põhjalikum info paki kohta.


Andmete eraldamine RPMist

RPM on muudetud cpio-fail (vt http://en.wikipedia.org/wiki/Cpio).

rpm2cpio -utiliit saadab väljundi stdout'i, seega tuleb suunata:

rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm > samba-server-3.0.25b-4.5mdv2008.0.cpio

seejärel cpio-fail lahti pakkida: $ cpio -i --make-directories < samba-server-3.0.25b-4.5mdv2008.0.cpio

-i pakib lahti, --make-directories loob vajalikud alamkataloogid

Võib ka ühe käsuga: $ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm | cpio -i --make-directories

NB! Mitte pakkida olemasoleva failisüsteemi selga! Alati peaks looma eraldi alamkataloogi - pakk võib sisaldada /etc, /usr jt hierarhiaid

Debiani alien suudab rpm-i teha lisaks deb-ile ka tarballiks!


Yum

Üldkuju: yum [valikud] [käsk] [pakid]

Põhikäsud:

  • install - paigaldab pakid ja nende sõltuvused
  • update - uuendab valitud pakid - ilma argumendita paneb paika kõik uuendused
  • check-update - näitab võimalikke uuendusi
  • erase, remove - eemaldab
  • upgrade - sama mis update --obsoletes, sobib versiooniuuenduseks
  • list - paki info
  • provides, whatprovides - konkreetse teenuse pakid. N: yum whatprovides apache
  • search - otsing
  • info - paki info (vrdl info-käsk)
  • clean - puhvri puhastamine, aeg-ajalt soovitatav
  • resolvedep - etteantud sõltuvusega pakid
  • localinstall - kohaliku rpm-i paigaldus, sõltuvused tulevad yum'i varamutest
  • localupdate - vt eelmist
  • deplist - sõltuvuste loend
  • shell - yum'i käsukest


NB! yum'i kasutamine on lihtsam kui tavalise rpm'i puhul, kuid süsteemi haldamine antakse rohkem distro koostaja kätte!

yumdownloader - laeb soovitud paki alla aktiivsesse kataloogi


RPM'i ja yum'i konf

RPM-i põhikonf: /usr/lib/rpm/rpmrc (ei ole /etc all!). Seda ei tohiks muuta - tulekski luua kas globaalne /etc/rpmrc või kasutajapõhine ~/.rpmrc

Peamine mõte on lisada arhitektuurivõtmeid: optflags: athlon -O2 -g -march=i686

Yum: /etc/yum.conf + /etc/yum.repos.d/ -varamute konfid

Red Hati/Fedora põhilised lisavaramud:

Asjalik teenus: http://rpmfind.net


Deb/dpkg

Debian, Ubuntu, Xandros, Mepis, Libranet...

Üldkuju: dpkg [options][action] [package-files|package-name]

Põhikäsud:

  • -i, --install paigaldus
  • --configure konfib paigaldatud paki
  • -r, --remove eemaldab paki, jätab konfifailid alles
  • -P, --purge eemaldab paki koos konfiga
  • -p, --print-avail info paigaldatud paki kohta
  • -I, --info info paigaldamata paki kohta
  • -l <muster>, --list loetelu pakkidest, mille nimes esineb <muster>
  • -L, --listfiles loetelu pakiga seotud paigaldatud failidest
  • -S <muster>, --search otsing mustri järgi
  • -C, --audit poolikute pakkide otsing, annab soovitusi
Võtmed
--root=dir Kõik Määrab juurkataloogi (kasulik erakorralise remondi puhul)
-B, --auto-deconfigure -r Deaktiveerib pakid, mis sõltuvad eemaldatavast pakist
--force-things Mõned Sunnib tegevusi
--ignore-depends=package -i, -r Eirab sõltuvusi --no-act -i, -r Kontrollib sõltuvusi ilma reaalset operatsiooni sooritamata
--recursive -i Rekursioon läbi alamkataloogide
-G -i Ei paigalda pakki, mille uuem versioon on juba paigaldatud
-E, --skip-same-version -i Ei paigalda pakki, mille sama versioon on juba paigaldatud

Mõnel juhul eeldatakse paki-, mõnel failinime. Install ja info tahavad faili, eemaldamine pakki.


apt-cache - mitmesugune info paki kohta:

  • apt-cache showpkg pakinimi -
  • apt-cache stats - pakistatistika.

Näide:

kakk@aragorn:~$ sudo apt-cache stats
[sudo] password for kakk: 
Pakettide nimesid kokku: 42027 (841k)
Total package structures: 42027 (2 354k)
 Tavapakette: 32271
 Puhtalt virtuaalseid pakette: 530
 Üksikuid virtuaalseid pakette: 3059
 Kombineeritud virtuaalseid pakette: 293
 Puudu: 5874
Kokku erinevaid versioone: 34394 (2 476k)
Erinevaid kirjeldusi kokku: 34394 (825k)
Sõltuvusi kokku: 222752 (6 237k)
Versioonide/failide seoseid kokku: 38085 (914k)
Kirjelduste/failide seoseid kokku: 34394 (825k)
Total Provides mappings: 6341 (127k)
Total globbed strings: 183 (2 517)
Total dependency version space: 1 091k
Lõtkukohti kokku: 53,4k
Total space accounted for: 12,2M
  • apt-cache unmet - puuduvad sõltuvused
  • apt-cache depends pakinimi - konkreetse paki sõltuvused
  • apt-cache pkgnames sa - sa-ga algavad pakinimed

Apt-get

Apti allikaid ei tasu suvaliselt lisada :)

Põhikäsud:

  • update loeb sources.listi varamute uuendused
  • upgrade uuendab
  • dselect-upgrade uuendab dselecti järel tegemata jäänud asjad*
  • dist-upgrade nagu upgrade, aga parema konfliktikontrolliga (distrouuendus)
  • install paigaldab paki
  • remove eemaldab
  • source tõmbab lähtekoodipaki (failinime järgi!)
  • check kontrollib pakiandmebaasi
  • clean puhastab puhvri
  • autoclean puhastab puhvri vaid vanadest failidest, mida enam kasutada ei saa
Valikud
-d, --download-only upgrade, dselect-upgrade, install, source Laeb pakid alla, kuid ei paigalda
-f, --fix-broken install, remove Üritab lahendada sõltuvused
-m, --ignore-missing, --fix-missing upgrade, dselect-upgrade, install, remove, source Eirab pakke, mille lähtekood pole saadaval -q, --quiet Kõik Ei näita osasid väljundeid (-qq on veel vaiksem!)
-s, --simulate, --just-print, --dry-run, --recon, --no-act Kõik Simuleerib tegevust (reaalselt ei tee)
-y, --yes, --assume-yes Kõik Vastab küsimustele "jah" (skriptides kasutamiseks)
-b, --compile, --build source Laeb lähtekoodipaki alla ja kompileerib selle
--no-upgrade install Ei uuenda pakki, kui vanem versioon on juba olemas

Apt - sama jutt kui RPMiga: kontroll nihkub pakendaja kätte!


dselect, aptitude - pakibrauserid (aptitude töötab apt-geti analoogina, kui anda pakid ette, ilma parameetriteta läheb interaktiivsesse režiimi).

Graafiline analoog on Synaptic.

aptitude - full-upgrade vs safe-upgrade, viimane on konservatiivsem

dpkg-reconfigure - paki ümberkonfimine

Debiani pakk koosneb eri failidest! lähtekoodi tarball, kontrollfail ja .dsc-signatuurifail (ehtsuse kontroll)


Pakihaldurite konfimine

dpkg konf: /etc/dpkg/dpkg.cfg või kohalik ~/.dpkg.cfg

apt: /etc/apt/sources.list (ja repod /etc/sources.list.d); apt'i enda konf: /etc/apt/apt.conf (Ubuntul /etc/apt/apt.conf.d/ all eri failid eri rakendustele)


alien

Nõuab nii RPMi kui DPKG paigaldamist

Üldkuju: alien [options] file[...]

Tähtsaimad valikud: --to-deb, --to-rpm, --to-slp ja --to-tgz (3. on Stampede Linuxi pakett, suht vananenud, 2002 lõpetas töö)

Näited:

  • # alien --to-rpm someprogram-1.2.3-4_i386.deb - rpm-iks
  • # alien --install binary-tarball.tar.gz - installib ja lisab Debiani andmebaasi nagu .deb-i


Pakikonfliktid

Peamised põhjused:

  • puuduvad teegid/utiliidid
  • mitteühilduvad teegid/utiliidid
  • topelt failid - mingi paki failid on teise pakiga juba paigaldatud ja ei ühildu
  • mitteklappivad nimed

RPM-i puhul saab jõuga:

  • # rpm -i apackage.rpm --nodeps
  • # rpm -i apackage.rpm --force

DPKG puhul --ignore-depends=package, --force-depends või --force-conflicts -parameetrid

Vahel aitab sõltuvuspakkide uuendamine

Vahel võib paki ümber ehitada: # rpmbuild --rebuild packagename-version.src.rpm

Vahel saab leida paki alternatiivversiooni

Vahel (serveritarkvara puhul) on vaja muuta käivitusskripte: /etc/rc.d/rc.local või /etc/rc.d/boot.local

Jagatud teegid

näiteks libc/glibc, qt, gtk+

glibc põhifail on ajalooliselt jäänud /lib/libc.so.6, tänapäeval on enamasti sümlink (Ubuntu 10.10 puhul samasse libc-2.12.1.so peale)

Põhimõtteliselt saaks teeke ka staatiliselt linkida, aga tulemus oleks suur ja paindumatu (uuendamine eeldaks relinki). Linux kasutab dünaamilist teegisüsteemi sarnaselt Windowsi DLL-idega. Linuxis on vastavad laiendid:

  • jagatud teek - .so või .so.versioon (n: .so.6)
  • staatiline teek - .a

Jagatud teegi miinused:

  • mõningane jõudluskadu, kui teine programm juba sama teeki kasutab
  • teegi muutmine võib tekitada ühilduvusprobleeme seda kasutavate programmidega
  • programm ei pruugi teeki leida
  • sõltuvustepusa
  • teegi probleem (N: kettaviga) tekitab kogu süsteemile hirmsa kolaka

Teekide leidmine - nime ja/või kataloogitee järgi

Põhiline konf: /etc/ld.so.conf . Ubuntul on seal rida "include /etc/ld.so.conf.d/*.conf" - kõik conf-failid seal laetakse, nagu nad oleks juba ld.so.conf'is sees

Gentoos tuleb redigeerida /etc/env.d/ kataloogis olevaid konfifaile ja seejärel anda käsk env-update.

Lisaks seal määratule on alati kättesaadavad ka /lib ja /usr/lib sisu


Teekide asukohti saab määrata ka LD_LIBRARY_PATH -keskkonnamuutujaga:

$ export LD_LIBRARY_PATH=/usr/local/testlib:/opt/newlib


Teekide nimekonflikti või asukohajama puhul võib aidata sümlink: # ln -s biglib.so.5.2 biglib.so.5 (vahel tuleb peale seda anda ldconfig-käsk)

ldd programminimi - kuvab kõik teegid, mida programm kasutab:

kakk@aragorn:~$ ldd /usr/bin/xbiff
	linux-vdso.so.1 =>  (0x00007fff3a7ff000)
	libXaw.so.7 => /usr/lib/libXaw.so.7 (0x00007f4941c22000)
	libXt.so.6 => /usr/lib/libXt.so.6 (0x00007f49419bd000)
	...

ldconfig - laeb teekide puhvri uuesti (vajalik peale muutusi). Nii RPM kui DPKG teevad seda automaatselt. Saab ka eri parameetreid kasutada.


Protsessihaldus

uname

Kerneliprotsessi info

Põhiparameetrid:

  • -n, --nodename - hostinime kuvamine
  • -s, --kernel-name - kerneli nimi (enamasti Linux)
  • -v, --kernel-version - kerneli versioon (algselt kuvas kompileerimise aega)
  • -r, --kernel-release - kerneli väljalase
  • -m, --machine - arvuti info (enamasti arhitektuur: x86_64)
  • -p, --processor - prose info (enamasti näitab paljudel juhtudel unknown)
  • -i, --hardware-platform - riistvaraplatvorm (enamasti unknown)
  • -o, --operating-system - OS (GNU/Linux)
  • -a, --all - kogu saadaolev info (kõik kokku)


ps

Protsessikäsk. Hirmus hulk parameetreid, kolm klassi:

  • Unix98 valikud - ühetähelised, võib grupeerida, algavad ÜHE kriipsuga (-)
  • BSD valikud - ühetähelised, võib grupeerida, algavad ILMA kriipsuta
  • GNU pikad valikud - mitmetähelised, ei grupeerita, algavad KAHE kriipsuga (--)

PS_PERSONALITY keskkonnamuutuja määrab PS-i käitumise: posix, old, linux, bsd, sun, digital jt

Peamised Linuxi ps-käsud:

  • ps - konkreetse terminali kõik protsessid
  • abiinfo - ps --help
  • kuva kõik protsessid - ps -A või ps -e
  • kuva kõik aktiivse kasutaja protsessid - ps -x
  • kuva kõik konkreetse kasutaja protsessid: ps -u kasutaja, ps U kasutaja või ps --user kasutaja (võib olla kasutajanimi või ID)
  • täiendav info: -f, -l, j, l, u ja v võtmed
  • protsesside hierarhia: -H, -f ja --forest -võtmed
  • lai väljund (üle 80 märgi): -w ja w


Näidatav info:

  • kasutajanimi
  • protsessi ID
  • ülemprotsessi (vanema) ID
  • TTY (terminal)
  • protsessori ajakasutus
  • protsessori prioriteet
  • mälukasutus
  • käivituskäsk

NB! init "adopteerib" orbudeks jäänud (ülemprotsess lõppenud) protsessid!


top

ps-i dünaamiline variant. Tavaliselt kasutatakse interaktiivselt ilma argumentideta, aga saab ka anda parameetreid

Eriti kasulik on protsessoriaja jälgimine (load average)


jobs - jooksva sessiooniga seotud protsessid. Kasulik vahel PID leidmiseks


Tausta- ja esiplaaniprotsessid

Ctrl-Z peatab terminalis jooksva protsessi ja vabastab terminali

fg jätkab uuesti (kui mitu on peatatud, siis fg number)

bg jätkab taustal

käsk & käivitab taustal


nice

Määrab protsessi prioriteetsuse:

nice [argument] [command [command-arguments]]

Näide:

$ nice -12 number-crunch data.txt - käivitab number-crunch'i, andmed võetakse data.txt'ist

Tavaprioriteet on 0. vahemik on -20-st 19-ni, negatiivsed on kõrgema prioriteediga. Prioriteetseid protsesse (alla 0) saab käivitada vaid root, madalamaid prioriteete iga kasutaja (N: wine puhul oli -5). Kasutaja saab muuta vaid oma protsesside prioriteete ja ainult madalamaks!

Töö käigus saab prioriteeti muuta: renice priority [[-p] pids] [[-g] pgrps] [[-u] users]

N: # renice 7 16580 -u pdavison tbaker - protsess 16580 ja kõik kahe kasutaja protsessid saavad prioriteedi 7.


Protsessi tapmine

kill - võib olla nii sise- kui väliskäsk, viimase jaoks tuleks anda koos teega /bin/kill

Üldkuju: kill -s signaal PID

Signaalide loetelu: kill -l

signaali võib anda nii nime kui numbri järgi. Enamlevinud:

  • 1 - SIGHUP, tapab interaktiivsed programmid
  • 9 - SIGKILL, räige kohene surm ilma shutdown'ita
  • 15 - SIGTERM, pehmem, üritab failid sulgeda jne. Vaikimisi valik!

lühikuju: kill -signaalilõpp PID (ilma SIGita: HUP, KILL, TERM jne)

Root saab killida kõike, muud ainult omi protsesse

nohup programm [valikud] - käivitab nii, et SIGHUPiga tappa ei saa (eiratakse)

killall - nime järgi killimine. -i parameeter küsib:

kakk@aragorn:~$ killall -i firefox-bin
Kill firefox-bin(8074) ? (y/N) y
kakk@aragorn:~$ 

NB!!! Mõnes muus Unixis tapab killall KÕIK SELLE KASUTAJA PROTSESSID!!! Ettevaatust...


JÄTKUU....

LPIC-1 - Kaku konspekt 2