LPIC-1 - Kaku konspekt 2016 1. osa
NB! Tegemist on Kaku personaalsete märkmetega eksamiteks valmistumise ajast, aluseks on Ross Brunsoni ja Sean Wahlbergi raamat CompTIA ® Linux+ / LPIC-1 Cert Guide
Diskleimer: otseseid vastuseid päris eksamiküsimustele on eksamireeglite järgi keelatud levitada. Seetõttu neid ka siit konspektist ei leia.
Riistvara
Tsitaat ---> IO port — An address, or range of addresses, identifying the device; e.g., 0080, 1000-107f.
IRQ — Interrupt requests (IRQs) signal the processor that an event has happened and that the CPU is requested to come check on the resource. It a limited resource that can sometimes be shared.
DMA — Direct memory access (DMA) allows a peripheral to access system memory directly rather than having the CPU intervene. <---
cat /proc/ioports cat /proc/interrupts cat /proc/dma
Lisaks veel: cat /proc/usb cat /proc/pci
Riistvara seisu vaatamiseks
- vaata /proc-i
- kasuta mõnd spetsiaalset utiliiti (lshw jt)
/proc (procfs) - virtuaalne ehk pseudo-failisüsteem
ls* käsud:
Tsitaat --->
- lsmod — Shows the kernel modules loaded, along with any dependencies for those modules. Helpful for double
checking that the driver is loaded for a peripheral. If the module is not present then use the modprobe command to load it, such as with modprobe bluetooth.
- lscpu — Provides details about your CPU, such as the number and speed of each socket and core.
- lspci — Shows a lot of information about your PCI bus and devices. This can identify devices on the bus that the kernel doesn’t know about and provides addressing information for configuring them.
- lsscsi — Shows information about the SCSI devices on your system, if the system supports SCSI. This tells you if the system can see the disk.
- lsdev — Shows the devices recognized by your system.
- lsraid — Displays the Redundant Array of Inexpensive Disks (RAID) devices on the system.
- lsusb — Displays the USB information and devices for your system.
- lsblk — Displays the block devices (disks) attached to your system.
<---
NB! lsdev tuleb Ubuntu 14.04 Serveril procinfo-paki paigaldamisega, lsscsi ja lsraid puuduvad üldse!
Võidakse küsida, milline eelmistest näitab kõige põhjalikumat koondinfot IO, katkestuste ja DMA kohta - selleks on lsdev!!
Osa seadmeinfot asub ka teise virtuaalse failisüsteemi /sys all (sysfs) - /proc all on läbisegi seadmed ja protsessid, /sys sisaldab ainult seadmeid!
udev - seadmehaldur; kasutab /sys infot ja haldab seadmeid /dev all.
hotplug - kasutatav jooksvalt ühendatuna (mälupulk) coldplug - tahab restarti
dbus (D-Bus) - infovahetuskanal kerneli ja töölauarakenduste vahel (ka rakendused omavahel). N: meiliindikaator tööriistaribal; udev kasutab seda näiteks uue andmekandja haakimisel vastava akna avamiseks.
Integreeritud seadmed, mis Linuxit ei toeta, tasub BIOSist välja lülitada!
Kettad
Seadmed algavad 0-st (md0 - RAID, scd0 - CD) või a-st (sda, sdb), kettajaotised 1-st (sda1)
Failisüsteemi eri osad võivad asuda eri ketastel või ka eri võrkudes!
Ketta jagamise akronüüm PIBS:
- Performance - suure koormusega osad eraldi (/home, saaleala)
- Integrity - kriitilised osad eraldi (upload-kataloog)
- Backup - kiiresti muutuvad (/var) eraldi aeglastest (/usr)
- Security - võimalik osi isoleerida
LVM - võimaldab luua loogilisi kettaid üle füüsiliste jaotiste ja ketaste; aitab dünaamiliselt ruumi juurde tekitada
PV (physical volume) - tüüpiliselt ketas või jaotis PE (physical extent) - PV alajaotis, mis võivad kuuluda erinevate loogiliste ketaste koosseisu VG (volume group) - üks või mitu PV-d LV (logical volume) - loogiline ketas, mis koosneb PV-l asuvatest PE-dest (võib kombineerida eri PV-de PE-sid) SAN (Storage Are Network) - jagab kettaruumi blokkide tasemel üle võrgu
Ruumi lisamiseks tuleb LV-sse lisada uus PV ja suurendada ruumi seal asuvate PE-de abil.
Snapshotting - LV tõmmis mingil ajahetkel, mis ühendatakse uue kettana - algne LV jätkab tegutsemist (ja muutub)
Levinumad jaotiseskeemid:
- / - kõik ühes kohas (LVM-i kasutamine tagab aga piisava paindlikkuse)
- lisaks /home, /var - kasutaja failid eraldi, samuti kiiresti muutuvad andmed (sh logifailid)
- lisaks /usr ja /tmp - staatilised süsteemifailid eraldi (pluss võimalus haakida mujalt), /tmp eraldamine aitab turvalisust
- lisaks /boot - alglaadimisprotsess ei saa midagi lolliks ajada
swap - saaleala ehk virtuaalmälu thrashing - info põrgatamine swapi ja RAMi vahel, aeglustab tööd
BIOS MBR 512 baiti
GRUB2 paigaldus kettale - grub-install /dev/sda . Vaikimisi /boot, saab määrata ka mujale (--boot-directory=)
grub> ls näitab kettaid, sealt saab edasi vaadata, N: ls (hd0, msdos1) TAB-completion on ka olemas!
grub-mkconfig (võib lisada -o asukoht konfifaili jaoks)
Alglaadimine ja käivitustasemed
Alglaadimise neli faasi: 1. alglaadurifaas 2. kernelifaas 3. esmane kasutajafaas 4. init
Lisaks LILOle ja GRUBile
- SYSLINUX - kasutati FAT-andmekandjatel, USB live-süsteemides jm
- Loadlin - käivituseks DOSist/Windowsist (asendas käigupealt DOSi süsteemituuma Linuxiga)
Täiendavad parameetrid:
- vga - graafikarežiimi etteandmine, võib olla 10- 8- või 16-süsteem, samuti normal, ext või ask
- apm - automaatne voooluhaldus. apm=off või noapm võib parandada ühilduvust
- init - käivitab initi esimese protsessina
- panic=number - eemalasuva süsteemi puhul teeb lolliksmineku järel N sekundi järel restardi ja proovib uuesti
- single, 1 - ainult root
- 2,3,4,5 - tavalised käivitustasemed
- ro või rw - juurfailisüsteemi haakimine kas ainult lugemiseks või mõlemat pidi
- mem=xxxM - piirab mälu kasutust xxx MB-ga. Kasuks katkise mälukivi jälitamisel.
Käivitus: 1. Vool sisse 2. BIOS käivitub ja otsib laadesektori 3. BIOS laeb vastavalt käivitusjärjekorrale laadesektori 4. MBR 5. alglaadur 6. kasutaja valib või tuleb vaikimisi valik 7. Loeb kerneli, kernel käivitub, käivitab seadmed, laeb vajalikud moodulid, otsib initrd, laeb selle ja haagib juurfailisüsteemi 8. /sbin/init - PID 1 9. /etc/inittab ja init-skriptid (Debianil /etc/init.d/rcS ja RH-l /etc/rc.d/init.d/rc.sysinit). 10. juursüsteemi kontroll, vajalikud moodulid, kohalike FS-ide haakimine, võrguliideste käivitus 11. vaikimisi käivitustase (vastava taseme skriptide abil) 12. login
SystemD
Sys V initi asemele loodud süsteem, osaliselt käsuühilduv
Peaks olema efektiivsem ja paralleelsem, vähem sõltuvusi, peaks võimaldama rohkem prioriteete - eeldatavasti annab kiirema algkäivituse.
käivitub sümlingist /sbin/init. Kokku üle 60 jupi, tähtsamad on
- systemd - süsteemi- ja teenustehaldur
- systemctl - olekuhaldur
- systemd-analyze - annab statistikat
- journald - vaikimisi logimissüsteem, võimalik asendada tavalisematega (rsyslog, syslog-ng)
- consoled - konsoolideemon, peaks asendama virtuaalterminalide süsteemi
- networkd - võrgudeemon
- logind - sisselogimisdeemon, toetab ka X-i logimishaldureid
Veel omadusi:
- kogu logimine journali kaudu
- teenused ei sõltu käivitustasemetest
- komponendigrupid (Cgroup) - peaks asendama käivitustasemeid
- täpsem prioriteedihaldus - varem ainult nice/renice
init-skriptide asemel üksused (unit). Asukohad kasvava prioriteediga:
- /usr/lib/systemd/system - distroga kaasatulnud üksused
- /run/systemd/system - jooksvalt (töö ajal) loodud üksused
- /etc/systemd/system - admini poolt hallatavad, kõrgeim prioriteet
Põhitüübid (laiendiks on sama nimi - näiteks .socket):
- service - süsteemiteenus
- socket - protsessidevahelise kommunikatsiooni element
- target - üksuste grupp
- mount - haakepunkt
- automount - automaatne haakepunkt
- device - kerneli kasutatav seadmefail
- scope - väljast loodud protsess
- timer - taimer
- path - failisüsteemi fail või kataloog
- slice - hierarhiline üksustegrupp
- snapshot - systemd halduri olekutõmmis
- swap - saaleala või -fail
SysV käivitustasemete asemel on märgid (target), sisuliselt vastavad käivitustasemetele (NB! Systemd on RedHati leiutis, seega sama süsteem):
- 0 poweroff.target masin seisma
- 1 rescue.target ühekasutaja paranduskeskkond
- 2 multi-user.target tekstirežiim ilma võrguta
- 3 multi-user.target tekstirežiim võrguga
- 4 multi-user.target nagu 3
- 5 graphical.target graafiline režiim, võrk
- 6 reboot.target restart
Märkide nimedel on ühilduvuse jaoks aliased runlevel0.target ... runlevel6.target
Sõltuvuste ja järjekorra haldus - wants ja requires
Näiteks graphical.target-is: Requires=multi-user.target After=multi-user.target Wants=display-manager.service
Algkäivitus üldiselt sama, aga GRUB käivitab /sbin/init kaudu systemd . default.target on sümlink multi-user.target-ile, see omakorda käivitab graphical.target-i.
Ubuntu 16.04 ja Mint 18 kasutavad esimeste LTS-idena vaikimisi systemd-d.
Upstart - vahepeal pakutud alternatiivne süsteem - praegu kipub jääma teiste varju (kas jäädi SysV juurde või mindi systemd-le). ChromeOS kasutab seda. Asünkroonsus, lihtsus, tagasiühilduvus, laiendatavus.
Käivitustasemete haldus
Buutimine single-userisse: GRUBist 1, s või S!
runlevel -käsk annab Debiani perekonnal reeglina vastuse N 2 - graafiline keskkond, eelmine tase puudub Turvamoment - kui näitab 1 2, siis tuleb veenduda, et eelnev single-user oli ikka seaduslik... teine variant on who -r
SystemD puhul systemctl get-default (annab tüüpiliselt multi-user.target). Jooksva taseme näitab systemctl list-units --type=target
Vaikimisi käivitustase:
- SysV - /etc/inittab-i rida id:X:initdefault: , kus X on käivitustaseme number
- SystemD - muuta ära soovita sümlink: ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
Taseme vahetus:
- SysV - init number (või telinit, mis on ajalooliselt jäänud sümlink)
- SystemD - systemctl isolate graphical.target (või runlevel5.target)
Masina sulgemine:
SysV süsteemides halt -p või shutdown: -H - peatamine -h - peatamine JA/VÕI sulgemine -P - sulgemine -r - restart -k - annab teate ja peatab sisselogimised -c - viivitusega sulgemise tühistus now - kohe +10 - 10 minuti pärast 12:02 kellaaeg N: shutdown -r +15 "Veerand tunni pärast restart!"
SystemD puhul - systemctl halt, poweroff või reboot
Protsessitapmine - kill ja killall
-9 SIGKILL - kohene tapmine -15 SIGTERM - viisakas palve lõpetada (vaikimisi variant) -1 SIGHUP - hangunud protsessi taaskäivitus (konfi uuestilaadimine). ka kill -HUP PID ...
Alternatiivsüntaks: kill -s SIGHUP|SIGKILL|SIGTERM
SystemD puhul saab tappa grupimärgise (group tag) järgi.
Käivituse logimine
SysV: dmesg-käsk pluss /var/log/messages või /var/log/syslog
SystemD: journalctl --list-boots , sealt valida hirmpikk buudikorra ID ja siis journalctl -boot=akansgargnaghragegegaegte käimasolev käivitus on 0, eelmine -1 jne, kuni -34
käimasoleva käivituse teated saab kohe journalctl -b abil!
Pakihaldus
Debiani sõltuvuste eiramine: --force-depends RPM-i pikas nimes ei ole kirjas arhitektuuri! RPM-i kohalikke pakkide signatuurikontroll: rpm -K *
FHS - Filesystem Hierarchy Standard
Staatiline linkimine - teek kopeeritakse programmi - suur programm, raske uuendada (teek tuleb uuendada kõigis programmides), aga sõltuvusi pole Dünaamiline linkimine - programmi paigutatakse viited teekidele - väike programm, lihtne uuendada, aga sõltuvused võivad probleeme tekitada
.so. -failid on jagatud teegid (shared object)! Dünaamiline linkur on ld.so (vahel ld-linux.so), konf on /etc/ld.so.conf
teegid: /lib ja /usr/lib64 (või lib 32 puhul)
järjest linkimine sümlinkidega - vastavalt kes millist teegi versiooni vajab (tegelikult on lõpus üks ja sama teek)
teekidest sõltumist näitab ldd - ldd passwd
ldconfig korrastab viited teekidele (käib läbi /lib-i, /usr/lib/64 ja muud /etc/ld.so.conf-is määratud kohad). Järjestatud nimekiri läheb /etc/ld.so.cache-isse
süsteemimutuja LD_LIBRARY_PATH teekide leidmiseks - määrata saab: export LD_LIBRARY_PATH=/bla/bla/bla (võib panna /etc/profile või ~/.bash_profile -faili). Turvarisk!
Debiani pakid
dpkg, apt-*, synaptic, aptitude
pakiinfo - dpkg --info pakinimi
Pakis on juhtinfo arhiiv, milles on
- conffiles - häälestus peale installi
- control - metaandmed sõltuvuste kohta
- md5sums - kontrollsummad
- postinst - skript, mis käivitub peale installi
- prerm - skript, mis käivitub enne eemaldamist
- postrm - skript, mis käivitub peale eemaldamist
Lisaks juhtinfole on pakis info nime, haldaja, arhitektuuri ja sõltuvuste kohta.
Paigaldus - dpkg -i või --install
Eemaldamine - dpkg -r või --remove, või koos konfiga -P ehk --purge
--force (ohtlik!), --force-reinstreq sunnib reinstalli, --force-conflicts eirab konflikte, --force-depends eirab sõltuvusi, --force-remove-essential eemaldab jõuga
Nimekiri - dpkg -l või --list (toetab metamärke)
Paigaldatud failide nimekiri - dpkg -L või --listfiles
Lühem variant --info-st on --status
Failiotsing pakihalduri kaudu: dpkg -S või --search
Algne konf uuesti: dpkg-reconfigure
apt-get - failide paigaldus eemalt (dpkg on kohalik). /etc/sources.list ja /etc/sources.list.d/ (iga varamu jaoks eraldi fail)
Konfirea näide: deb http://cdn.debian.net/debian/ wheezy main
Apti puhvri värskendus: apt-get update
Puhvrioperatsioonid: apt-cache
- search otsitav - show pakinimi - info paki kohta - showpkg pakinimi - täpsem tehniline info
NB! apt-get install uuendab olemasoleva paki! Kui tahta ainult uuendamist (lisada ei tohi), siis --only-upgrade
Uuendamine: apt-get upgrade (turvauuendused, veaparandused ja täiendused) või apt-get dist-upgrade (karmim uuendus, võib ka eemaldada)
Eemaldamine: apt-get remove või purge (viimane teeb koos konfiga)
= Red Hati pakid
RPM võib tähendada nii pakivormingut, käsku kui andmebaasi!
RPM andmebaas kasutab BerkeleyDB vormingut ja asub kataloogis /var/lib/rpm . Kasutajad saavad teha päringuid, muuta saab vaid root
Segiläinud andmebaasi taastamine: rpm --rebuilddb
ainult üks kasutaja korraga, teised saavad "transaction lock"-teate
RPM pakk sisaldab
- pakitud binaarrakendust
- nime ja versiooni
- loomise aega ja kohta (host)
- lühikirjeldust
- kontrollsummasid ja sõltuvusteinfot
Lisaks on olemas ka lähtekoodi-RPM-id
Pakil on lühike nimi (sisuliselt nimi ise) ja pikk nimi (nimi-versioon-väljalase.distro)
Näiteks rpm -q kernel näitab kõigi paigaldatud kernelipakkide infot, täpsustamiseks tuleb anda pikk nimi
Ehtsuse tagamiseks kasutatakse MD5 kontrollsummat ja PGP või GPG signatuuri.
kontroll: rpm -K pakinimi või rpm --checksig pakinimi
install: rpm -ivh (install, teavitused, progressinäidik)
failikonfliktide eiramine: --replacefiles või --force
pakisõltuvuste eiramine: --nodeps
paki failide kontroll: rpm -V (--verify)
Tulemus näidatakse 9-kohalise koodina:
- S muutunud maht
- M muutunud mood
- 5 muutunud MD5
- D seadmenumber ei klapi
- L probleem kataloogiteega
- U muutunud kasutaja
- G muutunud grupp
- T muutunud ajatempel
- P muutunud failiomadused
Kõigi failide kontroll: rpm -Va (või ka ainult konfifailid: -Vac)
Värskendus (freshen) vs uuendus (upgrade)
rpm -U uuendab - installib uued versioonid ja kõik nende jaoks vajaliku, samuti nime järgi ka uued failid rpm -F värskendab - ei installi uusi pakke
Eemaldamine - rpm -e või --erase (kui on mitu versiooni, siis lisada --allmatches !!!)
päring - rpm -q , pikema infoga -qi
faililisting - rpm -ql
info paigaldamata paki kohta - qilp (lisaks --changelog ???)
Paki sõltuvused - -R (--requires)
YUM - kui ei taha kinnitust, siis -y (yum -y install blabla)
allalaadimine ilma paigalduseta: panna y/n valikus d, kasutada yumdownloader-it või yum install --downloadonly
yumdownloader:
- --source - SRPM
- --urls - kuvab URLid
- --resolve - kaasab sõltuvused
- --destdir - kataloog
update, check-update (nii faili kui kogu süsteemi jaoks)
yum list nimi - otsing nime järgi
saab otsida ka üldist mõistet - yum search "web server"
Konf: /etc/yum.conf, varamud /etc/yum.repos.d/
Varamu konfi näide:
[updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority
updates/$releasever/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink? repo=updates- released-f$releasever&arch=$basearch enabled=1 metadata_expire=6h gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora- $releasever-$basearch skip_if_unavailable=False
yum --enablerepo varamunimi
Käsurida
Erinevad käsukestad - kasutaja käsukesta näeb mh /etc/passwd vastavalt realt
Sisselogimise keelamiseks panna kestaks /bin/false (või üldiseks keelamiseks luua fail /etc/nologin)
Käsukesta eri operatsioonid - täitmine (execute) vs pöördumine (sourcing)
Täitmine (programmid) ./skript või sh skript Pöördumine (profiilifailid; sisuliselt sisselugemine) . skript või source skript
Profiilifailid:
- /etc/profile - globaalne konf, loetakse kesta avamisel esimesena
- ~/.bash_profile - kasutaja sätted; see omakorda kutsub välja ~/.bashrc
NB! kui ~/.bash_profile puudub, otsitakse ~/.bash_login, kui ka seda pole, siis .profile
- ~/.bash_logout - peamine funktsioon on ekraani tühjendamine (clear) välja logides
Sisselogimiseta sessioonid (admini su-käsk) loevad ainult .bashrc, Red Hat loeb enne ka globaalse /etc/bashrc
väliskäsud sisekäsud käivitatavad skriptid aliased funktsioonid
Reapoolitus - \
Erisümbolid: ~ - jooksva kasutaja kodukataloog \ - eirab järgmist sümbolit / - kataloogieraldaja $ - muutuja ? - üks sümbol ' - absoluuttsitaat ` - asendus " - pehme tsitaat
- - 0-N sümbolit
& - taustaprotsess && - käsueraldaja - kui esimene käsk õnnestub, täida teine | - toru || - käsueraldaja - kui esimene käsk ei õnnestu, täida teine
- - käsueraldaja
[] - vahemik > - suunamine < - suunamine
Eelmise käsu väljundstaatuse kuvamine - echo $?
env - keskkonnamuutujad set (või shopt) - kesta muutujad ja seaded
kataloogitee eraldajateks on koolonid $HOME loetakse /etc/passwd-ist koju viib cd, cd ~ või cd $HOME
Ettevaatust ~kasutaja vs ~/kasutaja -ga! root logini puhul viib ~kasutaja tema kataloogi, ~/kasutaja aga kataloogi /root/kasutaja!
Ajalugu - $HISTFILE, enamasti viitab ~/.bash_history peale
Veel: $HISTCMD näitab käsu järjenumbrit ajaloos, $HISTCONTROL väärtus 'ignoredups' eirab korduvaid käske, 'ignorespaces' eirab tühikuga algavaid ridu. $HISTFILESIZE näitab ajaloo pikkust (vaikimisi 500 käsku).
set -o valik - valiku SISSElülitamine set +o valik - valiku VÄLJAlülitamine (unset)
Alates bash 2.0-st on shopt-käsk, mis on set-i ülemhulk
Valikud:
- emacs või vi
- history (vaikimisi sees)
- hashall (vaikimisi hashib, et saaks korrata)
- monitor - taustaprotsessid eraldi gruppi
- noclobber - vaikimisi väljas, keelab > suunamisega faili ülekirjutamise
- noexec - skripti kuivkäivitus
- notify - teatab kohe lõppenud töödest
- verbose - kogu väljund ekraanile
Tab Tab- käsu lõpu pakkumine!
Failisüsteem
Failinimedes võib olla sisuliselt iga sümbol, ka & või \ (mõnel juhul tuleb olla ettevaatlik)
NB! /root ja /home ei ole mõnede serverite puhul kohustuslikud (ei logita sisse)!
/opt vs /usr/local - /opt on vaid kohalikuks kasutamiseks, jagatud kohalik kraam käib /usr/local-isse
usr (tsitaat): ---> bin - Contains user commands include - Contains header files for C programs lib - Contains libraries local - Contains local/sharable programs sbin - Contains nonessential system binaries share - Contains data/programs for multiple architecture <---
rm -f * ei kustuta peidetud (punktiga) faile
ls (tsitaat)
---> ls /home/user - Shows a plain listing of that directory. ls –a - Lists all files, including hidden . files. ls –d foo - Lists just the directory called foo, not the contents. ls –i - Lists the inode number for the targetfile or directory. Inodes are the way Linux represents a file on disk and are discussed later in the section “Copying Files and Directories.” ls –l - Shows permissions; links; and date, group, and owner information. Permissions dictate who can access the file and are discussed in detail in Chapter 10, “Permissions.” ls –lh - Shows human-readable output of file sizes, in KB, MB, and GB, along with file details. <---
file failinimi - info faili kohta
file /etc/* | grep empty - leiab tühjad failid!
touch - loob tühja faili või muudab olemasoleva ajatemplit
-t ajatempel N: touch -t 201603291200 eksam.txt
-r fail1 fail2 fail1 ajatempel kopeeritakse fail2-le
cp - mõned erivõtmed:
-d - ei järgi sümlinke, vaid kopeerib need
-l - kõva link allikfailile
-r ja -R - rekursiivne
-s - sümlink allikfailile
-u - uuendab koopiat vaid siis, kui seda ei ole olemas või see on vanem (ajakontroll)
-x - eirab haagitud failisüsteeme
dd - kettakoopia - dd if= of=
MBR varundamine dd abil: dd if=/dev/sda of=/root/MBR.img count=1 bs=512 (üks kord, et mitte tsüklisse minna; blokisuurus 512 baiti) taastamine: dd if=/root/MBR.img of=/dev/sda count=1 bs=512
mkdir - ahelloomine: mkdir –p /dir1/dir2/dir3/dir4
rmdir suudab samamoodi kustutada (kui on tühjad): rmdir –p /dir1/dir2/dir3/dir4
tegelikult saab kustutada ka koos failidega: --ignore-fail-on-non-empty
Otsing
locate - andmebaasiotsing; baasiuuendus updatedb, konf /etc/updatedb.conf -i - tõstutundetu locate otsib otsingustringi täis-kataloogiteest ja tagastab ka osalised väärtused (N. locate kaka - /home/kakaduu/blabla)
find - otsib päris failisüsteemist. Üldkuju:
find tee -valikud argumendid
Valikud (tsitaat):
--->
group - Based on files belonging to the specified group
newer - Based on files more recent than the specified file
name - Based on files with names matching a case- sensitive string
iname - Based on files with names matching a non-case-sensitive string
user - Searches for files belonging to the specified user
mtime - The modify time; used for finding files x days old
atime - Based on the number of days since last accessed
ctime - Based on the number of days since the directory entry was last changed
<---
Saab kombineerida skriptiks: find /home –iname *.mp3 –exec cp –f {} .\;
which - näitab programmi täit kataloogiteed
which -a nimi näitab kõiki, kui on mitu (muidu ainult esimesena leitu)
whereis - sarnaneb which-iga, aga rohkem infot
-b—Searches for binaries -m—Searches for manual entries -s—Searches for sources -u—Finds unusual or improperly documented entries
type käsk - näitab, kas on sisekäsk, alias vmm
type -a käsk - kõik variandid (nagu which)
Lingid
Sümlingi õiguste muutmise asemel muudetakse sihtfaili õigusi!
Varundamine
tar - palju faile kokku
tar -t - listing
cpio - sarnaneb tar-iga, ei paki kokku. Kasutavad näiteks initramfs ja RPM
-o (out) või --create - loob arhiivi
-i (in) või --extract - avab
-p või --pass-through - sisuliselt cp -r ehk kopeerimine ühest kohast teise
gzip ja bzip2, lisaks on veel xz (efektiivne, aga mäluõgard): kokku: xz, xz -z või xz --compress lahti: unxz, xz -d, xz --uncompress või xz --decompress
Teksti S/V
stdin, stdout, stderr - vastavalt kirjeldaja numbbrid 0,1,2 ja seonduvad failid /proc/self/fd0, fd1 ja fd2
<, >, >>
Võimalus "saata vead jalust ära" - find blabla 2> /dev/null | more või ka find blabla > andmed.txt 2> vead.txt
Kogu väljundi nullimine: find / -iname *.txt > /dev/null 2>&1 (stout nulli ja stderr stdout-i)
less toetab enamikku vi navigeerimiskäskudest
suunamine vs toru - suunamine kasutab faile, toru kasutab programme
Järjestikkäsud
käsk1; käsk2; käsk3 - kolm teineteisest sõltumatut käsku käsk1 && käsk2 - käsk2 täidetakse, kui käsk1 lõpetas edukalt käsk1 || käsk2 - käsk2 täidetakse, kui käsk1 ei õnnestunud (varuvariant või veateade)
käsuasendaja - backtick ´ export MUUT=`date`
tee - võimaldab jagada stdin-i voo kaheks - ühte töödeldakse, teine saadetakse edasi (või saadetakse korraga nii faili kui ekraanile - või töödeldakse infot paralleelselt alginfo logimisega)
N: find / -iname *.txt | tee findit.out
xargs - käsu argumentide võtmine eestpoolt
NÄIDE NETIST: leiab .c -laiendiga failid ja kustutab need ära
$ ls one.c one.h two.c two.h
$ find . -name "*.c" | xargs rm -rf
$ ls one.h two.h
sort - võtab stdin-ist või failist ja väljastab stdout-i või faili -k number - mitmenda sõna/elemendi järgi (vaikimisi on esimene) -n - arvuline (tavaline sorteerib tekstina - 1,11,12,2,21...)
nl - nummerdab read
wc - sõnaloendur -l - loeb ridu -w - loeb sõnu -c - loeb tähemärke (baite)
expand - asendab tabulaatorid n tühikuga (vaikimisi 8) -i - ainult rea alguses (enne esimest mittetühikut) -t arv - tühikute arvu määramine
cut - vertikaallõige failist (veergude järgi)
cut -c 5-10 failinimi - kõigi ridade 5.-10. tähemärgid
paste - näitab faile kõrvuti veergudes
join - liidab failid ridupidi, kui ridade alguse võtmeveerud on samad
uniq - eirab korduvaid elemente (soovitav on enne sortida!) -d - kuvab ainult read, mis on korduvad (ühekordselt) -D - kuvab ainult read, mis on korduvalt (kõik esinemised)
head (-n number) ja tail (-n number)
eriti aga tail -f /var/log/messages (-f on --follow - jälgib jooksvalt ka muudatusi!)
split - suure faili jupitamine (vaikimisi nimed xaa, xab, xac, xad...) -b suurus -l ridade arv (vaikimisi 1000!!)
N: split -b 650M kali-linux-1.0.6-amd64.iso
cat, tac
od - octal dump, suudab aga kuvada ka muid süsteeme:
-a - nimi
-o - kaheksandarv
-d - kümnendarv
-x - kuueteistkümnendarv
-f - ujukomaarv
Võidakse küsida binaarfailide vaatamise võimalust - suht ainus ongi od. Kui 'cat binaarfail' on terminali segi ajanud, tuleks anda reset-käsk
pr - printimiseks vormindamine
fmt - pikkade ridade lühendamine
tr - märgiteisendused: tr 'A-Z 'a-z' < commands.txt või tr [:upper:] [:lower:] < commands.txt
tr ei suuda lugeda failist, ainus võimalus sisendit saada on suunamine
sed - lihtne näide sed s/bob/BOB/ file1
mitu asendust: sed –e s/bob/BOB/g –e s/BOB/snuffy/g file1 (saab ka semikoolonitega)
kui tühikud on sees: sed 's/is not/is too/g' file1
asendused saab panna ka eraldi faili, sel juhul sed -f scriptfile targetfile
grep
Tsitaat: ---> e grep command has many useful options, including -c This option shows only a numeric count of the matches found, no output of filenames or matches. -C # - This option surrounds the matched string with X number of lines of context. -H - This option prints the filename for each match; it’s useful when you want to then edit that file, as well as being the default option when multiple files are searched. -h - This option suppresses the filename display for each file and is the default when a single file is searched. -i - This option searches for the pattern with no case-sensitivity; all matches are shown. -l - This option shows only the filename of the matching file; no lines of matching output are shown. -L - This option displays the filename of files that don’t have a match for the string. -w - This option selects only lines that have the string as a whole word, not part of another word. -r - This option reads and processes all the directories specified, along with all the files in them.-x—This option causes only exact line matches to be returned; every character on the line must match. -v - This option shows all the lines in a file that don’t match the string; this is the exact opposite of the default behavior. <---
egrep = grep -E fgrep = grep -F
Protsessid
ps -a - kõigi kasutajate protsessid -u - kasutaja protsessiinfo -x - ei näita tty-d
POSIX/UNIX - kriipsuga, BSD - ilma, Linux toetab mõlemaid
ps -aux ja ps -ef on suht sarnased (võidakse küsida)
block - infokogus kettal (enamasti 512B) buffer - infokogus põhimälus
free - vaba mälu (tasub lisada -lh)
uptime
protsessi signaalid SIGINT 2 katkestus (ctrl-C) SIGHUP 6 lõpeta ja alusta uuesti SIGKILL 9 lõpeta SIGTERM 15 lõpeta (pehmem) SIGSTP 20 terminali peatamine (ctrl-X) - sisuliselt paus, saab fg-ga jätkata SIGSTOP 23 peata täitmine (jõuga)
Suuremate võimalustega - pkill
jobs + - viimane töö, bg/fg - - eelviimane (muutub viimaseks, kui praegune lõpetab)
saab viidata ka %töönumber
Prioriteedid - vaikimisi 0, madalaim 19, kõrgeim -20. Alla 0 saab anda ainult root
nice ja renice
top - vaikimisi interaktiivne, aga saab anda ka parameetreid
Käimajätmine peale väljalogimist - nohup käsk . Kindlam on teha screeniga!
Screen - käima, Ctrl-a, n järgmine aken, Ctrl-a, p eelmine aken
Ctrl-a, " näitab akende listi
Akna lahtihaakimine - Ctrl-a, d list - screen -ls Uuesti haakimine - screen -r PID
Ctrl-a, x - ekraanilukk
vi
3 režiimi
- käsurežiim
- sisendrežiim
- ex-režiim - otsingud, aknaoperatsioonid
Alguse staatuses Top/Bot/All - kas näidatakse algust, lõppu või kogu faili
i - redigeerimine jooksvas positsioonis I - redigeerimine jooksva rea algusest a - redigeerimne jooksva positsiooni järelt (append) A - rea lõpust O - uus rida jooksva ette
Tagasi käsurežiimi - Esc
käivitades saab anda kohe reanumbri: vi +25 minufail.txt + tähendab tegelikult vi käsku (25 - mine sellele reale)
Nooled: h - left j - down k - up l - right
Ctrl-f - lk edasi Ctrl-b - lk tagasi Ctrl-d - pool edasi Ctrl-u - pool tagasi
G - faili lõppu või reale (15G)
u - undo
- e! tühistab kõik muutused
Salvestus: :w Salvestus ja väljumine: :wq või :x (või käsurežiimis ZZ) Väljumine salvestamata: :q!
cw - sõna muutmine
c$ - muutmine kursorist rea lõpuni
r - tähe muutmine
R - rea muutmine kuni Esc-vajutuseni
x - kustutus (Del) X - kustutus (Bksp) dw - sõna vasakult dd - rida D - rea lõpuni dL - ekraani lõpuni
yy - rea kopeerimine
5yy - 5 rea kopeerimine (blokk)
yw - sõna
3yw - 3 sõna
p - kleepimine kursorist vasakule
P - paremale
tavaline on nimeta puhver, lisaks on veel 26 (a-z) nimega puhvrit. Puhvri väiketäht kirjutab selle üle, suurtäht lisab sinna
Jutumärgid, puhvri nimi, käsk - näiteks "ayy, "ap
Otsing käsurežiimis: ?otsitav, järgmine n, eelmine N
Asendamine nagu sed-is, ex-režiimis - samalt realt: :s/bob/BOB/, kõigi puhul :s/bob/BOB/g (global) - kogu failist: :%s/bob/BOB/, kõigi puhul :%s/bob/BOB/g (global)
Regulaaravaldiste otsimine - / N: /[tT][hH][eE]
vi sätted: /etc/vimrc ja kohalik .vimrc
NB! Tsitaat raamatust:
--->
For some reason, LPI really wants you to know the options for setting numbers, including the shortcuts for how options are set. Examples of how you could set the numbers option on and off include
- set number—Turns on line numbers (screen only).
- set nonumber—Turns the number option off.
- se nu—This is the shortest string that turns this option on, and putting no in front of the option turns that option off.
<---
Väliskäsud: :! ls -l
Ridade ühendamine - kursor esimesele reale, J (tõmbab järgmise samale reale)
- split - horisontaalne
- vsplit - vertikaalne
Kahe akna vahel liikumine Ctrl-w 2x või Ctrl-w ja vastav nool
spliti lõpetamine - :only (selles aknas, mida soovitakse jätta)
split käsurealt - hsplit vim -o file1 file2, vsplit vim -O file1 file2
faili avamine nummerdatud ridadega: vim +set number” mytestfile.txt faili avamine koos string1 esiletoomisega (highlight): vi +/string1 file
vimdiff
Kettahaldus
Vanasti 4 esmast jaotist, ühe sai teha laiendatuks ja sinna N loogilist. Idee poolest võimalik lõputult loogilisi jaotisi, ehkki soovitus on mitte üle 12
Buudifailid peavad olema esmasel.
Saaleala tööjaamadel 1-2 x RAM (eriti läpakatel talveune tõttu), mõnedel serveritel ei kasutata üldse.
fdisk
MBR-ketaste jaoks. Üldkuju: fdisk /dev/sda (vmm) p - jaotiseinfo n - uus jaotis d - kustutamine t - tüübi muutmine w - muudatuste salvestamine
uue loomisel on kõige lihtsam määrata suurus (mitte sektoripiirid jms) +väärtus; nt +500M, +1.5G
fdisk -l - näitab kohe infot
gdisk
uute UEFI/GUID/GPT ketaste jaoks (pole 2TB ülempiiri ega 4 jaotise piirangut - toetab kuni 128-t jaotist).
gdisk -l /dev/sda - info
MBR paigutatakse ketta esimesse loogilisse blokki, GPT teise!
gdisk käitub muidu üsna sarnaselt fdiskile
parted ja gparted - märkus: parted ei pane paika jaotise tüüpi!
FS tüübid: - ext* - udf - DVD - vfat - FAT32 - nfs - Sun-i Network Filesystem, vaikimisi kõigil Linuxitel - smb - Samba/CIFS - xfs - SGI - ReiserFS - btrfs - uus tulija
NB! ext2 -> ext3 ei vaja vormindamist!
inode - iga faili kirje, ei sisalda aga nime (vt ls -i esimene number). Vt ka stat failinimi
debugfs-käsk laseb faili detailide kallale
df -i näitab inode-ide kasutust. Tuleb püüda tasakaalu poole failide suuruse ja mahu vahel.
FS loomine: mkfs -t ext4 /dev/sda1 (mkfs on tänapäeval link mkfs.ext4-le)
mke2fs - ext2 mkdosfs - DOS/FAT
mkswap /dev/sda2
fsck
ka e2fsck, dosfsck, reiserfsck
buudi ajal võtab info /etc/fstab-ist
Parameetrid: -A - üks pikk kontroll (mitte etapiline) -C - edenemisnäidik (###########) -N - kuivalt (simulatsioon) -V - lisainfo -a - ei küsi ja parandab automaatselt
tune2fs - saab muuta sätteid, näiteks vaikimisi 20 käivitust iga fsck-kontrolli kohta.
tune2fs –c 0 /dev/sda1 - lülitab kontrolli välja?
tune2fs -e määrab, mida tehakse FS vea leidmisel
tunefs -g võimaldab määrata kettal root-ile määratud osa (Kui kõik muu on täis, saab tema sisse)
XFS utiliidid
xfs_info xfs_check xfs_repair
FS silti ja UUID-d näeb blkid-käsuga (root)
/etc/fstab /etc/mtab mount cat /proc/mounts
fstab-i sisu:
- seade
- haakepunkt
- tüüp
- valikud (rw,suid,dev,exec,auto,nouser,async)
- dump - kas dump kaasab võ ei, enamasti 0 (ei)
- fsck - kontrollijärjekord
Käsitsi haakimine: mount –t type –o option device mountpoint
umount
du -h - inimkeelne -s - summeerib -x - ainult kohalikud FSid (mitte võrk jms)
df -h -i - inode-id -k - kB -l - ainult kohalikud
df näitab ketta statistikat, du ei näita!
quota
quotaon quotaoff quotacheck edquota
usrquota, grpquota (fstab)
lisamiseks tuleb panna vastavale FSile fstab-is usrquota ja grpquota ja haakida FS uuesti: mount –o remount,rw /data
edquote
-u kasutaja
-t - "armuaeg"
repquota -a - kogu süsteemi raport
Õigused
ugo
chmod -c - muutunud failid -h - sümlink, mitte selletagune fail -f - ei õienda (force) -R - rekursiivne
Kui panna kolmest numbrist vaid üks, siis läheb see "others" alla, omanik ja grupp saavad nulli!
SUID - lubab kasutajatel käitada programmi omaniku (enamasti root) õigustes - chmod 4xxx failinimi SGID - kataloogi puhul annab õigused kõigile sinna hiljem lisatud failidele, faili puhul annab omanikugrupi õigused - chmod 2xxx fail/kataloog sticky - ainult faili ja kataloogi omanikud (pluss root) saavad faile kustutada - chmod 1xxx kataloog
Eribitid summeeruvad nagu tavalised - näiteks SUID+SGID = 6xxx. Tekstina u+s, g+s
SUID/SGID on võimalik turvarisk
Näide seaduslikust kasutusest: chsh võimaldab kasutajal kesta muuta, kui talle pannakse SUID (muidu ei saa /etc/passwd -faili muuta)
Otsing õiguste järgi:
find /usr/bin -perm 777 find / -perm -4000
umask
Vaikimisi 0022 - aga eribitte ei panda kunagi vaikimisi, seega sisuliselt 022 Muutmine: näiteks umask 027
chown
ka owner: ja :group - muudavad ainult üht
chgrp
Mõlematel on -R parameeter
NB! x-õigus kataloogil annab ligipääsu! r annab listingu
JÄTKUU....