$linux/kruzok
Hodina 0 · Blok 1

Výber Linuxu

Pozrieme sa, aké distribúcie existujú, vyskúšame si ich priamo v prehliadači a každý si vyberie tú svoju.

Teória 20 min Prax 30 min Úloha 10 min

0.1 Prečo si vyberať?

Linux nie je operačný systém je to iba jadro(kernel). Keď o rozšírime o programy GNU stane sa s neho operačný systém ktorý voláme GNU/Linux. Ale pre jednocuchosť budeme chápať pod linuxom jeho distribúcie.

Tri hlavné rodiny, ktoré dnes stretneš:

  • Debian / Ubuntu / Mint - balíkový systém apt, najviac učebných materiálov, veľmi stabilné.
  • Fedora / RHEL - balíkový systém dnf, novšie verzie softvéru, používa ho veľa firiem.
  • Arch - balíkový systém pacman, pre pokročilých, všetko si skladáš sám.

Na krúžku bude každý pracovať na vlastnej VM s distribuciou, ktorú si vyberie. Neexistuje jedna správna voľba - dôležité je, aby ti vyhovovala, pretože na nej stráviš celý kurz.

Čo si všímať pri výbere
  • Desktop prostredie - ako systém vyzerá a ovláda sa (GNOME, KDE, Cinnamon, XFCE...).
  • Stabilita vs novinky - Debian a Mint dávajú overené verzie, Fedora novšie.
  • Balíkový systém - apt alebo dnf, oba sa v kurze naučíš.
  • Podpora a komunita - čím väčšia, tým ľahšie nájdeš odpoveď na problém.

0.2 Traja kandidáti

Na krúžku si môžeš vybrať z troch distribúcií. Všetky sú na učenie výborné, líšia sa prostredím a filozofiou:

DebianFedoraLinux Mint
Balíkový systémaptdnfapt
Predvolené prostredieGNOMEGNOMECinnamon
Stabilitaveľmi stabilnánovšie verzieveľmi stabilná
Hodí sa preuniverzálne použitiekto chce novinkyzačiatočníkov, prechod z Windows

0.3 Vyskúšaj si ich - distrosea

Nemusíš nič inštalovať. Na stránke distrosea.com beží Linux priamo v prehliadači (WebVM) - klikneš a o pár sekúnd vidíš plný systém.

U každého z troch kandidátov vyskúšaj:

  1. Nájdi a otvor terminál.
  2. Spusti cat /etc/os-release a pozri, ktorá verzia systému beží.
  3. Poobzeraj sa po pracovnej ploche - páči sa ti, ako sa ovláda?
distrosea - webový terminál
user@debian:~$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" # na Fedore uvidíš "Fedora Linux ...", na Minte "Linux Mint ..." user@debian:~$
Tip pri rozhodovaní
Nie si si istý? Zvoľ Debian alebo Mint - obe sú veľmi stabilné a máš k nim najviac návodov. Fedoru zvoľ, ak chceš skúsiť novšie verzie softvéru a balíkový systém dnf.

0.4 Rozhodnutie

Na konci hodiny sa každý rozhodne a zapíše si svoju voľbu. Domov si stiahne ISO obraz svojej distribúcie z oficiálnej stránky: debian.org, fedoraproject.org alebo linuxmint.com.

Pozor na dáta
ISO obraz má 2-4 GB. Ak nemáš rýchly internet doma, nič sa nedeje - ISO stiahneme spolu na ďalšej hodine.

0.5 Rodiny distribúcií

Distribúcie sa delia na rodiny podľa toho, od koho pochádzajú. Každá rodina zdedila od svojho predka balíkový systém, štruktúru a filozofiu, takže keď spoznáš jednu, ľahšie pochopíš aj jej sesternice.

  • Rodina Debian - Debian (1993, autor Ian Murdock, jedna z najstarších, konzervatívna a stabilná, obľúbená na serveroch). Odvodené: Ubuntu, Mint, Raspbian, Kali (penetračné testovanie), Clonezilla (klonovanie diskov), RescueCD (záchrana systému).
  • Rodina Red Hat - Red Hat (1994, najstaršia komerčná, dnes pod IBM). Odvodené: Fedora, CentOS.
  • Rodina Slackware - Slackware (1993, autor Volkerding, spartánske, pre „pravých" linuxákov). Odvodené: SUSE, Slax.
  • Rodina Arch - Arch (2002, „linux na mieru", pre pokročilých). Odvodené: Manjaro, BlackArch.
  • Gentoo - (2002) všetko si kompiluješ sám, najrýchlejšie, ale najnáročnejšie na údržbu.
  • LFS (Linux From Scratch) - nie distribúcia, ale sada nástrojov na zostavenie vlastnej distribúcie.

A špeciálne účelové distribúcie:

  • Slax - beží z USB priamo v RAM.
  • Puppy a DSL - pre staré PC, DSL zvládne 64 MB RAM.
  • Zorin - moderné, pre začiatočníkov.
  • PoP_OS! - od System76, výborná podpora NVIDIA.
  • Kubuntu - Ubuntu s KDE prostredím.
  • Devuan - Debian bez systemd.
  • Hannah Montana Linux - recesia. Takýchto projektov je viac.
Pre nás
Na krúžku používame Debian, Fedoru a Mint, ale svet Linuxu je oveľa väčší a každá rodina má svoje miesto.

0.6 Desktop prostredia

Grafické prostredia (desktop) sa delia podľa frameworku - sady knižníc, na ktorej sú postavené. Dve hlavné rodiny sú QT a GTK+.

Rodina QT

  • KDE Plasma - vyzerá podobne ako Windows, prvé úspešné grafické prostredie na Linuxe, plne prispôsobiteľné kliknutím. Dnešná Plasma 6 beží na QT6, je komplexnejšia - vhodná na výkonnejšie PC.
  • LXQt - ľahké, pre slabší hardvér.

Rodina GTK+

  • GNOME - vznikol ako odpoveď na uzavretosť QT, GTK je plne open-source pod GNU/GPL, pripomína viac macOS, bez externých nástrojov ťažšie prispôsobiteľné, dnes na GTK4.
  • MATE - fork starého GNOME 2, rýchle.
  • Cinnamon - vyvíjané Mintom, využíva hardvérovú akceleráciu, pomalé na nekompatibilnej grafike.
  • Xfce - samostatné, rýchle, obľúbené na staršom hardvéri.
  • LXDE/LXQt - ľahké pre slabší HW.
Pod kapotou je to rovnaké
Samotné prostredie neovplyvňuje, čo beží „pod kapotou" - príkazy sú rovnaké v GNOME aj v KDE.
🏠 Domáca úloha
  1. Napíš 3 dôvody, prečo si vybral svoju distribúciu.
  2. Čo ťa na distrosea.com najviac prekvapilo?
  3. Ktoré desktop prostredie ti sadlo najviac a prečo?
  4. Vysvetli vlastnými slovami, čo je balíkový systém a prečo sa ním distribúcie líšia.
Hodina 1 · Blok 1

Čo je Linux a VM

Úvod do operačného systému Linux, distribúcií a virtuálnych strojov.

Teória 20 min Prax 30 min Úloha 10 min

1.1 Prečo Linux?

Linux beží na väčšine serverov na svete, v Androide, routeroch, superpočítačoch aj v tvojom smartfóne. Naučiť sa ho znamená porozumieť tomu, ako skutočne fungujú počítače.

Na tomto krúžku nikdy nebudeme len o tom, čo kliknúť. Budeme písať príkazy do terminálu, čítať výstup a rozumieť, čo systém robí. Preto je dôležité, aby sme začali správne - distribúciou, ktorá nám vyhovuje, a v bezpečnom prostredí virtuálneho stroja.

Prečo VM?
Virtuálny stroj je počítač vo vnútri tvojho počítača. Môžeš v ňom čokoľvek rozbiť a tvoj hlavný systém zostane v poriadku. Na krúžku tak budeme experimentovať bez strachu, že niečo pokazíme.

1.2 Čo je distribúcia?

Linux je iba jadro (kernel). Distribúcia pridáva k jadru programy, správcu balíkov a prostredie. Na tomto krúžku si môžeš vybrať z troch:

DistribúciaKedy ju zvoliťBalíkový systém
DebianStabilná, veľa učebných materiálovapt
FedoraNovšie verzie softvérudnf
Linux MintPriateľské pre začiatočníkovapt

1.3 Štruktúra adresárov

V Linuxe nie sú písmená diskov ako C: alebo D:. Všetko začína v root /. Pár dôležitých adresárov:

  • /home - domovské adresáre používateľov
  • /etc - konfiguračné súbory systému
  • /var - meniace sa dáta, logy
  • /usr - nainštalované programy
  • /tmp - dočasné súbory

1.4 Praktická ukážka

Spustíme terminál a pozrieme si prvý výpis. Tlačidlo copy-paste zámerne nemáme - príkazy sa naučíš písať.

student@debian: ~
student@debian:~$ whoami student student@debian:~$ pwd /home/student student@debian:~$ ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var student@debian:~$
Zapamätaj si
whoami ti povie aktuálneho používateľa, pwd (print working directory) aktuálnu cestu a ls / vypíše obsah root adresára.

1.5 GNU/Linux - prečo sa to tak volá?

Keď počuješ „Linux", väčšinou myslíš celý systém. Ale presný názov tohto systému je GNU/Linux - a za týmto spojovníkom sa skrýva zaujímavý príbeh.

Linux je iba jadro (kernel) - monolitické, teda jeden veľký program, ktorý riadi úplne všetko. Jeho rodokmeň siaha k systému UN*X: UNIX vznikol v roku 1969 v AT&T Bell Labs (autori Ken Thompson a Dennis Ritchie) a stal sa základom modernej výpočtovej techniky. Pre IBM PC ho zjednodušene skopíroval MINIX (klon UNIX) - a práve z MINIXu vyšiel v roku 1991 Linus Torvalds, ktorý napísal vlastné jadro a nazval ho Linux.

GNU je naopak slobodný projekt Richarda Stallmana - nie jadro, ale sada nástrojov a programov na prácu s OS: editory, shelly, kompilátory, debugery. Keď skombinuješ GNU nástroje + Linux jadro, dostaneš GNU/Linux - kompletný operačný systém. Mimochodom, aj moderný Android je distribúcia vychádzajúca z Linux jadra.

Prečo sa to hovorí?
Keď povieš „Linux", väčšinou myslíš celý systém - jadro aj všetky programy okolo neho. Keď chceš byť presný, je to GNU/Linux.

A čo je vlastne distribúcia? Je to jadro + GNU nástroje + správca balíkov + grafické prostredie. Presne toto ti ukáže tento krúžok.

Zapamätaj si
Linux = jadro. GNU = nástroje. GNU/Linux = celý systém. Distribúcia = jadro + GNU + správca balíkov + prostredie.

1.6 Pod kapotou: kernel a userspace

Operačný systém sa delí na dve úrovne. Keď toto pochopíš, prestaneš sa báť terminálu:

  • Kernel space - tu beží jadro. Má priamy prístup k hardvéru, spravuje pamäť, procesy, súborové systémy a sieť. Beží v privilegovanom režime (ring 0).
  • Userspace - tu bežia všetky ostatné programy (bash, systemd, sshd, prehliadač). Bežia v obmedzenom režime (ring 3) a s jadrom komunikujú cez syscalls (systémové volania).
Prečo to potrebuješ vedieť
Keď pochopíš, že tvoje príkazy bežia v userspace a o hardvér sa stará jadro, pochopíš aj to, prečo napríklad spadnutý program nezničí celý systém.

1.7 Možnosti skúšania Linuxu

Linux sa dá vyskúšať tromi hlavnými spôsobmi. Každý má svoje výhody a nevýhody - výber závisí od toho, čo chceš:

SpôsobVýhodaNevýhoda
Virtuálny strojNajmenej invazívne, všetko sa dá zmazať a začať odznovaVyžaduje výkonnejší počítač
Live USBAbsolútne neinvazívne - nabehneš z USB bez inštaláciePri „live" režime sa dáta stratia po vypnutí
DualbootPlný výkon, Linux beží natívneRiziko pri inštalácii, bootloader

Virtuálny stroj (VM)

Počítač vo vnútri tvojho počítača. Najlepšie na učenie:

  • VirtualBox - jednoduchá inštalácia, dobrá podpora, zadarmo. Skvelá voľba na začiatok.
  • VMware Workstation/Fusion - komerčné, ale výborná grafika a stabilita.
  • QEMU/Proxmox - pokročilé, ideálne na virtualizáciu, zložitejšia konfigurácia.

Live USB

Nahráš ISO na USB kľúč (napr. dd alebo balenaEtcher) a nabootuješ z neho. Absolútne nič sa na tvojom PC nezmení. Pozor: v „live" režime sa dáta po vypnutí stratia - výnimkou sú distribúcie typu Slax, ktoré ukladajú dáta priamo na kľúč.

Dualboot

Súbežná inštalácia s iným OS. Pri bootovaní si vyberieš, čo spustíš. Pozor: odporúča sa nainštalovať najprv Windows/macOS a Linux až ako druhý, pretože Windows bootloader nevie bootovať Linux - GRUB/LILO treba inštalovať manuálne.

Tip pre nás
Na krúžku používame virtuálny stroj - je najbezpečnejší a všetko sa dá kedykoľvek zmazať a začať odznova.
🏠 Domáca úloha
  1. Vysvetli vlastnými slovami: čo je jadro (kernel) a čo je distribúcia.
  2. Nakresli strom hlavných adresárov (/, /home, /etc, /var, /usr) a ku každému pripíš, na čo slúži.
  3. Prečo je na učenie bezpečnejšie používať VM ako reálny počítač? Napíš aspoň dva dôvody.
  4. Rozhodni sa, ktorú distribúciu (Debian, Fedora alebo Mint) chceš inštalovať, a napíš, prečo si vybral práve ju.
Hodina 2 · Blok 1

Inštalácia do VM

Praktická inštalácia Linux distribúcie do virtuálneho stroja.

Teória 15 min Prax 35 min Úloha 10 min

2.1 Virtuálny stroj

Virtuálny stroj (VM) je program, ktorý vytvorí v tvojom počítači ďalší "počítač vo vnútri počítača". Nainštaluješ si operačný systém, ktorý beží izolovane od toho hlavného.

Dva najpoužívanejšie hypervisory:

  • VirtualBox (Oracle) - zadarmo, funguje na Windows, Mac aj Linux. Na náš krúžok úplne postačí.
  • VMware (Workstation Pro) - taktiež zadarmo pre študentov, trochu rýchlejší grafický výkon.

Obe riešenia fungujú na rovnakom princípe: vytvoríš virtuálny disk, pridelíš RAM a CPU jadrá, potom spustíš ISO obraz (kópiu instalačného disku) a nainštaluješ Linux tak, akoby šlo o reálny stroj.

Host vs. Guest
Tvoj skutočný počítač sa volá host (hostiteľ). Linux vo VM sa volá guest (hosť). Host môže kedykoľvek vypnúť, pozastaviť alebo zmazať guest bez akéhokoľvek vplyvu na seba.

2.2 ISO obraz

ISO obraz je digitálna kópia inštalačného DVD. Stiahneš si ho z webu distribúcie a VM z neho nabootuje ako keby si vložil fyzické CD. Koľko miesta zaberie?

  • Debian ~3.7 GB
  • Fedora ~2 GB
  • Linux Mint ~2.1 GB

2.3 Postup inštalácie

Kroky sú pre všetky distribúcie veľmi podobné. Tu je zjednodušený postup:

  1. Otvor VirtualBox a klikni Nový (New).
  2. Názov: napíš názov distribúcie, typ nechaj Linux, verzia zvoľ podľa ISO.
  3. RAM: 2048 MB (2 GB) je minimum, 4096 MB je ideál.
  4. Virtuálny disk: vytvor nový, typ VDI (VirtualBox) alebo QCOW2 (QEMU/KVM), veľkosť 20 GB.
  5. V Nastaveniach VM vlož ISO obraz do sekcie Storage → IDE Controller.
  6. Spusti VM, spustí sa inštalačný program.
  7. Keď sa pýta na rozdelenie disku, zvoľ použiť celý disk (Guided, use entire disk).
  8. Ostatné nastavenia nechaj na defaulte ( meno, heslo, časové pásmo).
Pozor na rozdelenie disku
Pri inštalácii sa dostaneš do sekcie "Partitioning". Ak si začiatočník, voľ vždy Guided - use entire disk (automatické rozdelenie). Manuálne rozdeľovanie na /, /home a swap ponechaj na neskôr. S defaultným nastavením nič nepokazíš.
Zapíš si prihlasovacie údaje!
Počas inštalácie si nastavíš meno používateľa a heslo. Zapíš si obe. Bez hesla sa do VM neprihlásiš. Nepoužívaj triviálne heslá ako 1234, ale ani nič príliš zložité, na krúžok postačí jednoduché slovo.

2.4 Overenie inštalácie

Po reštarte sa prihlás a spusti terminál. Overíme, či všetko funguje:

student@debian: ~
student@debian:~$ uname -a Linux debian 6.1.0-25-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 GNU/Linux student@debian:~$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" student@debian:~$

Príkaz uname -a ukáže informácie o jadre a systéme. cat /etc/os-release presne identifikuje, akú distribúciu a verziu máš nainštalovanú.

student@debian: ~
student@debian:~$ free -h total used free shared buff/cache available Mem: 3.8Gi 420Mi 2.9Gi 12Mi 480Mi 3.1Gi Swap: 2.0Gi 0B 2.0Gi student@debian:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda6 19G 2.8G 15G 16% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda2 510M 186M 324M 37% /boot/efi student@debian:~$

free -h ukazuje koľko RAM VM dostala a koľko sa používa. df -h (disk free) ukazuje veľkosť disku a koľko miesta zostalo. Ak vidíš tieto výpisy, máš funkčnú inštaláciu.

Ak nejde uname alebo iný príkaz
Skús reštartovať VM a prihlásiť sa znova. Ak problém pretrváva, skontroluj, či si pri inštalácii nezvolil odlišné meno používateľa alebo či sa VM správne spúšťa (v zozname VM musí byť "Running").
🏠 Domáca úloha
  1. Napíš postup inštalácie VM v 5 krokoch vlastnými slovami, ako keby si ho vysvetľoval spolužiakovi.
  2. Vysvetli rozdiel medzi host a guest počítačom.
  3. Čo je ISO obraz a na čo slúži pri inštalácii?
  4. Prečo je pre začiatočníka bezpečné zvoliť pri inštalácii automatické rozdelenie disku?
Hodina 3 · Blok 1

Prvý login a terminál

Orientácia v termináli, prompt, základné príkazy a skryté súbory.

Teória 15 min Prax 35 min Úloha 10 min

3.1 Čo je terminál?

Terminál je program, cez ktorý komunikuješ s Linuxom písaním príkazov. Volá sa aj konzola, CLI (Command Line Interface) alebo proste "príkazový riadok".

Desktopové prostredie (GNOME, KDE, XFCE) je to, čo vidíš po prihlásení. Terminál je len ďalší program, ktorý spustíš z plochy alebo cez klávesovú skratku Ctrl+Alt+T (funguje vo väčšine distribúcii).

Základné pojmy:

  • Shell - program, ktorý interpretuje tvoje príkazy. Najčastejšie bash alebo zsh.
  • Prompt - text, ktorý ťa vyzve na zadanie príkazu. Väčšinou končí znakom $.
  • Príkaz - program alebo príkaz shellu, ktorý napíšeš za prompt.

3.2 Štruktúra promptu

Vidíš niečo takéto:

student@debian: ~
student@debian:~$
ČasťVýznamPríklad
studentMeno prihláseného používateľastudent
@debianNázov počítača (hostname)debian
~Aktuálny adresár (~ = domov)~, /etc
$Znak normálneho používateľa (# = root)$

3.3 Prvé príkazy

Otvor terminál a postupne napíš tieto príkazy. Všetky sú malým písmenom, bez diakritiky.

student@debian: ~
student@debian:~$ whoami student student@debian:~$ hostname debian student@debian:~$ pwd /home/student student@debian:~$ ls Desktop Documents Downloads Music Pictures Public Templates Videos student@debian:~$

whoami ti povie meno používateľa. hostname názov stroja. pwd (print working directory) ukazuje, v ktorom adresári sa nachádzaš. A ls (list) zobrazí obsah aktuálneho adresára.

student@debian: ~
student@debian:~$ ls -la total 32 drwxr-xr-x 5 student student 4096 Sep 8 10:00 . drwxr-xr-x 3 root root 4096 Sep 8 09:45 .. -rw------- 1 student student 220 Sep 8 09:45 .bash_logout -rw------- 1 student student 3526 Sep 8 09:45 .bashrc -rw------- 1 student student 807 Sep 8 09:45 .profile drwxr-xr-x 2 student student 4096 Sep 8 10:00 Desktop drwxr-xr-x 2 student student 4096 Sep 8 10:00 Documents drwxr-xr-x 2 student student 4096 Sep 8 10:00 Downloads student@debian:~$

Príznak -l znamená "long format" (podrobný výpis), -a znamená "all" (vrátane skrytých súborov). Skryté súbory v Linuxe začínajú bodkou .. Bez -a by si ich nevidel.

3.4 Navigácia a čistenie

student@debian: ~
student@debian:~$ cd /home student@debian:/home$ pwd /home student@debian:/home$ cd student@debian:~$ clear student@debian:~$ exit

cd (change directory) ťa presunie do zadaného adresára. Samotný cd bez cesty ťa vráti domov. clear (alebo Ctrl+L) vyčistí obrazovku. exit zatvorí terminál.

Tab completion
Pri písaní príkazu alebo cesty stlač Tab. Shell doplní názov automaticky, ak existuje jedna možnosť. Ak je ich viac, stlač Tab dvakrát a uvidíš zoznam. Toto je najužitočnejší trik v termináli, ktorý ti ušetrí more času.
Ako sa vrátiť z problémov
Ak sa zasekneš, fungujú tieto základy: cd ťa vráti domov, clear vyčistí terminál, exit zatvorí okno. Nikdy sa nemôžeš úplne stratiť.

3.5 Skryté súbory v domovskom adresári

Keď napíšeš ls -la ~, uvidíš všetky súbory vrátane skrytých. Všimni si:

  • .bashrc - konfigurácia shellu (prompt, farby, skratky)
  • .profile - spúšťa sa pri prihlásení, nastavuje premenné prostredia
  • .bash_logout - spúšťa sa pri odhlásení

Tieto súbory upravíme neskôr, keď sa naučíme pracovať s textovými editormi. Zatiaľ stačí vedieť, že existujú a čo robia.

🏠 Domáca úloha
  1. Rozlúšti prompt student@debian:~$ - čo znamená každá časť?
  2. Napíš spamäti aspoň 3 príkazy z hodiny a čo robia.
  3. Prečo začínajú skryté súbory bodkou a ako ich zobrazíš?
  4. Vysvetli, na čo slúži tab completion a prečo šetrí čas.
Hodina 4 · Blok 2

Navigácia a cesty

Ako sa pohybovať medzi adresármi, čítať cesty a používať príkazy cd, pwd a ls.

Teória 10 min Prax 35 min Úloha 10 min

4.1 Absolútne a relatívne cesty

Každý adresár v Linuxe má presnú cestu. Tá sa buď začína od rootu, alebo od toho, kde sa práve nachádzaš.

Absolútna cesta začína lomítkom / a popisuje presnú polohu od rootu. Relatívna cesta začína bodkou . (aktuálny adresár) alebo dvoma bodkami .. (rodičovský adresár) a popisuje cestu voči miestu, kde sa nachádzaš.

CestaTypVýznam
/home/studentAbsolútnaPresne od rootu
./dokumentyRelatívnaVnútri aktuálneho adresára
../fotkyRelatívnaV rodičovskom adresári

4.2 Príkaz cd

Príkaz cd (change directory) ťa presunie do ľubovoľného adresára. Funguje ako virtuálne "otvorenie priečinku".

  • cd / - presunie sa do rootu
  • cd ~ alebo len cd - presunie sa domov
  • cd .. - presunie sa o úroveň vyššie
  • cd - - vráti sa tam, kde si bol predtým
  • cd ~peter - presunie sa do domova používateľa peter

4.3 pwd a ls

pwd (print working directory) ti povie, kde sa práve nachádzaš. ls zobrazí obsah adresára.

PríkazČo robí
pwdVypíše aktuálnu cestu
lsZoznam súborov a adresárov
ls -lDetailný zoznam (práva, veľkosť, dátum)
ls -aZobrazí aj skryté súbory (bodku na začiatku)
ls -laKombinácia: detailné + skryté
ls -lhDetailný zoznam s čitateľnými veľkosťami (KB, MB)
ls -RRekurzívne zobrazí všetko vrátane podadresárov

4.4 Praktická ukážka

Poďme si vyskúšať pohyb po adresároch. Začneme v domovskom adresári a postupne sa presunieme.

student@debian: ~
student@debian:~$ pwd /home/student student@debian:~$ cd /etc student@debian:/etc$ pwd /etc student@debian:/etc$ cd - /home/student student@debian:~$
student@debian: ~
student@debian:~$ ls -la total 32 drwxr-xr-x 5 student student 4096 sep 8 10:00 . drwxr-xr-x 3 root root 4096 sep 1 08:00 .. -rw-r--r-- 1 student student 220 sep 1 08:00 .bash_logout -rw-r--r-- 1 student student 3771 sep 1 08:00 .bashrc -rw-r--r-- 1 student student 807 sep 1 08:00 .profile drwxr-xr-x 2 student student 4096 sep 8 10:00 Dokumenty student@debian:~$ cd ~/Dokumenty student@debian:~/Dokumenty$ ls poznamky.txt projekt ucet.txt student@debian:~/Dokumenty$
student@debian: ~/Dokumenty
student@debian:~/Dokumenty$ cd .. student@debian:~$ pwd /home/student student@debian:~$ ls -lh /var/log total 1.2M -rw-r----- 1 root adm 48K sep 8 09:12 auth.log -rw-r----- 1 root adm 12K sep 8 08:00 syslog -rw-r----- 1 root adm 1.1M sep 7 23:59 kern.log student@debian:~$
student@debian: ~
student@debian:~$ cd / student@debian:/$ ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var student@debian:/$ cd student@debian:~$
Bodka a dve bodky sú adresáre
. odkazuje na aktuálny adresár a .. na rodičovský. Fungujú všade, nielen s cd. Príkaz cd - si pamätá predchádzajúcu adresu, takže sa ním rýchlo prepínaš medzi dvoma miestami.
student@debian: ~
student@debian:~$ cd /tmp student@debian:/tmp$ cd - /home/student student@debian:~$ cd - /tmp student@debian:/tmp$ ls -la .. total 12 drwxr-xr-x 3 root root 4096 sep 1 08:00 . drwxr-xr-x 1 root root 4096 sep 1 08:00 .. drwxr-xr-x 1 student student 4096 sep 8 10:00 home student@debian:/tmp$
Tip pre prax
Keď sa stratíš v adresároch, pwd ti vždy povie, kde si. A cd ~ ťa vždy vráti domov. Tieto dva príkazy používaj často, kým si cesty zapamätáš.
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi absolútnou a relatívnou cestou. Uveď príklad oboch.
  2. Nakresli strom adresárov /home/student/Dokumenty a ukáž šípkami, kam sa dostaneš príkazmi cd /, cd .. a cd -.
  3. Čo vypíše pwd po príkazoch cd /etc a potom cd -? Vysvetli, prečo.
  4. Prečo sa oplatí poznať ls -lh namiesto obyčajného ls?
Hodina 5 · Blok 2

Súbory a adresáre

Vytváranie, kopírovanie, presúvanie a mazanie súborov a priečinkov.

Teória 10 min Prax 35 min Úloha 10 min

5.1 Vytváranie a mazanie

Každý súbor aj adresár sa dá vytvoriť aj zmazať jedným riadkom. Dôležité je vedieť, ktorý príkaz slúži na čo.

touch vytvorí prázdny súbor (alebo aktualizuje čas existujúceho). mkdir vytvorí nový adresár. Pomocou mkdir -p vytvoríš celú cestu naraz.

student@debian: ~
student@debian:~$ mkdir -p projekt/src student@debian:~$ touch projekt/src/main.c student@debian:~$ touch projekt/README.md student@debian:~$ ls -R projekt projekt projekt/README.md projekt/src projekt/src/main.c student@debian:~$

5.2 Kopírovanie a presúvanie

cp vytvorí kópiu súboru alebo adresára. mv presunie súbor, alebo ho premenuje. Oba príkazy fungujú rovnako, len robia rôzne veci.

PríkazČo robíPríklad
cpKopíruje súborcp subor.txt kopia.txt
cp -rKopíruje adresárcp -r projekt backup
mvPresúva / premenujemv stare.txt nove.txt
student@debian: ~/projekt
student@debian:~/projekt$ cp README.md backup.md student@debian:~/projekt$ mv backup.md BAKA.md student@debian:~/projekt$ ls BAKA.md README.md src student@debian:~/projekt$ cp -r src src_backup student@debian:~/projekt$ ls BAKA.md README.md src src_backup student@debian:~/projekt$

5.3 Mazanie súborov

rm vymaže súbor. rm -r vymaže adresár aj s obsahom. rmdir vymaže len prázdny adresár.

student@debian: ~/projekt
student@debian:~/projekt$ rm BAKA.md student@debian:~/projekt$ rm -r src_backup student@debian:~/projekt$ ls README.md src student@debian:~/projekt$ mkdir empty_dir student@debian:~/projekt$ rmdir empty_dir student@debian:~/projekt$ ls README.md src student@debian:~/projekt$

5.4 Typ súboru

Príkaz file zistí skutočný typ súboru podľa obsahu, nie podľa prípony. V Linuxe prípory nie sú také dôležité ako vo Windowse.

student@debian: ~/projekt
student@debian:~/projekt$ file README.md README.md: ASCII text student@debian:~/projekt$ file src/main.c src/main.c: C source, ASCII text student@debian:~/projekt$ file /bin/ls /bin/ls: ELF 64-bit LSB pie executable, x86-64 student@debian:~/projekt$
Pozor na rm
rm maže natrvalo. V Linuxe nie je žiadny kôš. Keď zmážeš súbor cez rm, je preč. Najmä sa vyhýbaj sudo rm -rf /. Nikdy. Ani zvedavosti.
Nikdy nepíš toto
sudo rm -rf / vymaže celý tvoj systém. Toto je prvý príkaz, ktorý by si mal poznať, aby si ho nikdy náhodou nenapísal.

5.5 Všetko je súbor: adresár /dev

Linux pristupuje k hardvéru rovnako ako k obyčajným súborom. Žiadne špeciálne rozhranie, žiadne zvláštne API. Jednoducho čítaš a zapisuješ.

Jednou z kľúčových filozofií Linuxu je: "Všetko je súbor." Každé hardvérové zariadenie, ktoré je pripojené k počítaču, sa sprístupňuje vo forme špeciálneho súboru v adresári /dev. Čítaš z neho, zapisuješ do neho a tým komunikuješ so zariadením. Jednotné rozhranie cez klasické súborové operácie (file I/O) znamená, že nepotrebuješ žiadnu špeciálnu knižnicu ani ovládač v používateľskom priestore.

Adresár /dev obsahuje device files, teda špeciálne súbory reprezentujúce hardvér. Kvôli bezpečnostným právam je rozumné ho len prezerať, nie upravovať. Pozri sa naň takto:

student@debian: ~
student@debian:~$ ls -l /dev brw-rw---- 1 root disk 8, 0 sep 8 08:00 sda crw-rw-rw- 1 root tty 5, 0 sep 8 08:00 tty crw-rw-rw- 1 root root 1, 3 sep 8 08:00 null crw-rw-rw- 1 root root 1, 5 sep 8 08:00 zero crw-rw-rw- 1 root root 1, 8 sep 8 08:00 random crw-rw-rw- 1 root root 1, 9 sep 8 08:00 urandom student@debian:~$

V prvom stĺpci výpisu vidíš typ zariadenia. Existujú dva hlavné typy:

ZnakTypAko komunikujePríklady
bBlokovéBlokového zariadenia sa číta/zapisuje po blokoch (napr. 512 bajtov naraz). Vhodné pre disky./dev/sda, /dev/nvme0n1
cZnakovéZnakové zariadenia komunikujú po jednom znaku. Používajú sa pre terminály, zvuk, klávesnice./dev/tty, /dev/snd/*

Niektoré zariadenia v /dev sú obzvlášť užitočné aj pre bežnú prácu v termináli.

  • /dev/null je "čierna diera". Všetko, čo do nej pošleš, zmizne. Potlačíš ňou nechcený výstup: echo ahoj > /dev/null. Potlačíš aj chyby: command 2>/dev/null.
  • /dev/zero produkuje nekonečný prúd nulových bajtov. Hodí sa na vytvorenie testovacích súborov: dd if=/dev/zero of=test.bin bs=1M count=10 ti vytvorí 10 MB plný nul.
  • /dev/random a /dev/urandom generujú náhodné dáta. /dev/random môže prerušiť čakanie, ak systém nedostal dosť entropy (od jadra 5.6, tj. od roku 2020, blokuje už len na začiatku štartu systému). /dev/urandom je rýchlejší a vždy dostupný, takže sa používa častejšie.
  • /dev/tty je aktuálny terminál. Hodí sa, keď chceš napriek redirekcii niečo zobraziť priamo na obrazovku: echo AHOJ > /dev/tty.
student@debian: ~
student@debian:~$ cat /dev/urandom | head -c 32 | hexdump 0000000 3a7f 94b1 0ff6 2e8a c7d4 53a1 b8e9 1d6f 0000010 a45c 7203 e9b8 5f16 0d84 6ba2 31e7 c9f0 # náhodné dáta student@debian:~$
Nikdy nečítaj surový disk
Príkaz cat /dev/sda by načítal celý RAW obsah tvojho disku. Nikdy to nespúšťaj naozaj, mohol by si čítať citlivé dáta a navyše to trvá veľmi dlho. Toto je len ukážka sily filozofie "všetko je súbor" aj v takejto forme. Na čítanie diskov sa používajú špecializované nástroje ako dd alebo xxd s rozumnými obmedzeniami.

Zaujímavosťou je aj /proc. Je to virtuálny súborový systém generovaný priamo jadrom. Súbory tam neležia na disku, jadro ich generuje na požiadanie. Môžeš v ňom čítať informácie o systéme:

student@debian: ~
student@debian:~$ head -n 5 /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz student@debian:~$ head -n 5 /proc/meminfo MemTotal: 16384000 kB MemFree: 8234568 kB MemAvailable: 13456000 kB Buffers: 512000 kB Cached: 4096000 kB student@debian:~$

5.6 Odkazy: hardlink a symlink

Súbory v Linuxe sa dajú odkazovať viacerými spôsobmi. hardlink a symlink sú dva rozdielne mechanizmy s rozdielnym správaním.

Hardlink je druhé meno pre TEN ISTÝ súbor. Oba názvy odkazujú na rovnaký inode (interný identifikátor súboru na disku). Hardlink funguje len v rámci jedného súborového systému a vytvoríš ho príkazom:

ln subor odkaz

Symlink (symbolický odkaz) je malý súbor, ktorý obsahuje cestu k inému súboru alebo adresáru. Funguje podobne ako zástupca (shortcut) vo Windowse. V ls -l ho spoznáš podľa písmena l na začiatku a šípky -> ukazujúcej cieľ. Vytvoríš ho takto:

ln -s ciel odkaz

Hlavný rozdiel sa prejaví, keď pôvodný súbor vymažeš:

  • Hardlink stále funguje. Dáta na disku zmiznú až vtedy, keď zmizne posledný názov (hardlink), ktorý na ne ukazuje.
  • Symlink sa "pretrhne" (broken). Ukazuje na cestu, ktorá už neexistuje. Takýto symlink zobrazí chybu pri pokuse o čítanie.
Vlastnosťhardlinksymlink
Vytvorenieln subor odkazln -s ciel odkaz
Typ v ls -lVyzerá ako obyčajný súborZačína l, ukazuje -> cieľ
Keď zmizne pôvodný súborFunguje ďalej (rovnaký inode)Pretrhne sa (broken symlink)
Cez súborové systémyNie (len v rámci jedného FS)Áno (ukazuje na cestu)
Aktualizácia cieľaNie (pevne viazaný na inode)Áno (upravíš cestu)
Veľkosť0 bajtov (iba odkaz)Veľkosť textu cesty
student@debian: ~
student@debian:~$ echo "Ahoj" > subor.txt student@debian:~$ ln subor.txt hardlink.txt student@debian:~$ ln -s subor.txt symlink.txt student@debian:~$ ls -l subor.txt hardlink.txt symlink.txt -rw-r--r-- 2 student student 6 sep 15 10:00 subor.txt -rw-r--r-- 2 student student 6 sep 15 10:00 hardlink.txt lrwxrwxrwx 1 student student 9 sep 15 10:00 symlink.txt -> subor.txt # všimni počet odkazov (2) a šípku pri symlinke student@debian:~$
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi príkazmi cp a mv. Kedy použiť ktorý?
  2. Napíš, čo sa stane: mkdir pokus && cd pokus && touch a.txt && ls - čo postupne spraví každý príkaz?
  3. Prečo je rm -rf nebezpečný príkaz? Rozlúšti, čo znamená -r a -f.
  4. Na čo slúži príkaz file a kedy sa ti môže hodiť?
Hodina 6 · Blok 2

Čítanie súborov a wildcards

Ako zobraziť obsah súborov rôznymi spôsobmi a používať zástupné znaky.

Teória 10 min Prax 35 min Úloha 10 min

6.1 Čítanie obsahu súborov

Linux ponúka viacero spôsobov, ako zobraziť obsah súboru. Každý sa hodí na inú situáciu.

PríkazKedy použiť
catVypíše celý súbor na obrazovku. Ideálne pre krátke súbory.
lessOtvorí súbor so scrollovaním. Pre veľké súbory.
head -n 10Zobrazí prvých 10 riadkov.
tail -n 10Zobrazí posledných 10 riadkov.
tail -fSleduje pridávané riadky v reálnom čase.
student@debian: ~
student@debian:~$ cat /etc/hostname debian student@debian:~$ head -n 5 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync student@debian:~$ tail -n 3 /etc/passwd sshd:x:106:65534::/run/sshd:/usr/sbin/nologin student:x:1000:1000:Student,,,:/home/student:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin student@debian:~$

V less sa pohybuješ šípkami alebo Page Up / Page Down. Stlač q na ukončenie. Ak hľadáš text, stlač / a napíš hľadané slovo.

student@debian: ~
student@debian:~$ less /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin ... student:x:1000:1000:Student,,,:/home/student:/bin/bash (End of file - stlač q pre ukončenie) student@debian:~$

6.2 Wildcards

Wildcards (zástupné znaky) fungujú v príkazoch ako ls, cp, rm. Shell ich rozšíri ešte pred spustením programu.

ZnakVýznamPríklad
*Ľubovoľný počet znakovls *.txt
?Presne jeden znakls ?.txt
[abc]Jeden znak zo zoznamuls [ab].txt
[0-9]Jeden znak z rozsahuls [0-3].txt
student@debian: ~
student@debian:~$ mkdir wild && cd wild student@debian:~/wild$ touch a.txt b.txt c.txt test.py log1.txt log2.txt student@debian:~/wild$ ls *.txt a.txt b.txt c.txt log1.txt log2.txt student@debian:~/wild$ ls ?.txt a.txt b.txt c.txt student@debian:~/wild$ ls [ab].txt a.txt b.txt student@debian:~/wild$
student@debian: ~/wild
student@debian:~/wild$ ls log?.txt log1.txt log2.txt student@debian:~/wild$ ls *.py test.py student@debian:~/wild$
Shell expanduje wildcards
Zástupné znaky * a ? nerozširuje samotný program, ale shell. Keď napíšeš ls *.txt, shell najprv nájde všetky .txt súbory a až potom ich odovzdá príkazu ls. Preto echo * vypíše názvy súborov, lebo echo nedostane hviezdičku, ale už rozšírený zoznam.
student@debian: ~/wild
student@debian:~/wild$ echo * a.txt b.txt c.txt log1.txt log2.txt test.py student@debian:~/wild$ rm *.txt student@debian:~/wild$ ls test.py student@debian:~/wild$
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi cat a less. Kedy použiť ktorý?
  2. Kedy použiješ head a kedy tail? Uveď príklad použitia tail -f.
  3. Máš súbory ahoj.txt, obraz.png, test.txt, skript.sh. Čo vypíše ls *.txt a čo ls ?est.*?
  4. Vysvetli vlastnými slovami, čo rozširuje wildcards - shell alebo program?
Hodina 7 · Blok 2

História a nápoveda

Ako pracovať s históriou príkazov, tabulačným dokončením a manuálovými stránkami.

Teória 15 min Prax 30 min Úloha 10 min

7.1 História príkazov

Shell si pamätá všetky príkazy, ktoré si napísal. Nemusíš ich písať znova, stačí ich zavolať späť.

Stlač (šípka hore) pre opakovanie predchádzajúceho príkazu. Stlač pre vrátenie sa dopredu. Každým stlačením prechádzaš históriou.

student@debian: ~
student@debian:~$ history 1 whoami 2 pwd 3 ls 4 cd /etc 5 ls -la 6 cd ~ 7 history student@debian:~$

Niektoré skratky z histórie fungujú okamžite:

  • !! - zopakuje celý posledný príkaz
  • !n - spustí príkaz s číslom n z histórie
student@debian: ~
student@debian:~$ ls -la /etc/hostname -rw-r--r-- 1 root root 7 sep 8 08:00 /etc/hostname student@debian:~$ sudo !! sudo ls -la /etc/hostname -rw-r--r-- 1 root root 7 sep 8 08:00 /etc/hostname student@debian:~$ !3 ls Dokumenty projekt wild student@debian:~$

7.2 Spätné hľadanie

Kombinácia Ctrl+R otvorí interaktívne vyhľadávanie v histórii. Píšeš text a shell hľadá posledný príkaz, ktorý ho obsahuje.

student@debian: ~
(reverse-i-search)`ls': ls -la /etc/hostname Stlač Enter pre spustenie, alebo šípky pre úpravu student@debian:~$

7.3 Tabulačné dokončovanie

Stlač Tab a shell sa pokúsi automaticky dokončiť príkaz alebo cestu. Ak je viac možností, stlač Tab dvakrát pre zoznam.

student@debian: ~
student@debian:~$ ls /et[TAB] /etc/ student@debian:~$ ls /etc/ho[TAB] /etc/hostname student@debian:~$ cat /etc/hostname debian student@debian:~$

7.4 Manuály a help

Príkaz man otvorí manuálovú stránku akéhokoľvek príkazu. Je to najdôležitejší nástroj na získavanie informácií. Ak potrebuješ rýchlu odpoveď, použi --help.

student@debian: ~
student@debian:~$ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). -a, --all do not ignore entries starting with . -l use a long listing format -h, --human-readable with -l, print sizes in human readable format -t sort by time, newest first -R, --recursive list subdirectories recursively --help display this help and exit student@debian:~$

V manuáli sa pohybuješ šípkami alebo medzerníkom. Vyhľadávaš cez / a potom napíšeš slovo. Ďalší výsledok cez n, predchádzajúci cez N. Odchod cez q.

student@debian: ~
student@debian:~$ man ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). -a, --all do not ignore entries starting with . -l use a long listing format -R, --recursive list subdirectories recursively (stlač q pre ukončenie, / pre hľadanie, n/N pre ďalší/predchádzajúci výsledok) student@debian:~$ apropos "network" hostname (1) - show or set the system's host name ifconfig (8) - configure a network interface ip (8) - show / manipulate routing, network devices netstat (8) - Print network connections, routing tables, ... student@debian:~$
Man je tvoj najlepší kamarát
man obsahuje kompletnú dokumentáciu ku každému príkazu. Ak nevieš, čo príkaz robí, man príkaz ti odpovie. --help je rýchlejšia alternatíva pre krátke zhrnie. A apropos ti pomôže, keď nevieš ani názov príkazu.
🏠 Domáca úloha
  1. Prečo je dôležité vedieť čítať manuálové stránky (man) aj bez internetu?
  2. Čo znamená !! a !42? Kedy by si ich použil a kedy by si musel byť opatrný?
  3. Vysvetli, ako funguje vyhľadávanie v histórii cez Ctrl+R.
  4. Napíš aspoň 2 klávesové skratky na navigáciu v man stránke (napr. vyhľadávanie, ukončenie).
Hodina 8 · Blok 2

Redirekcia a rúry

Ako presmerovať výstup príkazov, prepájať programy rúrami a pracovať s chybami.

Teória 10 min Prax 35 min Úloha 10 min

8.1 Redirekcia výstupu

Každý príkaz produkuje výstup na obrazovku. Pomocou > a >> ho môžeš presmerovať do súboru.

  • > zapíše výstup do súboru (prepíše ho)
  • >> pridá výstup na koniec súboru
  • < nasmeruje obsah súboru ako vstup príkazu
student@debian: ~
student@debian:~$ echo "Ahoj svet" > uvitanie.txt student@debian:~$ cat uvitanie.txt Ahoj svet student@debian:~$ echo "Druhy riadok" >> uvitanie.txt student@debian:~$ cat uvitanie.txt Ahoj svet Druhy riadok student@debian:~$

Pozor, > prepíše súbor. Ak bude v súbore niečo dôležité, po > to zmizne. Používaj >>, keď chceš pridávať.

8.2 Rúry (pipes)

Rúra | prepojí výstup jedného príkazu so vstupom ďalšieho. Výstup nepôjde na obrazovku, ale do ďalšieho programu.

student@debian: ~
student@debian:~$ ls -la | grep ".txt" -rw-r--r-- 1 student student 14 sep 8 11:00 uvitanie.txt student@debian:~$ cat /etc/passwd | head -n 3 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin student@debian:~$

8.3 Chybový výstup

Programy majú dva výstupy: stdout (štandardný výstup) a stderr (chybový výstup). Oba idú na obrazovku, ale dajú sa presmerovať oddelene.

ZápisČo robí
2>Presmeruje chyby (stderr) do súboru
2>&1Zlúči chyby s normálnym výstupom
&>Oboje do súboru (skratka)
student@debian: ~
student@debian:~$ ls /neexistujuci 2> chyby.txt ls: cannot access '/neexistujuci': No such file or directory student@debian:~$ cat chyby.txt ls: cannot access '/neexistujuci': No such file or directory student@debian:~$ ls /neexistujuci 2>/dev/null (zobrazí sa len príkaz, chyba zmizla) student@debian:~$

8.4 Praktické kombinácie

Rúry a redirekcie sa dajú kombinovať. Toto sú príkazy, ktoré budeš používať často.

student@debian: ~
student@debian:~$ ps aux | grep ssh root 812 0.0 0.1 16088 9600 ? Ss 08:00 0:01 /usr/sbin/sshd -D student 1245 0.0 0.0 8940 3200 pts/0 S+ 11:00 0:00 grep --color=auto ssh student@debian:~$ history | grep cd 4 cd /etc 6 cd ~ 9 cd /tmp 10 cd - student@debian:~$ ls -la | wc -l 15 student@debian:~$

tee zobrazí výstup na obrazovku a zároveň ho uloží do súboru. Hodí sa, keď chceš vidieť výstup a zároveň ho archivovať.

student@debian: ~
student@debian:~$ ls -la | tee zoznam.txt total 16 drwxr-xr-x 5 student student 4096 sep 8 11:00 . drwxr-xr-x 3 root root 4096 sep 1 08:00 .. -rw-r--r-- 1 student student 220 sep 1 08:00 .bash_logout -rw-r--r-- 1 student student 3771 sep 1 08:00 .bashrc -rw-r--r-- 1 student student 807 sep 1 08:00 .profile drwxr-xr-x 2 student student 4096 sep 8 11:00 Dokumenty -rw-r--r-- 1 student student 14 sep 8 11:00 uvitanie.txt drwxr-xr-x 2 student student 4096 sep 8 10:00 wild student@debian:~$ cat zoznam.txt total 16 drwxr-xr-x 5 student student 4096 sep 8 11:00 . ... (rovnaký výstup) student@debian:~$
stdout a stderr
Výstup programu ide cez dva kanály. stdout nesie normálny výstup, stderr chybové hlášky. Keď napíšeš ls /cesta 2>/dev/null, chyby zmiznú, lebo smerujú do /dev/null (ďura, ktorá všetko zahodí). Normálny výstup zostane na obrazovke.
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi > a >> pri presmerovaní výstupu.
  2. Nakresli, ako pretekajú dáta cez rúru v príkaze ls -la | grep txt. Ktorý výstup ide kam?
  3. Vysvetli rozdiel medzi stdout a stderr. Uveď príklad, kedy sa ti zobrazí stderr.
  4. Prečo je kombinácia history | grep apt užitočná? Čo presne robí?
Hodina 9 · Blok 3

Používatelia a sudo

Ako fungujú používateľské účty v Linuxe, prečo root nie je kamarát a kedy použiť sudo.

Teória 15 min Prax 30 min Úloha 10 min

9.1 Kto som? Používateľské účty

Každý, kto sa prihlási do Linuxu, má svoj účet. Aj ty máš svojho "študenta", a systém presne vie, čo smieš a čo nie.

V Linuxe existujú dva typy používateľov, ktorí ťa zaujímajú: bežný používateľ a root. Root je superužívateľ, ktorý môže na systéme robiť úplne všetko. Môže mazať súbory, meniť nastavenia, inštalovať programy, dokonca vypnúť celý stroj. Bežný používateľ môže robiť len to, čo mu systém dovolí.

student@debian: ~
student@debian:~$ whoami student student@debian:~$ id uid=1000(student) gid=1000(student) skupiny=1000(student),27(sudo),44(video),100(users) student@debian:~$

Príkaz whoami ti povie meno aktuálneho používateľa. Príkaz id ukáže viac: tvoje uid (číselný identifikátor), gid (identifikátor skupiny) a zoznam skupín, do ktorých patríš.

Ďalšie užitočné príkazy na zistenie, kto je práve prihlásený:

student@debian: ~
student@debian:~$ who student tty1 2025-09-08 08:00 student pts/0 2025-09-08 08:12 (10.0.2.2) student@debian:~$ w 08:15:01 up 15 min, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT student tty1 08:00 5:00 0.12s 0.12s -bash student pts/0 10.0.2.2 08:12 0.00s 0.05s 0.01s w student@debian:~$

who zobrazí prihlásených používateľov. w ukáže to isté, navyše s informáciou, čo práve robia.

9.2 sudo: privíť sa s root právami

Ako bežný používateľ nemôžeš napríklad nainštalovať program alebo meniť systémové súbory. Na to slúži sudo (superuser do). Umožní ti spustiť jeden príkaz s root právami.

student@debian: ~
student@debian:~$ apt update E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) student@debian:~$ sudo apt update [sudo] heslo pre student: ******** Vynechané:1 http://deb.debian.org/debian InRelease Získavané:2 http://deb.debian.org/debian bookworm-updates InRelease [123 kB] Čítanie zoznamov balíkov... Hotovo student@debian:~$

Vidíš to? Bez sudo systém povie "nemáš oprávnenie". So sudo ťa systém najprv popýta o heslo (to tvoje, nie root heslo) a potom príkaz spustí.

Pozor na sudo
sudo je silný nástroj. Ak spustíš sudo rm -rf /, vymažeš celý systém. Nikdy nespúšťaj príkazy cez sudo, ak nevieš presne, čo robia. Hraj sa len so súbormi vo svojom domovskom adresári.

9.3 su: prepnutie na iného používateľa

Kým sudo spustí jeden príkaz ako root, su (switch user) ťa prepne na iného používateľa na dlhšie. Zadáš su a potrebuješ heslo toho používateľa.

student@debian: ~
student@debian:~$ su Heslo: root@debian:/home/student# ^^^ vidíš zmenu promptu na # root@debian:/home/student# whoami root root@debian:/home/student# exit student@debian:~$ student@debian:~$

Všimni si zmenu: prompt končí na # namiesto $. To znamená, že si root. Po skončení napíš exit a vrátiš sa späť.

su - root je riskantné
Prihlásiť sa ako root a pracovať priamo v jeho prostredí je veľké riziko. Jedno zlé písmenko v príkaze a systém môže byť poškodený. Radšej používaj sudo pre jednotlivé príkazy.

9.4 Prečo nepracovať ako root?

Ak by si bol root, každý príkaz by sa spustil bez pýtania. Žiadna ochrana. Žiadne "nemáš oprávnenie". Keď root vymaže súbor, je preč. Keď root prepíše konfiguráciu, systém nemusí nabudúce nabootovať.

Preto existuje zlaté pravidlo Linuxu: používaj root práva len keď musíš. Väčšina vecí funguje aj ako bežný používateľ.

Pozri sa, čo má root a ty nie:

student@debian: ~
student@debian:~$ ls /root ls: cannot open directory '/root': Permission denied student@debian:~$ sudo ls /root snap snapd student@debian:~$ sudo nano /etc/hosts # Otvorí sa súbor, ktorý normálne nemáš právo meniť # Len ukážka! Nič nemeň, len sa pozri a exit student@debian:~$

9.5 Časový rozpis

ČasťČo robímeČas
TeóriaÚčty, root, sudo, su, bezpečnosť15 min
Praxwhoami, id, who, w, sudo, su, ls /root30 min
ÚlohaDomáca úloha na konci10 min
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi bežným používateľom a rootom. Napíš 3 veci, ktoré môže len root.
  2. Prečo sa neodporúča pracovať stále ako root? Uveď aspoň 2 dôvody.
  3. Čo robí sudo a aké heslo ťa pri ňom systém pýta?
  4. Vysvetli rozdiel medzi sudo a su.
Hodina 10 · Blok 3

Práva súborov

Čo znamenajú tie záhadné písmená v ls -l a prečo niečo nemôžeš spustiť.

Teória 15 min Prax 30 min Úloha 10 min

10.1 Čo sú práva?

V Linuxe každý súbor a každý adresár má záznam o tom, kto ho môže čítať, meniť a spúšťať. Toto sa volá práva (permissions).

Sú tri typy práv a tri skupiny, ktorých sa týkajú:

  • r (read) = čítanie, hodnota 4
  • w (write) = zápis, hodnota 2
  • x (execute) = spustenie, hodnota 1

A pre tri skupiny:

  • user (u) = vlastník súboru
  • group (g) = skupina vlastníka
  • others (o) = všetci ostatní

10.2 Čítanie ls -l

Keď napíšeš ls -l, prvý stĺpec ti povie úplne všetko o právach. Poďme to rozobrať:

student@debian: ~
student@debian:~$ ls -l /etc/hostname -rw-r--r-- 1 root root 12 sep 8 08:00 /etc/hostname student@debian:~$ ls -ld /home/student drwxr-xr-x 3 student student 4096 sep 8 08:00 /home/student student@debian:~$

Poďme rozobrať prvý stĺpec drwxr-xr-x:

  • Prvý znak: d = adresár, - = obyčajný súbor
  • Znaky 2-4: práva vlastníka → rwx = číta, píše, spúšťa
  • Znaky 5-7: práva skupiny → r-x = číta, spúšťa, nepíše
  • Znaky 8-10: práva ostatných → r-x = číta, spúšťa, nepíše
Číselný zápis
Každá trojica práv sa dá zmeniť na číslo: r=4, w=2, x=1. Sčítaj hodnoty. Napríklad rwx = 4+2+1 = 7. r-x = 4+0+1 = 5. Takže drwxr-xr-x v číslach je 755.

10.3 chmod: zmena práv

Príkaz chmod (change mode) ti umožní meniť práva súborov. Dva spôsoby: symbolický a číselný.

student@debian: ~
student@debian:~$ touch test.txt student@debian:~$ ls -l test.txt -rw-r--r-- 1 student student 0 sep 8 08:30 test.txt student@debian:~$ chmod +x test.txt student@debian:~$ ls -l test.txt -rwxr-xr-x 1 student student 0 sep 8 08:30 test.txt student@debian:~$ chmod 644 test.txt student@debian:~$ ls -l test.txt -rw-r--r-- 1 student student 0 sep 8 08:30 test.txt student@debian:~$

Symbolicky: +x pridá spustenie pre všetkých, u+x len pre vlastníka, g-w odoberie zápis skupine.

Číselne: chmod 644 znamená owner=6 (rw), group=4 (r), others=4 (r).

10.4 Práva a spúšťanie

Právo x rozhoduje o tom, či môžeš niečo spustiť. Bez neho ti Linux povie "nie".

student@debian: ~
student@debian:~$ echo '#!/bin/bash' > ahoj.sh student@debian:~$ echo 'echo "Ahoj svet!"' >> ahoj.sh student@debian:~$ chmod 644 ahoj.sh student@debian:~$ ./ahoj.sh bash: ./ahoj.sh: Permission denied student@debian:~$ chmod +x ahoj.sh student@debian:~$ ./ahoj.sh Ahoj svet! student@debian:~$
Bežná chyba
"Permission denied" pri spúšťaní skriptu takmer vždy znamená, že nemáš právo x. Skontroluj cez ls -l a pridaj chmod +x.

10.5 Praktická ukážka: práva v akcii

student@debian: ~
student@debian:~$ echo "tajne" > tajny.txt student@debian:~$ chmod 600 tajny.txt student@debian:~$ ls -l tajny.txt -rw------- 1 student student 6 sep 8 08:35 tajny.txt student@debian:~$ su - druhý Password: **** druhy@debian:~$ cat /home/student/tajny.txt cat: /home/student/tajny.txt: Permission denied druhy@debian:~$ exit student@debian:~$

Súbor s právami 600 (rw-------) môže čítať a meniť len vlastník. Nikto iný sa k nemu nedostane.

10.6 Časový rozpis

ČasťČo robímeČas
TeóriaPráva rwx, skupiny, ls -l, chmod15 min
Praxchmod symbolicicky aj číselne, spúšťanie skriptov30 min
ÚlohaDomáca úloha na konci10 min

10.7 Špeciálne bity

Okrem klasických rwx práv existujú tri špeciálne bity, ktoré menia správanie súborov a adresárov.

SUID (setuid) — proces sa pri spustení spúšťa s UID vlastníka súboru (často root), nie s UID používateľa, ktorý ho spustil. Príklad: /usr/bin/passwd — bežný používateľ musí zmeniť heslo, a to si vyžaduje zápis do systémových súborov, na ktoré nemá práva; vďaka SUID sa passwd spustí s právami roota presne len na túto úlohu. Vo výpise ls -l sa zobrazuje ako s namiesto x (napr. -rwsr-xr-x).

SGID (setgid) — na súbore: proces beží s GID súboru; na adresári: nové súbory vytvorené v tomto adresári dedičia skupinu adresára (užitočné pre zdieľané adresáre, napr. tímový priečinok).

sticky bit — keď má adresár write právo pre všetkých (typicky /tmp), súbor v ňom môže odstrániť len jeho vlastník, vlastník adresára alebo root. Zabráni tomu, aby si ktokoľvek mazal cudzie súbory v zdieľanom adresári. Zobrazuje sa ako t na konci práv (drwxrwxrwt).

ACL (Access Control Lists) — rozšírenie klasických práv: umožňuje nastaviť práva jednotlivo pre konkrétnych používateľov a skupiny (príkazy getfacl a setfacl). Na kurze sa nimi nebudeme hrať, ale vedieť o nich treba.

student@debian: ~
student@debian:~$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59976 sep 8 08:00 /usr/bin/passwd # SUID bit: s namiesto x student@debian:~$ ls -ld /tmp drwxrwxrwt 10 root root 4096 sep 8 08:05 /tmp # sticky bit: t na konci student@debian:~$
SUID je bezpečnostná diera
SUID na nesprávnom súbore je bezpečnostná diera. Nikdy neprideľuj SUID skriptom, ktoré píšeš na kurze, kým presne nevieš, čo robíš. Napríklad skript, ktorý maže súbory, by sa dal zneužiť.
🏠 Domáca úloha
  1. Rozlúšti práva -rwxr-xr-x znak po znaku: čo v jednotlivých skupinách znamená r, w, x?
  2. Vysvetli číselný zápis práv: prečo r=4, w=2, x=1 a koľko je teda chmod 755?
  3. Čo sa stane, keď skript nemá právo x a ako to opravíš?
  4. Prečo musí mať adresár právo x, aby si doňho mohol vojsť (cd)?
Hodina 11 · Blok 3

chmod, chown, umask

Pokročilá správa práv: zmena vlastníka, skupiny a predvolené nastavenia.

Teória 10 min Prax 35 min Úloha 10 min

11.1 chown: zmena vlastníka

Vlastník súboru určuje, kto má k nemu primárny prístup. Príkaz chown (change owner) ti umožní zmeniť, komu súbor patrí.

student@debian: ~
student@debian:~$ touch poznamka.txt student@debian:~$ ls -l poznamka.txt -rw-r--r-- 1 student student 0 sep 8 09:00 poznamka.txt student@debian:~$ sudo chown root:root poznamka.txt student@debian:~$ ls -l poznamka.txt -rw-r--r-- 1 root root 0 sep 8 09:00 poznamka.txt student@debian:~$ cat poznamka.txt Hello student@debian:~$ echo "zmena" >> poznamka.txt bash: poznamka.txt: Permission denied student@debian:~$

Formát: chown používateľ:skupina súbor. Keď zmeníš vlastníka na root, sám od seba ho už nemôžeš meniť.

11.2 chgrp: zmena skupiny

Príkaz chgrp (change group) mení len skupinu, nie vlastníka.

student@debian: ~
student@debian:~$ ls -l poznamka.txt -rw-r--r-- 1 root root 6 sep 8 09:00 poznamka.txt student@debian:~$ sudo chown student:student poznamka.txt student@debian:~$ sudo chgrp students poznamka.txt student@debian:~$ ls -l poznamka.txt -rw-r--r-- 1 student students 6 sep 8 09:05 poznamka.txt student@debian:~$

Ak skupina students neexistuje, príkaz zlyhá. Najprv musíš skupinu vytvoriť (to je ale na roota).

11.3 umask: predvolené práva

Ako vie Linux, aké má dať novému súboru práva? Používa umask (user mask). Predvolená umask je zvyčajne 0022.

student@debian: ~
student@debian:~$ umask 0022 student@debian:~$ touch normal.txt student@debian:~$ ls -l normal.txt -rw-r--r-- 1 student student 0 sep 8 09:10 normal.txt student@debian:~$ umask 0002 student@debian:~$ touch zdielane.txt student@debian:~$ ls -l zdielane.txt -rw-rw-rw- 1 student student 0 sep 8 09:10 zdielane.txt student@debian:~$

Ako to funguje: maximálne práva pre súbor sú 666 (rw-rw-rw-), pre adresár 777 (rwxrwxrwx). Umask maže práva bit po bite (nie aritmetickým odčítaním) - bit nastavený v umask sa z maximálnych práv odoberie. Pri 022 stratia skupina a ostatní zápis: 666644 (rw-r--r--). Preto nové súbory nemajú x.

Prečo súbory nemajú x?
Linux zámerne nedáva novým súborom právo spustenia. Keby každý nový súbor bol spustiteľný, mohol by to byť bezpečnostný problém. Právo x pridáš len keď naozaj potrebuješ niečo spustiť.

11.4 Praktické prípady

student@debian: ~
student@debian:~$ ls -la /etc/passwd -rw-r--r-- 1 root root 2456 sep 8 08:00 /etc/passwd student@debian:~$ ls -la /etc/shadow -rw-r----- 1 root shadow 1234 sep 8 08:00 /etc/shadow student@debian:~$ ls -la /usr/bin/python3 -rwxr-xr-x 1 root root 5432 sep 8 08:00 /usr/bin/python3 student@debian:~$

/etc/passwd je čitateľný všetkými (644), lebo obsahuje zoznam používateľov a každý program to potrebuje. /etc/shadow obsahuje heslá, preto je čitateľný len rootom (640). /usr/bin/python3 musí byť spustiteľný, má teda x pre všetkých (755).

chown iba na vlastné súbory
NIKDY nemeň chown na systémových súboroch. Ak zmeníš vlastníka na /usr/bin/ alebo /etc/, systém môže prestať fungovať. Meniť vlastníka smieš len na svojich súboroch v domovskom adresári, a aj to väčšinou len cez sudo.

11.5 Časový rozpis

ČasťČo robímeČas
Teóriachown, chgrp, umask, prečo nemajú súbory x10 min
Praxchown, chgrp, umask, ls -la na systémové súbory35 min
ÚlohaDomáca úloha na konci10 min
🏠 Domáca úloha
  1. Vysvetli, čo robí chown student:dokumenty subor.txt - čo sa zmení a pre koho.
  2. Prečo majú nové súbory predvolene práva ako -rw-r--r-- a nie -rwxr-xr-x? Čo s tým má spoločné umask?
  3. Kedy by si súboru nastavil práva 600 a kedy 644? Uveď príklad pre každý prípad.
  4. Prečo je nebezpečné meniť chown na systémových súboroch?
Hodina 12 · Blok 3

Mini-projekt: práva

Zhrnutie všetkého z blokov 1 až 3 a praktický projekt s nastavením práv.

Opakovanie 10 min Prax 35 min Úloha 10 min

12.1 Rýchle opakovanie

Prešli sme si tri bloky. Poďme si pripomenúť kľúčové príkazy, než ich všetky spojíme do jedného projektu.

BlokKľúčové príkazyČo robia
Blok 1whoami, pwd, lsZistenie polohy a okolia
Blok 2cd, mkdir, touch, cp, mv, rmPohyb a správa súborov
Blok 2cat, head, tail, grepČítanie súborov
Blok 2>, >>, |, <Redirekcie a rúry
Blok 3sudo, su, idPoužívatelia a root
Blok 3chmod, chown, ls -lPráva súborov

12.2 Projekt: priečinok "firma"

Vytvoríme realistickú štruktúru priečinkov pre fiktívnu firmu. Cieľ je použiť všetko, čo sme sa naučili. Ide o to, aby si si overil, že vieš ovládať terminál bez nápovedy.

Štruktúra, ktorú vytvoríme:

student@debian: ~
student@debian:~$ tree firma firma ├── dokumenty │ └── zmluvy ├── scripty │ ├── uvitanie.sh │ └── info.sh └── verejne └── cennik.txt 0 directories, 4 files student@debian:~$

12.3 Krok 1: vytvorenie štruktúry

student@debian: ~
student@debian:~$ mkdir -p firma/dokumenty/zmluvy student@debian:~$ mkdir -p firma/scripty student@debian:~$ mkdir -p firma/verejne student@debian:~$ touch firma/dokumenty/zmluvy/zmluva.txt student@debian:~$ touch firma/scripty/uvitanie.sh student@debian:~$ touch firma/scripty/info.sh student@debian:~$ echo "Cennik sluzieb: 50 EUR/hod" > firma/verejne/cennik.txt student@debian:~$

12.4 Krok 2: nastavenie práv

student@debian: ~
student@debian:~$ chmod 750 firma/dokumenty student@debian:~$ chmod 750 firma/dokumenty/zmluvy student@debian:~$ chmod 755 firma/verejne student@debian:~$ chmod 755 firma/scripty student@debian:~$ chmod 644 firma/verejne/cennik.txt student@debian:~$

Vysvetlenie nastavení:

  • dokumenty (750): vlastník rwx, skupina r-x, ostatní nič. Len ty a tvoja skupina sa dostanú dnu.
  • verejne (755): vlastník rwx, všetci ostatní r-x. Každý môže čítať a vstúpiť.
  • cennik.txt (644): vlastník rw, ostatní len r. Čitateľný, ale nie prepísateľný.

12.5 Krok 3: vytvorenie a spustenie skriptu

student@debian: ~
student@debian:~$ nano firma/scripty/uvitanie.sh # Vlož tento obsah: #!/bin/bash echo "Ahoj z krúžku!" echo "Dnes je $(date)" echo "Prihlaseny pouzivatel: $(whoami)" student@debian:~$ chmod 755 firma/scripty/uvitanie.sh student@debian:~$ ./firma/scripty/uvitanie.sh Ahoj z krúžku! Dnes je Pond 08. Sep 2025, 09:30:00 EDT Prihlaseny pouzivatel: student student@debian:~$
Tip pre info.sh
Vytvor aj druhý skript info.sh, ktorý vypíše: koľko súborov je v firma/dokumenty, aké súbory sú v firma/verejne, a obsah /etc/hostname. Použi príkazy ls a cat vnútri skriptu.

12.6 Krok 4: overenie všetkého

student@debian: ~
student@debian:~$ ls -laR firma/ firma/: druwxr-x--- 3 student student 4096 sep 8 09:30 . druwxr-x--- 2 student student 4096 sep 8 09:30 dokumenty druwxr-xr-x 2 student student 4096 sep 8 09:30 scripty -rwxr-xr-x 1 student student 67 sep 8 09:32 info.sh -rwxr-xr-x 1 student student 85 sep 8 09:31 uvitanie.sh druwxr-xr-x 2 student student 4096 sep 8 09:30 verejne -rw-r--r-- 1 student student 28 sep 8 09:30 cennik.txt student@debian:~$
Skript nefunguje?
Ak ./uvitanie.sh vráti "Permission denied", skontroluj ls -l. Chýba ti právo x. Oprav cez chmod +x uvitanie.sh. Ak dostaneš "command not found", pravdepodobne chýba prvý riadok #!/bin/bash (shebang).

12.7 Časový rozpis

ČasťČo robímeČas
OpakovanieRýchle zhrnutie blokov 1 až 310 min
ProjektVytvorenie firmy, práva, skripty35 min
ÚlohaDomáca úloha na konci10 min
🏠 Domáca úloha
  1. Nakresli štruktúru priečinku firma (dokumenty, skripty, verejne) a ku každému pripíš, aké práva by si nastavil a prečo.
  2. Vysvetli na príklade, prečo je kombinácia 755 pre adresár bezpečná, ale 777 nie.
  3. Zhrň 3 najdôležitejšie veci, ktoré si sa naučil v blokoch 1-3.
Hodina 13 · Blok 4

Premenné a echo

Prvý skript, premenné, vstup od používateľa a príkazová substitúcia.

Teória 10 min Prax 30 min Úloha 10 min

13.1 Čo je skript?

Skript je obyčajný textový súbor, v ktorom sú príkazy postupne za sebou. Namiesto toho, aby si písal príkazy jeden po druhom do terminálu, napíšeš ich do súboru a shell ich spustí naraz.

Prvý riadok skriptu sa volá shebang. Hovorí systému, akým programom sa má súbor spustiť:

  • #!/bin/bash pre bash skripty
  • #!/bin/sh pre POSIX sh (obecnejší, ale menej funkcii)

Na našom krúžku budeme používať bash, takže shebang bude vždy #!/bin/bash.

13.2 Vytvorenie prvého skriptu

Otvor textový editor nano a vytvor súbor:

student@debian: ~
student@debian:~$ nano prvy.sh

Napíš do neho toto:

prvy.sh
#!/bin/bash # Toto je môj prvý skript echo "Ahoj, svet!"

Ulož (Ctrl+O), odíď z nano (Ctrl+X). Teraz musíš súboru dať oprávnenie na spustenie a spustiť ho:

student@debian: ~
student@debian:~$ chmod +x prvy.sh student@debian:~$ ./prvy.sh Ahoj, svet! student@debian:~$
Prečo ./?
Keď spúšťaš skript z aktuálneho adresára, musíš napísať ./prvy.sh. Bez ./ shell hľadá program v adresároch uvedených v premennej PATH a tvoj skript tam nie je. Bez chmod +x dostaneš chybu "Permission denied".

13.3 Premenné a echo

Premenná je priestor, v ktorom shell uchováva hodnotu. Priradíš ju takto:

student@debian: ~
student@debian:~$ meno="Jano" student@debian:~$ echo $meno Jano student@debian:~$ echo "$ meno je super" Jano je super student@debian:~$

Všimni si: meno="Jano" nemá medzery okolo =. Pri priraďovaní je to prísne zakázané. Na čítanie hodnoty pridáš znak $ pred názov premennej.

Žiadne medzery okolo =
Správne: meno="Jano". Nesprávne: meno = "Jano". Shell by to interpretoval ako pokus o spustenie príkazu meno s argumentmi = a "Jano". Výsledok? Chyba.

13.4 Citácia: jednodvojitá vs jednoduchá

Typ uvozoviek mení, ako shell spracúva premenné:

student@debian: ~
student@debian:~$ meno="Jano" student@debian:~$ echo "Ahoj $meno" Ahoj Jano student@debian:~$ echo 'Ahoj $meno' Ahoj $meno student@debian:~$
  • Dvojitá uvozovka "...": shell nahradí premenné za ich hodnoty (tzv. rozšírenie).
  • Jednoduchá uvozovka '...': všetko sa berie doslovne, žiadne nahradzovanie.

Väčšinou budeš používať dvojité uvozovky. Jednoduché si zapamätaj pre prípady, keď nechceš, aby shell niečo nahradil.

13.5 Načítanie vstupu: read

Príkaz read čaká, kým používateľ niečo napíše a stlačí Enter. Hodnotu uloží do premennej:

student@debian: ~
student@debian:~$ echo "Zadaj svoje meno:" Zadaj svoje meno: student@debian:~$ read meno Petra student@debian:~$ echo "Ahoj, $meno!" Ahoj, Petra! student@debian:~$

Aj read má voliteľný parameter -p pre výzvu, aby si nemusel písať echo zvlášť:

prvy.sh
#!/bin/bash read -p "Zadaj svoje meno: " meno echo "Vitaj, $meno!"

13.6 Príkazová substitúcia: $(...)

Výsledok akéhokoľvek príkazu môžeš uložiť do premennej pomocou $(príkaz):

student@debian: ~
student@debian:~$ datum=$(date) student@debian:~$ echo "Dnes je $datum" Dnes je Tue Sep 8 10:30:00 CEST 2026 student@debian:~$

Vnútri zátvoriek sa spustí príkaz a jeho výstup sa dosadí namiesto $(...). Funguje to všade, kde môžeš použiť premennú.

13.7 Kompletný príklad: pozdrav

Vytvor súbor pozdrav.sh:

pozdrav.sh
#!/bin/bash # Skript pozdravu s menom a dátumom read -p "Zadaj svoje meno: " meno datum=$(date +%d.%m.%Y) echo "" echo "Ahoj, $meno!" echo "Dnes je $datum" echo "Pekný deň ti praje Linux krúžok."

Nezabudni: chmod +x pozdrav.sh a potom ./pozdrav.sh.

🏠 Domáca úloha
  1. Vysvetli rozdiel medzi '$meno' a "$meno" - v ktorom prípade sa premenná rozšíri na hodnotu?
  2. Čo je shebang #!/bin/bash a prečo sa dáva na začiatok skriptu?
  3. Napíš na papier malý skript: pozdraví používateľa menom zadaným cez read a vypíše dnešný dátum. Bez počítača, len syntax.
  4. Prečo pri priradení meno=Jano nesmú byť medzery okolo =?
Hodina 14 · Blok 4

Podmienky if

Rozhodovanie v skriptoch: if, else, elif a testovanie podmienok.

Teória 15 min Prax 30 min Úloha 10 min

14.1 Syntax príkazu if

Príkaz if spustí blok príkazov len vtedy, keď je podmienka pravdivá. Základná štruktúra vyzerá takto:

vzor
if [ podmienka ]; then príkaz ak pravda else príkaz ak nepravda fi

Slovo fi na konci je "if" pozpäť. Áno, vážne. Shell má rád takéto vtipy. Pre viaceré vetvenia použiješ elif:

vzor
if [ podmienka1 ]; then príkaz1 elif [ podmienka2 ]; then príkaz2 else príkaz3 fi

14.2 Testovanie súborov

Shell má zabudované testy, ktoré začínajú znakom -. Najčastejšie používané:

TestVýznamPríklad
-eSúbor existuje[ -e /etc/passwd ]
-fJe to obyčajný súbor[ -f prvy.sh ]
-dJe to adresár[ -d /home ]
-rSúbor je čitateľný[ -r prvy.sh ]
-wSúbor je zapisovateľný[ -w prvy.sh ]
-xSúbor je spustiteľný[ -x prvy.sh ]
student@debian: ~
student@debian:~$ if [ -e /etc/passwd ]; then echo "Existuje"; else echo "Nenájdené"; fi Existuje student@debian:~$ if [ -d /tmp ]; then echo "Adresár"; else echo "Nie je adresár"; fi Adresár student@debian:~$

Kvôli čitateľnosti ale takto krátke if-y v skriptoch nepíšeme. Radšej:

student@debian: ~
student@debian:~$ nano kontrola.sh
kontrola.sh
#!/bin/bash # Kontrola, či existuje súbor subor="/etc/passwd" if [ -e "$subor" ]; then echo "Súbor $subor existuje." else echo "Súbor $subor nebol nájdený." fi

14.3 Porovnávanie reťazcov a čísel

Na porovnávanie hodnôt sa používajú ďalšie operátory:

TypOperátorVýznamPríklad
Stringy=rovna sa[ "$a" = "ahoj" ]
Stringy!=nerovna sa[ "$a" != "ahoj" ]
Čísla-eqrovna sa[ "$a" -eq 5 ]
Čísla-nenerovna sa[ "$a" -ne 5 ]
Čísla-gtväčšie ako[ "$a" -gt 5 ]
Čísla-ltmenšie ako[ "$a" -lt 5 ]
Čísla-geväčšie alebo rovné[ "$a" -ge 5 ]
Čísla-lemenšie alebo rovné[ "$a" -le 5 ]
Pozor: > a < nie sú porovnávacie operátory!
V shelli sú > a < operátory presmerovania (output/input). Ak by si napísal [ $a > 5 ], shell by vytvoril prázdny súbor s názvom "5" a porovnal by niečo úplne iné. Na číselné porovnávanie vždy používaj -gt, -lt atď.
student@debian: ~
student@debian:~$ cislo=7 student@debian:~$ if [ "$cislo" -gt 5 ]; then echo "Väčšie ako 5"; else echo "5 alebo menej"; fi Väčšie ako 5 student@debian:~$ meno="Jano" student@debian:~$ if [ "$meno" = "Jano" ]; then echo "Poznám ťa!"; fi Poznám ťa! student@debian:~$
test je to isté ako [ ]
Príkaz test -e /etc/passwd robí presne to isté ako [ -e /etc/passwd ]. Zátvorky sú len alternatívny zápis. Na našom krúžku budeme používať [ ], pretože je to častejšie v literatúre.

14.4 Praktický príklad

Vytvor skript kontrola_suboru.sh, ktorý zistí, či zadaný súbor existuje a či je to súbor alebo adresár:

kontrola_suboru.sh
#!/bin/bash # Kontrola typu cesty echo -n "Zadaj cestu: " read cesta if [ ! -e "$cesta" ]; then echo "Cesta $cesta neexistuje." elif [ -f "$cesta" ]; then echo "Je to obyčajný súbor." elif [ -d "$cesta" ]; then echo "Je to adresár." else echo "Niečo iné (socket, link...)." fi
student@debian: ~
student@debian:~$ chmod +x kontrola_suboru.sh && ./kontrola_suboru.sh Zadaj cestu: /home/student Je to adresár. student@debian:~$ ./kontrola_suboru.sh Zadaj cestu: /etc/hostname Je to obyčajný súbor. student@debian:~$
Medzery okolo [ a ] sú povinné
[ "$a" = "b" ] funguje. ["$a"="b"] nie. Zátvorky sú v skutočnosti príkaz test a ako každý príkaz potrebujú medzery medzi argumentami. Bez medzier dostaneš "command not found" alebo chybný výsledok.
🏠 Domáca úloha
  1. Nakresli vetviaci diagram if / else pre skript, ktorý skontroluje, či súbor existuje.
  2. Vysvetli rozdiel medzi [ "$a" = "b" ] a [ "$a" -gt 5 ] - na čo sa porovnáva v oboch.
  3. Prečo sú medzery okolo [ a ] povinné? Čo by sa stalo bez nich?
  4. Vysvetli, kedy použiješ elif namiesto ďalšieho samostatného if.
Hodina 15 · Blok 4

Cykly for a while

Opakovanie príkazov: for cyklus, while, break a continue.

Teória 10 min Prax 30 min Úloha 10 min

15.1 For cyklus

Cyklus for spustí rovnaké príkazy pre každú hodnotu v zozname. Základný vzor:

vzor
for premenná in hodnota1 hodnota2 hodnota3; do príkaz done

Jednoduchý príklad, ktorý vypíše čísla 1, 2, 3:

student@debian: ~
student@debian:~$ for i in 1 2 3; do echo "Číslo: $i"; done Číslo: 1 Číslo: 2 Číslo: 3 student@debian:~$

Na dlhšie telo cyklu použijeme viacriadkový zápis:

student@debian: ~
student@debian:~$ for farba in cervena zelena modra; do > echo "Mám rád $farbu" > done Mám rád cervena Mám rád zelena Mám rád modra student@debian:~$

15.2 Postupnosť čísel: seq

Namiesto vypisovania čísel jedno po druhom môžeš použiť seq:

student@debian: ~
student@debian:~$ seq 1 5 1 2 3 4 5 student@debian:~$ for i in $(seq 1 10); do echo -n "$i "; done 1 2 3 4 5 6 7 8 9 10 student@debian:~$
Rozšírenie hviezdičky v cykle
Keď napíšeš for subor in *.txt; do, shell najprv rozšíri *.txt na zoznam súborov (presne ako keď píšeš ls *.txt) a potom prejde každý z nich. Ak žiadne .txt súbory neexistujú, cyklus sa spustí raz s doslovným reťazcom *.txt. Na to pozor.

15.3 Prechádzanie súborov

Praktický príklad: vypíšeme všetky shell skripty v aktuálnom adresári:

student@debian: ~
student@debian:~$ for subor in *.sh; do > echo "Skript: $subor" > chmod +x "$subor" > done Skript: kontrola.sh Skript: pozdrav.sh Skript: prvy.sh student@debian:~$

15.4 While cyklus

while opakuje príkazy, kým je podmienka pravdivá. Často sa používa s počítadlom:

pocitadlo.sh
#!/bin/bash # Počítanie od 1 do 10 cislo=1 while [ "$cislo" -le 10 ]; do echo "$cislo" cislo=$((cislo + 1)) done echo "Hotovo!"
Aritmetická substitúcia
Výraz $((cislo + 1)) vykoná matematickú operáciu. Inak by cislo=$cislo+1 bolo len spojenie reťazcov: "1+1" namiesto 2. Arithmetiku vždy dávaj do $(( )).

15.5 break a continue

Ako v ostatných programovacích jazykoch, aj tu máme prerušenie cyklu:

  • break - ukončí cyklus okamžite
  • continue - preskočí zostávajúce príkazy a ide na ďalšiu iteráciu
student@debian: ~
student@debian:~$ for i in 1 2 3 4 5; do > if [ "$i" -eq 3 ]; then continue; fi > echo "$i" > done 1 2 4 5 student@debian:~$

15.6 Praktický príklad: hromadný rename

Nasledujúci skript premenuje všetky .txt súbory na .bak:

rename.sh
#!/bin/bash # Presun .txt na .bak pocet=0 for subor in *.txt; do if [ -f "$subor" ]; then nove="${subor%.txt}.bak" mv "$subor" "$nove" echo "$subor → $nove" pocet=$((pocet + 1)) fi done echo "Premenovaných: $pocet súborov"

Výraz ${subor%.txt} odstráni príponu .txt z konca reťazca. Je to jednoduchšie ako sed alebo iné nástroje.

🏠 Domáca úloha
  1. Čo vypíše tento cyklus? for i in 1 2 3; do echo "Pokus $i"; done - rozpíš každý krok.
  2. Kedy použiješ for a kedy while? Uveď príklad pre oba.
  3. Vysvetli, čo robí break a continue v cykle - aký je medzi nimi rozdiel?
  4. Napíš hlavičku cyklu for, ktorý prejde všetky súbory *.txt v aktuálnom adresári.
Hodina 16 · Blok 4

Funkcie a parametre

Vlastné funkcie, argumenty skriptu a návratové hodnoty.

Teória 15 min Prax 30 min Úloha 10 min

16.1 Vlastné funkcie

Funkcia je blok kódu, ktorý si pomenúš a môžeš ho volať viackrát. Šetrí opakovanie a robí skripty čitateľnejšie.

vzor
meno_funkcie() { príkazy } # Volanie funkcie (bez zátvoriek!) meno_funkcie

Príklad s funkciou, ktorá vypíše uvítaciu správu:

funkcie.sh
#!/bin/bash privitanie() { echo "=========================" echo " Vitaj v našom skripte!" echo " Dátum: $(date +%d.%m.%Y)" echo "=========================" } zbohom() { echo "Ďakujem za použitie skriptu." echo "Čau!" } # Volanie funkcií privitanie echo "Tu niečo robíme..." zbohom

Funkciu definuješ pred tým, ako ju zavoláš. Volanie je jednoducho názov funkcie bez zátvoriek. Argumenty pre funkciu sa odovzdávajú rovnako ako pre skript, cez medzery za názvom.

16.2 Parametre skriptu

Keď spustíš ./skript.sh prvy druhy treti, jednotlivé slová sa dostanú do špeciálnych premenných:

PremennáVýznamPríklad
$0Názov spusteného skriptu./skript.sh
$1Prvý argumentprvy
$2Druhý argumentdruhy
$#Počet argumentov3
$@Všetky argumentyprvy druhy treti
$?Návratový kód posledného príkazu0 (úspech)
pozdrav.sh
#!/bin/bash # Skript s argumentmi echo "Skript: $0" echo "Počet argumentov: $#" echo "Prvý: $1" echo "Druhý: $2" echo "Všetky: $@"
student@debian: ~
student@debian:~$ chmod +x pozdrav.sh student@debian:~$ ./pozdrav.sh Jana Peter Skript: ./pozdrav.sh Počet argumentov: 2 Prvý: Jana Druhý: Peter Všetky: Jana Peter student@debian:~$

16.3 Návratové hodnoty

Každý príkaz v Linuxe po skončení vráti exit status. Štandardne platí:

  • 0 - príkaz prešiel úspešne
  • 1 a viac - niečo sa pokazilo

Hodnotu uložíš príkazom return (vo funkcii) alebo exit (zo skriptu). Prečítaš ju cez $?:

student@debian: ~
student@debian:~$ ls /etc/passwd /etc/passwd student@debian:~$ echo $? 0 student@debian:~$ ls /nieco_neexistujuce ls: cannot access '/nieco_neexistujuce': No such file or directory student@debian:~$ echo $? 2 student@debian:~$
$? je 0 len keď všetko prešlo
Príkaz echo $? vráti 0, ak posledný príkaz bol úspešný. Akékoľvek iné číslo (1, 2, 127...) znamená problém. Toto je základ, na ktorom stojí väčšina kontrol v shell skriptoch.

Vo funkcii môžeš vrátiť hodnotu cez return. Pozor, return vie vrátiť len číslo 0-255. Na vrátenie reťazca sa používa echo a $(...):

pocitaj.sh
#!/bin/bash secti() { echo $(($1 + $2)) } vysledok=$(secti 5 3) echo "5 + 3 = $vysledok"

16.4 Praktický príklad: spracovanie argumentov

Skript, ktorý pozdraví prvý a druhý argument, ale overí, či boli zadané:

argumenty.sh
#!/bin/bash # Spracovanie argumentov pouzivaj() { echo "Použitie: $0 <meno> <priezvisko>" } if [ "$#" -lt 2 ]; then echo "Chýbajú argumenty!" pouzivaj exit 1 fi echo "Ahoj, $1 $2!" echo "Tvoje celé meno má $(echo "$1 $2" | wc -c) znakov (vrátane medzery a nového riadku)."
student@debian: ~
student@debian:~$ chmod +x argumenty.sh student@debian:~$ ./argumenty.sh Chýbajú argumenty! Použitie: ./argumenty.sh <meno> <priezvisko> student@debian:~$ ./argumenty.sh Ján Novák Ahoj, Ján Novák! Tvoje celé meno má 12 znakov (vrátane medzery a nového riadku). student@debian:~$
Vždy kontroluj počet argumentov
Ak skript potrebuje argumenty a používateľ ich nepošle, dostaneš prázdne premenné a nepredvídateľné správanie. Kontrola cez $# na začiatku skriptu je zvyk, ktorý sa oplatí.
🏠 Domáca úloha
  1. Čo znamenajú $1, $2, $# a $0 pri skripte?
  2. Napíš na papier funkciu, ktorá prijíma 2 čísla a vypíše ich súčet, plus volanie funkcie. Bez počítača.
  3. Čo znamená návratová hodnota $? a čo ti prezradí o minulom príkaze?
  4. Prečo je $? rovný 0, keď príkaz prešiel, a 1 alebo viac, keď zlyhal?
Hodina 17 · Blok 4

Praktický skript: záloha

Zostavíme funkčný zálohovací skript od nuly po riadkoch.

Teória 10 min Prax 40 min Úloha 10 min

17.1 Čo budeme robiť

Na tejto hodine vytvoríme skript, ktorý automaticky zálohuje vybraný adresár do komprimovaného archívu. Názov archívu bude obsahovať dátum, aby sme vždy vedeli, kedy bola záloha vytvorená.

Zálohovanie je príklad reálneho prípadu, kedy sa skript oplatí. Namiesto toho, aby si každý deň ručne písal tar príkaz, necháš to na skript.

17.2 Príkaz tar

tar je štandardný nástroj na vytváranie archívov. Jeho základné príznaky:

PríznakVýznam
-cVytvor archív (create)
-zKomprimuj cez gzip
-fNázov výstupného súboru (file)
-xRozbaľ archív (extract)
-vPodrobný výpis (verbose)

Jednoduchý príkaz na zálohu celého adresára:

student@debian: ~
student@debian:~$ tar -czf zaloha_2026-09-08.tar.gz Documents/ student@debian:~$ ls -lh zaloha_2026-09-08.tar.gz -rw-r--r-- 1 student student 12K Sep 8 10:00 zaloha_2026-09-08.tar.gz student@debian:~$
Poradie príznakov -czf
-c vytvorí, -z zbalí cez gzip, -f určuje meno súboru. Príznak -f musí byť vždy posledný pred názvom súboru, lebo berie nasledujúci argument ako názov. -cfz zaloha.tar.gz by nefungovalo správne.

17.3 Dátum v názve

Na automatické pridanie dátumu do názvu použijeme $(date +%F):

student@debian: ~
student@debian:~$ date +%F 2026-09-08 student@debian:~$ echo "zaloha_$(date +%F).tar.gz" zaloha_2026-09-08.tar.gz student@debian:~$

Formát %F je skratka pre %Y-%m-%d, teda rok-mesiac-deň. Takýto názov sa pekne zoradí chronologicky.

17.4 Celý skript: záloha.sh

Poďme si to celé zostaviť. Vytvor súbor zaloha.sh:

zaloha.sh
#!/bin/bash # Jednoduchý zálohovací skript # Nastavenie zdroj="/home/student/Documents" ciel="/home/student/zalohy" nazov="zaloha_$(date +%F).tar.gz" # 1. Over, či zdrojový priečinok existuje if [ ! -d "$zdroj" ]; then echo "Chyba: Adresár $zdroj neexistuje!" exit 1 fi # 2. Vytvor cieľový adresár, ak neexistuje if [ ! -d "$ciel" ]; then mkdir -p "$ciel" echo "Vytvorený adresár: $ciel" fi # 3. Vytvor zálohu echo "Zálohujem $zdroj..." tar -czf "$ciel/$nazov" -C "$(dirname "$zdroj")" "$(basename "$zdroj")" # 4. Over, či archív vznikol if [ -f "$ciel/$nazov" ]; then velkost=$(du -h "$ciel/$nazov" | cut -f1) echo "Záloha úspešná!" echo "Súbor: $ciel/$nazov" echo "Veľkosť: $velkost" else echo "Chyba: Záloha nebola vytvorená!" exit 1 fi

17.5 Rozbor po riadkoch

Prejdime si kľúčové časti:

mkdir -p vytvorí adresár vrátane všetkých nadriadených. Bez -p by mkdir /home/student/zalohy fungovalo, ale mkdir /home/student/zalohy/test by zlyhalo, ak zalohy ešte neexistuje.

-C "$(dirname "$zdroj")" zmení pracovný adresár pred archiváciou. Vďaka tomu archív obsahuje priečinok Documents/ a nie úplnú cestu /home/student/Documents/. Pri rozbaľovaní by to spôsobilo nepríjemnú štruktúru.

du -h zobrazí veľkosť súboru v čitateľnom formáte (KB, MB, GB). cut -f1 vezme len prvý stĺpec (číslo veľkosti) bez názvu súboru.

student@debian: ~
student@debian:~$ chmod +x zaloha.sh student@debian:~$ ./zaloha.sh Zálohujem /home/student/Documents... Záloha úspešná! Súbor: /home/student/zalohy/zaloha_2026-09-08.tar.gz Veľkosť: 12K student@debian:~$

17.6 Rozbaľovanie zálohy

Na rozbalenie archívu slúži tar -xzf:

student@debian: ~
student@debian:~$ cd /tmp && tar -xzf /home/student/zalohy/zaloha_2026-09-08.tar.gz student@debian:/tmp$ ls Documents student@debian:/tmp$ ls Documents/ poznamky.txt seminar.txt ulohy.txt student@debian:/tmp$
Záloha vs. archív
Záloha je archív, ktorý vytvoríš na ochranu dát. Archív je len zbalený súbor (a možno komprimovaný). Rozdiel je v účele, nie v technológii. Rovnaký príkaz tar sa používa na oboje.
🏠 Domáca úloha
  1. Rozlúšti prepínače tar -czf: čo robí c, z a f?
  2. Prečo je dobré dávať do názvu zálohy dátum? Aké problémy by nastali bez neho?
  3. Nakresli postup zálohovacieho skriptu ako flowchart (kontrola priečinka → tvorba archívu → výpis výsledku).
  4. Prečo je lepšie zálohovať do archívu (tar.gz) ako len kopírovať priečinok?
Hodina 18 · Blok 4

Mini-projekt: skript

Samostatná práca: zostavíme "Systémového reportéra".

Teória 5 min Prax 50 min Úloha 5 min

18.1 Zadanie projektu

Dnes si všetko vezmeš do vlastných rúk. Tvojou úlohou je napísať skript report.sh, ktorý vypíše prehľad o aktuálnom stave systému.

Skript má vypísať tieto informácie:

InformáciaAko získať
Dátum a časdate
Meno používateľawhoami
Názov počítačahostname
Vyťaženie pamätefree -h | head -2
Miesto na diskudf -h /
Procesy používateľaps -u $(whoami)
Počet súborov v adresárils | wc -l

Skript ulož ako ~/report.sh a nastav mu oprávnenie chmod 755.

18.2 Štruktúra riešenia

Rozdeľ si skript na funkcie. Každá funkcia sa postará o jednu sekciu reportu. Toto je ozaj dobrý návyk, ktorý sa ti zíde v každom väčšom skripte.

report.sh
#!/bin/bash # Systémový reportér sekcia() { echo "" echo "=== $1 ===" } sekcia "Dátum a čas" date sekcia "Používateľ" echo "Meno: $(whoami)" echo "Počítač: $(hostname)" sekcia "Pamäť" free -h | head -2 sekcia "Disk" df -h / sekcia "Procesy" ps -u "$(whoami)" --no-headers | wc -l echo "Bežiacich procesov: $(ps -u "$(whoami)" --no-headers | wc -l)" sekcia "Súbory v aktuálnom adresári" echo "Počet: $(ls | wc -l)" echo "" echo "=== Koniec reportu ==="

Funkcia sekcia() len pekne formatuje nadpisy. Vďaka nej nemusíš písať echo "=== ... ===" stále dokola. Kód zostáva čistý a ľahko sa mení.

18.3 Spustenie a overenie

student@debian: ~
student@debian:~$ chmod 755 report.sh student@debian:~$ ./report.sh === Dátum a čas === Tue Sep 8 10:30:00 CEST 2026 === Používateľ === Meno: student Počítač: debian === Pamäť === total used free shared buff/cache available Mem: 3.8Gi 420Mi 2.9Gi 12Mi 480Mi 3.1Gi === Disk === Filesystem Size Used Avail Use% Mounted on /dev/sda6 19G 2.8G 15G 16% / === Procesy === Bežiacich procesov: 4 === Súbory v aktuálnom adresári === Počet: 8 === Koniec reportu === student@debian:~$

18.4 Pomocné tipy

Ak sa niečo nedarí, skús postupovať takto:

  • Najprv otestuj každý príkaz zvlášť v termináli. Funguje free -h | head -2? Funguje ps -u $(whoami)?
  • Pridávaj funkcie postupne. Najprv dátum, potom meno, potom pamäť. Nechaj vždy otestovať.
  • Ak niečo nefunguje, pridaj echo pred problematický riadok a pozri, akú hodnotu má premenná.
  • Na ladenie môžeš dočasne pridať set -x na začiatok skriptu. Shell bude vypisovať každý príkaz pred jeho spustením.
Rozdeľ si prácu na funkcie
Ak píšeš celý skript naraz a nefunguje, je ťažké nájsť chybu. Funkcie ti umožnia testovať každú časť zvlášť. Napíš jednu, otestuj, pridaj ďalšiu. Takto sa pracuje aj v reálnom svete.
🏠 Domáca úloha
  1. Naplánuj na papier, aké sekcie by mal mať report.sh a ktorý príkaz v každej sekcii bude.
  2. Prečo sa oplatí rozdeliť skript na menšie funkcie namiesto jedného dlhého kódu?
  3. Vysvetli, čo robí date +%F a ako by si ho využil v skripte.
  4. Ktorá časť shell scriptingu ti doteraz robí najväčší problém a prečo?
Hodina 19 · Blok 5

Správa softvéru

Inštalácia, aktualizácia a odstraňovanie programov cez balíkový systém.

Teória 15 min Prax 35 min Úloha 10 min

19.1 Čo je balíkový systém?

Balíkový systém je nástroj, ktorým sa v Linuxe inštalujú, aktualizujú a odstraňujú programy. Nemusíš nikam chodiť na web, sťahovať .exe súbory a klikať "Next". Všetko sa dá z terminálu.

Každý program je zabalený do balíka. Balíky sa ukladajú na serveri, ktorý sa volá repozitár. Keď napíšeš príkaz na inštaláciu, systém stiahne balík z repozitára, rozbalí ho a umiestni súbory na správne miesta. Automaticky vyrieši aj závislosti (ďalšie balíky, ktoré ten program potrebuje).

Rôzne distribúcie používajú rôzne balíkové systémy:

DistribúciaSprávca balíkovPríkaz
Debianaptapt install nazov
Linux Mintaptapt install nazov
Fedoradnfdnf install nazov

Na našom krúžku sú zmiešané distribúcie, takže si ukážeme oba varianty. Príkazy sú takmer identické, líši sa len názov správcu balíkov.

19.2 Aktualizácia systému

Pred akoukoľvek inštaláciou by si mal aktualizovať zoznam balíkov. Tým sa stiahne najnovší zoznam dostupných programov a ich verzií.

Debian / Mint
student@debian:~$ sudo apt update Hit:1 http://deb.debian.org/debian bookworm InRelease Hit:2 http://deb.debian.org/debian bookworm-updates InRelease Hit:3 http://security.debian.org/debian-security bookworm-security InRelease Reading package lists... Done student@debian:~$
Fedora
student@fedora:~$ sudo dnf check-update Last metadata expiration check: 0:05:12 ago on Thu Sep 8 10:00:00 2026. Updates metadata is up to date. student@fedora:~$

apt update iba stiahne zoznam, nič neinštaluje. Až apt upgrade nainštaluje samotné aktualizácie. Je to rozdiel: update = aktualizuj zoznam, upgrade = nainštaluj aktualizácie.

Debian / Mint
student@debian:~$ sudo apt upgrade -y Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. student@debian:~$
Fedora
student@fedora:~$ sudo dnf upgrade -y Last metadata expiration check: 0:10:34 ago on Thu Sep 8 10:00:00 2026. Dependencies resolved. Nothing to do. Complete! student@fedora:~$
Vždy najprv update!
Pred inštaláciou alebo upgrade vždy spusti apt update (alebo dnf check-update). Bez toho môže systém hľadať balíky podľa starého zoznamu a nenájde ich, alebo nainštaluje staršiu veriu.

19.3 Hľadanie a inštalácia

Ak nevieš presný názov balíka, vyhľadaj ho:

Debian / Mint
student@debian:~$ apt search prehravac Sorting... Done Full Text Search... Done vlc/stable,now 3.0.21-0+deb12u1 amd64 [installed] Multimedia player and streamer mpv/stable 0.35.1-3 amd64 Movie player playing almost everything student@debian:~$
Fedora
student@fedora:~$ dnf search prehravac Last metadata expiration check: 0:15:22 ago on Thu Sep 8 10:00:00 2026. ================================= Name Exactly Matched: prehravac ================================== ================================== Name Matched: prehravac ==================================== vlc.x86_64 : Multimedia player and streamer mpv.x86_64 : Movie player playing almost everything student@fedora:~$

Vyskúšame si inštaláciu programu tree, ktorý zobrazuje obsah adresárov ako strom:

Debian / Mint
student@debian:~$ sudo apt install tree -y Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed: tree 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 46.4 kB of archives. After this operation, 159 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian bookworm/main amd64 tree amd64 2.1.1-1 [46.4 kB] Fetched 46.4 kB in 0s (320 kB/s) Selecting previously unselected package tree. Unpacking tree (2.1.1-1)... student@debian:~$
Fedora
student@fedora:~$ sudo dnf install tree -y Last metadata expiration check: 0:20:15 ago on Thu Sep 8 10:00:00 2026. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: tree x86_64 2.1.1-5.fc40 fedora 62 k Transaction Summary ================================================================================ Install 1 Package Installed size: 181 k student@fedora:~$
student@debian: ~
student@debian:~$ tree ~/Documents /home/student/Documents ├── projekt │ ├── index.html │ ├── style.css │ └── images │ ├── logo.png │ └── pozadie.jpg └── poznámky.txt 2 directories, 5 files student@debian:~$

19.4 Odstraňovanie programov

Ak program už nepotrebuješ, môžeš ho odstrániť. Dva príkazy: remove odstráni balík, ale ponechá konfiguračné súbory. purge odstráni všetko vrátane konfigurácie.

Debian / Mint
student@debian:~$ sudo apt remove tree -y Reading package lists... Done Building dependency tree... Done The following packages will be REMOVED: tree 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. student@debian:~$
Fedora
student@fedora:~$ sudo dnf remove tree -y Last metadata expiration check: 0:30:00 ago on Thu Sep 8 10:00:00 2026. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Removing: tree x86_64 2.1.1-5.fc40 @fedora 181 k Transaction Summary ================================================================================ Remove 1 Package student@fedora:~$
remove vs. purge
apt remove (alebo dnf remove) odstráni program, ale nechá jeho konfiguráciu v systéme. apt purge odstráni úplne všetko. Ak chceš program nainštalovať znova a ponechať si nastavenia, stačí remove. Ak ho chceš zmazať aj s konfiguráciou, použi purge.

19.5 Ďalšie užitočné príkazy

student@debian: ~
student@debian:~$ apt list --installed Listing... Done base-files/stable,now 12.4 amd64 [installed,automatic] bash/stable,now 5.2.15-2+b7 amd64 [installed,automatic] firefox-esr/stable,now 115.15.0esr-1 amd64 [installed] ... (zoznam bude dlhý) student@debian:~$ dpkg -l | grep tree ii tree 2.1.1-1 amd64 directory listing program student@debian:~$
student@fedora: ~
student@fedora:~$ dnf list installed | grep tree tree.x86_64 2.1.1-5.fc40 @fedora student@fedora:~$
Ktorý správca?
Ak si nie si istý, aký správca balíkov funguje na tvojom systéme, skús apt --version alebo dnf --version. Ten, ktorý nevyhodí chybu, je ten správny.
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi apt update a apt upgrade.
  2. Čo je repozitár a čo sa stane, keď balík, ktorý chceš nainštalovať, v repozitári nie je?
  3. Čo sú závislosti balíka a prečo je dobré, že ich systém rieši automaticky?
  4. Vysvetli, prečo je na Debiane/Minte apt a na Fedore dnf - v čom je princíp rovnaký?
Hodina 20 · Blok 5

Procesy

Čo sa deje v pozadí systému, ako sledovať a riadiť spustené programy.

Teória 15 min Prax 35 min Úloha 10 min

20.1 Čo je proces?

Keď spustíš akýkoľvek program v Linuxe, vytvorí sa proces. Proces je program, ktorý práve beží. Každý proces má svoje číslo (PID) a vie, aký proces ho spustil (PPID).

  • PID (Process ID) - jedinečné číslo každého procesu
  • PPID (Parent Process ID) - PID procesu, ktorý ho spustil
  • UID (User ID) - používateľ, ktorému proces patrí

Na sledovanie a ovládanie procesov slúžia príkazy ps, top, htop, kill a ďalšie.

20.2 Zobrazenie procesov

student@debian: ~
student@debian:~$ ps PID TTY TIME CMD 1234 pts/0 00:00:00 bash 5678 pts/0 00:00:00 ps student@debian:~$

Bazické ps ukáže iba procesy v aktuálnom termináli. To málo stačí. Omnoho užitočnejší je:

student@debian: ~
student@debian:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 169404 11200 ? Ss Sep07 0:12 /sbin/init root 2 0.0 0.0 0 0 ? S Sep07 0:00 [kthreadd] student 1234 0.0 0.1 22836 5400 pts/0 Ss 10:00 0:00 -bash student 1235 0.0 0.0 38468 3200 pts/0 R+ 10:30 0:00 ps aux student@debian:~$

Príznak aux znamená: a = všetky procesy, u = pre používateľa, x = aj bez terminálu. Alternatíva:

student@debian: ~
student@debian:~$ ps -ef | head -5 UID PID PPID C STIME TTY TIME CMD root 1 0 0 Sep07 ? 00:00:12 /sbin/init root 2 0 0 Sep07 ? 00:00:00 [kthreadd] root 3 2 0 Sep07 ? 00:00:00 [pool_workqueue_release] root 4 2 0 Sep07 ? 00:00:00 [kworker/R-inode_wb] student@debian:~$
ps aux vs. ps -ef
Oba príkazy ukážu všetky procesy. Rozdiel je len v formáte výstupu. ps aux zobrazuje percentuálnu spotrebu CPU a RAM, ps -ef ukazuje PPID (rodičovský proces). Používaj ten, ktorý ti viac vyhovuje.

20.3 Interaktívne sledovanie: top a htop

Namiesto statického výpisu môžeš sledovať procesy v reálnom čase:

student@debian: ~
student@debian:~$ htop 1 [||||||||||||||||||||||||||||||||||||||100.0%] Tasks: 87 total, 1 running 2 [||||||||||||||||||||||||||||||||||||||100.0%] Load average: 0.52 0.38 0.29 3 [||||||||||||||||||||||||||||||||||||||100.0%] Uptime: 01:23:45 Mem[||||||||||||||| 420Mi/3.8Gi] Swp[| 0B/2.0Gi] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1 root 20 0 169M 11M 8.2M S 0.0 0.3 0:12.34 /sbin/init 1234 student 20 0 22836 5.4M 4.1M S 0.0 0.1 0:00.12 -bash student@debian:~$

htop je farebný, intuitívny a dá sa ovládať šípkami a klávesmi. Pre ukončenie stlač q.

top funguje podobne, ale je menej prehľadný. Oba ukazujú: koľko procesov beží, ako veľmi sa používa CPU a RAM, ktoré procesy žerú najviac zdrojov.

20.4 Zabíjanie procesov

Ak proces zbesí alebo ho chceš ukončiť, použiješ kill. Potrebuješ PID procesu:

student@debian: ~
student@debian:~$ sleep 300 & [1] 6789 student@debian:~$ ps aux | grep sleep student 6789 0.0 0.0 3212 1024 pts/0 S 10:35 0:00 sleep 300 student 6790 0.0 0.0 6544 1536 pts/0 S+ 10:35 0:00 grep --color=auto sleep student@debian:~$ kill 6789 student@debian:~$ ps aux | grep sleep student 6791 0.0 0.0 6544 1536 pts/0 S+ 10:36 0:00 grep --color=auto sleep # Proces zmizol - zostal iba grep student@debian:~$

Ak normálne kill nepomôže (proces nereaguje), použijeme silnejší signál:

student@debian: ~
student@debian:~$ kill -9 6789 # SIGKILL - okamžite zabije proces student@debian:~$ pkill sleep # Zabije všetky procesy s názvom "sleep" student@debian:~$
kill -9 je posledná možnosť
Normálne kill (bez prepínača) pošle procesu signál SIGTERM a nechá ho korektne skončiť. kill -9 (SIGKILL) proces okamžite ukončí bez možnosti uložiť dáta. Používaj kill bez -9 vždy, keď to ide. -9 až keď nič iné nefunguje.

20.5 Úlohy na pozadí

Pomocník & spustí príkaz na pozadí. Ctrl+Z pozastaví proces. jobs ukáže zoznam pozastavených/odložených úloh. fg vráti poslednú úlohu do popredia. bg ju spustí na pozadí.

student@debian: ~
student@debian:~$ sleep 60 & [1] 7890 student@debian:~$ sleep 120 & [2] 7891 student@debian:~$ jobs [1]+ Running sleep 60 & [2]- Running sleep 120 & student@debian:~$ kill 7890 student@debian:~$ jobs [1]+ Terminated sleep 60 & [2]- Running sleep 120 & student@debian:~$

Ak chceš, aby príkaz bežal aj po odhlásení z terminálu, použi nohup:

student@debian: ~
student@debian:~$ nohup sleep 3600 & [3] 7892 nohup: appending output to 'nohup.out' student@debian:~$
Zhrnutie signálov
kill PID = jemné ukončenie (SIGTERM). kill -9 PID = okamžité ukončenie (SIGKILL). pkill nazov = zabiť všetky procesy podľa názvu. killall nazov = to isté, ale presnejšie.

20.6 Ako vzniká proces

Každý proces vzniká tak, že ho vytvorí iný proces. Žiadny proces jednoducho nevznikne z ničoho. Jadro na to používa dve systémové volania: fork() a exec.

  • fork() vytvorí kópiu rodičovského procesu. Nový proces dostane vlastné PID a dedí obsah pamäte rodiča.
  • exec (napr. execl(), execv()) nahradí aktuálny obraz programu novým programom. Proces zostane ten istý (rovnaké PID), ale beží už niečo úplne iné.

Keď v termináli napíšeš nejaký príkaz, tvoj shell (proces) najprv zavolá fork() a vytvorí kópiu seba samého. V tomto dieťati hneď zavolá exec() a nahradí svoj obraz tým príkazom, ktorý si zadal. Preto má každý proces okrem PID aj PPID (parent PID, číslo rodičovského procesu). Všetky procesy tak tvoria strom, na čele celého stromu je PID 1, čo je systemd.

student@debian: ~
student@debian:~$ ps -ef --forest UID PID PPID C STIME TTY TIME CMD root 1 0 0 Sep07 ? 00:00:12 /sbin/init ── systemd root 345 1 0 Sep07 ? 00:00:05 └─ sshd root 1200 345 0 10:00 ? 00:00:00 └─ sshd: student [priv] student 1234 1200 0 10:00 pts/0 00:00:00 │ └─ -bash student 5678 1234 0 10:05 pts/0 00:00:00 │ └─ ps -ef --forest # strom procesov: každý má rodiča student@debian:~$
Zombie procesy
Keď "zabiješ" nejaký proces, jadro to oznámi jeho rodičovi. Rodič musí zavolať wait(), aby si prevzal informáciu o ukončení dieťaťa. Ak tak neurobí, dieťa sa stane zombie procesom. V top alebo htop ho uvidíš ako Z v stave procesu alebo ako "defunct". Väčšinou sa o to postará sám systém, ale ak zombie zostane visieť, znamená to chybu v rodičovskom procese.
🏠 Domáca úloha
  1. Vysvetli, čo je proces a čo znamená PID a PPID.
  2. Aký je rozdiel medzi kill a kill -9? Prečo sa -9 neodporúča ako prvá voľba?
  3. Čo sa stane, keď spustíš príkaz s & na konci? A čo spraví Ctrl+Z?
  4. Vysvetli, na čo slúži ps aux a čo v ňom vidíš pri svojom používateľovi.
Hodina 21 · Blok 5

Služby a systemd

Správa služieb na pozadí, logovanie a riadenie systému cez systemd.

Teória 15 min Prax 35 min Úloha 10 min

21.1 Čo je systemd?

Keď sa Linux spustí, systemd je prvý proces (PID 1), ktorý naštartuje všetko ostatné. Stará sa o služby (services), ako je SSH, sieť, tlačiareň a ďalšie programy, ktoré bežia na pozadí.

Servis (service) je program, ktorý beží na pozadí a čaká na požiadavky. Príklady:

  • sshd - server pre vzdialené pripojenie cez SSH
  • cron - plánovač úloh
  • NetworkManager - správa siete
  • cups - tlačiarenský server

Každá služba je opísaná v súbore jednotky (unit file), typicky v adresári /etc/systemd/system/. Ovládame ju cez príkaz systemctl.

21.2 Kontrola stavu služieb

student@debian: ~
student@debian:~$ systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-08 09:45:12 CEST; 1h 15min ago Docs: man:sshd(8) man:sshd_config(5) Process: 567 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 789 (sshd) Tasks: 1 (limit: 4607) Memory: 5.2M CPU: 120ms CGroup: /system.slice/ssh.service └─789 "sshd: /usr/sbin/sshd -D [listener] 10 of 10-100 startups" student@debian:~$

Vidíš tri dôležité veci: Loaded (kde je konfigurácia, či je zapnutý pri štarte), Active (že práve beží), a Main PID (číslo hlavného procesu).

student@debian: ~
student@debian:~$ systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION ● ssh.service loaded failed failed OpenBSD Secure Shell server 0 loaded units listed. student@debian:~$

Príkaz systemctl --failed ukáže iba služby, ktoré zlyhali. Ak je zoznam prázdny, systém je v poriadku.

21.3 Štart, stop, reštart

Základné ovládanie služieb:

PríkazČo robí
systemctl start nazovSpustí službu hneď
systemctl stop nazovZastaví službu
systemctl restart nazovZastaví a spustí znova
systemctl enable nazovZapne službu pri štarte systému
systemctl disable nazovVypne službu pri štarte systému
student@debian: ~
student@debian:~$ sudo systemctl restart ssh student@debian:~$ systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-08 11:05:33 CEST; 3s ago student@debian:~$
enable vs. start
systemctl start spustí službu len teraz. systemctl enable nastaví, aby sa služba spustila automaticky pri každom zapnutí systému. Ak chceš niečo spustiť teraz aj pri bootovaní, použi obe: systemctl enable --now nazov.

21.4 Časovanie a logy

systemd-analyze blame ukáže, ako dlho trvalo spustenie jednotlivých služieb. Hodí sa, keď chceš zistiť, prečo sa systém dlho štartuje.

student@debian: ~
student@debian:~$ systemd-analyze blame | head -5 8.123s NetworkManager-wait-online.service 3.456s plymouth-quit-wait.service 1.234s dev-sda6.device 0.890s accounts-daemon.service 0.567s ModemManager.service student@debian:~$

Pre logy (záznamy) systému použijeme journalctl:

student@debian: ~
student@debian:~$ journalctl -u ssh --no-pager -n 10 Sep 08 10:00:12 debian sshd[789]: Server listening on 0.0.0.0 port 22. Sep 08 10:00:12 debian sshd[789]: Server listening on :: port 22. Sep 08 10:05:45 debian sshd[1023]: Accepted publickey for student from 192.168.1.100 Sep 08 10:05:45 debian sshd[1023]: pam_unix(sshd:session): session opened for user student student@debian:~$
student@debian: ~
student@debian:~$ journalctl -f -- Logs begin at Thu 2026-09-08 09:45:12 CEST. -- Sep 08 11:10:01 debian CRON[9012]: (student) CMD (test -x /usr/sbin/anacron || ...) Sep 08 11:10:15 debian kernel: [12345.678] USB disconnect, address 2 # Stlač Ctrl+C pre ukončenie student@debian:~$

Príkaz journalctl -f sleduje logy v reálnom čase, rovnako ako tail -f pre súbory. Ukončíš ho Ctrl+C.

root oprávnenia
Na ovládanie služieb potrebuješ sudo. Čítanie logov cez journalctl väčšinou funguje aj ako normálny používateľ, ale niekedy potrebuješ sudo journalctl pre staršie záznamy.

21.5 Ako prebieha boot

Keď stlačíš tlačidlo napájania, nedostaneš sa k shellu okamžite. Systém prechádza niekoľkými krokmi, než sa spustí.

  1. BIOS alebo UEFI sa spustí a vykoná základné testy hardvéru (POST, Power-On Self Test). Overí, že RAM, disk a ďalšie komponenty fungujú.
  2. Nájde bootloader zvyčajne v MBR (Master Boot Record) alebo EFI partícii.
  3. Spustí bootloader, napríklad GRUB2, systemd-boot alebo LILO.
  4. Bootloader načíta kernel a voliteľne initramfs, čo je malý dočasný koreňový systém.
  5. Kernel inicializuje hardvér a ovládače a nakoniec spustí init systém (u nás systemd), a tým celý systém.
student@debian: ~
student@debian:~$ systemctl --version systemd 252 (252.30-1~deb12u2) +PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFSETUP +FUTEX +GETTEXT +IDN2 -ICONV +CRYPTO +LIBCRYPTSETUP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFSETUP +FUTEX +IDN2 +PCRE2 student@debian:~$ systemd-analyze Startup finished in 4.123s (kernel) + 8.456s (userspace) = 12.580s graphical.target reached after 11.234s in userspace. student@debian:~$
GRUB2 a initramfs
Väčšina distribúcií dnes používa práve GRUB2 ako bootloader. initramfs je malý dočasný systém, ktorý kernel potrebuje na to, aby dokázal načítať ovládače diskov a prístup ku koreňovému systému. Bez neho by kernel možno nevedel, na ktorom disku má hľadať tvoj systém.

21.6 Iné init systémy a daemoni

systemd nie je jediný init systém, ktorý existuje. Linuxová komunita má viacero alternatív.

  • SysVinit, klasický UNIX-ovský init. Používa runlevely (stav systému, napríklad podľa Red Hat konvencie 3 = iba terminál, 5 = grafické rozhranie; Debian má naproti tomu 2-5 rovnaké) a skripty v /etc/init.d/. Jednoduchý, ale pomalší, pretože spúšťa služby postupne za sebou.
  • OpenRC, ľahký init systém založený na shell skriptoch. Podporuje paralelné spúšťanie služieb. Typický pre Gentoo, Devuan a ďalšie distribúcie, ktoré nechcú systemd.
  • runit, extrémne rýchly a minimalistický init. Služby spúšťa paralelne a automaticko restartuje tie, ktoré spadnú. Používa ho Void Linux.

Základným pojmom je daemon. Daemon je proces, ktorý beží na pozadí bez priamej interakcie s používateľom. Práve tie spravuješ príkazmi systemctl. Vybrané príklady:

  • CUPS, tlačový server, ktorý spravuje tlačiarne a tlačové úlohy.
  • XOrg / X11, služba na vykresľovanie grafického rozhrania. Zastaralá architektúra, ale stále veľmi rozšírená.
  • Wayland, novšia náhrada XOrg. Postupne ju preberajú distribúcie (Fedora, Ubuntu) ako predvolený zobrazovací server.
Čo je daemon?
Daemon je len proces bežiaci na pozadí bez interakcie s používateľom. Práve tie spravuješ príkazmi systemctl. Keď zapneš sshd, spúšťaš daemon, ktorý čaká na SSH pripojenia. Keď vypneš cups, vypínaš daemon pre tlač. Všetko sú to jednoduché procesy, akurát žiadne nevyžadujú tvoju prítomnosť.
🏠 Domáca úloha
  1. Vysvetli rozdiel medzi systemctl start a systemctl enable - kedy sa čo použije?
  2. Čo je systemd unit a aké typy jednotiek poznáš (okrem služieb)?
  3. Na čo slúži journalctl -u sluzba a kedy pridáš -f?
  4. Prečo sa enable nevzťahuje len na aktuálny beh, ale aj na štart systému?
Hodina 22 · Blok 5

Cron a plánovač

Automatické spúšťanie príkazov a skriptov v naplánovanom čase.

Teória 10 min Prax 30 min Úloha 10 min

22.1 Čo je cron?

Cron je plánovač úloh v Linuxe. Umožňuje naplánovať spúšťanie príkazov alebo skriptov v presne určenom čase. Nastavíš raz a funguje automaticky, bez tvojho zásahu.

Služba cron (alebo crond) beží na pozadí. Každú minútu kontroluje, či niektorý naplánovaný príkaz má prísť na rad. Ak áno, spustí ho.

Nastavenia sa ukladajú do crontab (cron tabuľka). Každý používateľ má svoj vlastný crontab.

22.2 Práca s crontabom

student@debian: ~
student@debian:~$ crontab -l no crontab for student student@debian:~$ crontab -e # Otvorí sa editor (nano alebo vim), kde napíšeš pravidlá student@debian:~$
PríkazČo robí
crontab -eOtvorí crontab na úpravu
crontab -lVypíše obsah crontabu
crontab -rOdstráni celý crontab (pozor!)

22.3 Syntax cron riadku

Každý riadok v crontabe má túto štruktúru:

minúta hodina deň mesiac deň_týždňa príkaz

PozíciaRozsahPríklad
minúta0 - 5930
hodina0 - 238
deň1 - 3115
mesiac1 - 126
deň_týždňa0 - 7 (0 a 7 = nedeľa)1
príkazakýkoľvek príkaz alebo skript/home/student/zaloha.sh

Znak * znamená "každý". Špeciálne znaky: */5 = každých 5, 1,15 = 1. a 15., 1-5 = od 1 do 5.

22.4 Praktické príklady

Otvor crontab cez crontab -e a pridaj tieto riadky:

crontab
# Spustiť zálohu každý deň o 3:00 v noci 0 3 * * * /home/student/zaloha.sh # Spustiť report každý pondelok o 8:00 0 8 * * 1 /home/student/report.sh # Vypísať dátum každú hodinu do logu 0 * * * * echo "$(date)" >> /tmp/hodiny.log # Test: spustiť každú minútu (pre testovanie, potom zmazať!) * * * * * echo "Test $(date)" >> /tmp/cron_test.log student@debian:~$
Výpis crontabu
Po uložení (v nano: Ctrl+O, Enter, Ctrl+X) over príkazom crontab -l, že sa riadky uložili správne.

22.5 Cron zo zálohy z hodiny 17

Na hodine 17 sme napísali zálohovací skript. Teraz ho naplánujeme, aby sa spúšťal automaticky:

student@debian: ~
student@debian:~$ ls -la ~/zaloha.sh -rwxr-xr-x 1 student student 256 Sep 7 12:00 /home/student/zaloha.sh student@debian:~$ crontab -l # Spustiť zálohu každý deň o 3:00 0 3 * * * /home/student/zaloha.sh student@debian:~$

Predtým, než založíš cron, otestuj skript manuálne:

student@debian: ~
student@debian:~$ bash ~/zaloha.sh Záloha vytvorená: backup_2026-09-08.tar.gz student@debian:~$ ls ~/zalohy/ backup_2026-09-08.tar.gz student@debian:~$
Vždy testuj pred cron
Nikdy nenastavuj cron pre skript, ktorý si predtým nespustil manuálne. Ak má skript chybu, cron ju bude opakovať každý deň a možno si to nevšimneš.

22.6 Logy cronu

Ako zistíš, či cron naozaj spustil tvoj príkaz?

student@debian: ~
student@debian:~$ systemctl status cron ● cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/system/cron.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-08 09:45:12 CEST; 1h 30min ago student@debian:~$ journalctl -u cron --no-pager -n 10 Sep 08 09:45:12 debian cron[456]: (CRON) INFO (pidfile fd = 3) Sep 08 09:45:12 debian cron[456]: (CRON) INFO (Running @reboot jobs) Sep 08 10:00:01 debian CRON[7890]: (student) CMD (echo "$(date)" >> /tmp/hodiny.log) Sep 08 11:00:01 debian CRON[8012]: (student) CMD (echo "$(date)" >> /tmp/hodiny.log) student@debian:~$
student@debian: ~
student@debian:~$ cat /tmp/hodiny.log Thu Sep 8 10:00:01 CEST 2026 Thu Sep 8 11:00:01 CEST 2026 student@debian:~$
Rýchle testovanie
Ak chceš otestovať cron bez čakania, nastav čas o 1-2 minúty v budúcnosti, pridaj riadok do crontabu, počkaj, over výstup a potom riadok zmaž. Príkaz crontab -r odstráni celý crontab, radšej uprav cez crontab -e a vymaž len ten riadok.
🏠 Domáca úloha
  1. Rozlúšti cron riadok: 30 7 * * 1 /usr/local/bin/zaloha.sh - kedy presne sa spustí?
  2. Vymenuj 5 polí cron riadku a čo každé znamená.
  3. Napíš cron riadok, ktorý spustí skript každý deň o 18:00.
  4. Prečo je cron na serveroch dôležitý? Uveď aspoň 2 reálne príklady použitia.
Hodina 23 · Blok 6

Základy siete

IP adresy, gateway, DNS a prvé sieťové príkazy.

Teória 15 min Prax 30 min Úloha 10 min

23.1 Čo je IP adresa?

Každý počítač v sieti má svoju adresu, podobne ako dom má číslo. Bez nej by sa dáta nemali kam doručiť.

IP adresa je číslo, napríklad 192.168.1.10. localhost je špeciálna adresa 127.0.0.1, ktorá vždy ukazuje na tvoj vlastný počítač. Gateway je brána, cez ktorú sa dostaneš von do internetu, a DNS prekladá mená ako google.com na IP adresy.

localhost
localhost je vždy 127.0.0.1 a ukazuje na tvoj vlastný počítač. Každý počítač v sieti má unikátnu IP adresu, aby sa dáta doručili správnemu stroju.

23.2 Zisti svoju IP a gateway

Príkaz ip je moderný nástroj na správu siete. ip a ukáže všetky sieťové rozhrania a ich adresy.

student@debian: ~
student@debian:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 inet 127.0.0.1/8 scope host lo 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 inet 192.168.1.10/24 brd 192.168.1.255 scope global enp0s3 student@debian:~$ ip route default via 192.168.1.1 dev enp0s3 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.10 student@debian:~$

lo je loopback rozhranie (localhost). enp0s3 je tvoja skutočná sieťová karta. Riadok default via 192.168.1.1 ti hovorí, že gateway je 192.168.1.1.

23.3 Ping a traceroute

ping pošle testovací paket a čaká na odpoveď. Najprv otestujeme localhost, potom sa pozrieme von do internetu.

student@debian: ~
student@debian:~$ ping -c 4 localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.028 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms --- localhost ping statistics --- 4 packets transmitted, 4 received, 0% packet loss student@debian:~$ ping -c 4 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=12.4 ms 64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=11.9 ms --- 1.1.1.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss student@debian:~$

-c 4 obmedzí počet paketov na štyri, inak by ping bežal donekonečna. 1.1.1.1 je verejný DNS server Cloudflare, dobrý na test, či máš internet.

student@debian: ~
student@debian:~$ tracepath 1.1.1.1 1?: [LOCALHOST] pmtu 1500 1: 192.168.1.1 0.412ms 2: 10.0.0.1 1.203ms 3: 89.173.0.1 8.451ms 4: 1.1.1.1 12.300ms reached student@debian:~$

tracepath (alebo traceroute) ukáže cestu, ktorou paket prechádza cez jednotlivé routery až k cieľu. Každý riadok je jeden skok v sieti.

23.4 Počúvajúce porty a hostname

ss -tln ukáže, ktoré služby na tvojom počítači počúvajú na sieťových portoch. hostname ti povie názov stroja.

student@debian: ~
student@debian:~$ ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 127.0.0.1:631 0.0.0.0:* student@debian:~$ hostname debian student@debian:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 debian student@debian:~$

Port 22 počúva SSH, port 631 tlačiareň. Súbor /etc/hosts je lokálna tabuľka mien, ktorá sa prečíta skôr ako DNS. Zatiaľ ho len ukazujeme, neupravujeme.

Zapamätaj si
ip a ukáže IP adresy, ip route gateway, ping testuje spojenie a ss -tln ukáže počúvajúce porty. Tieto štyri príkazy sú základ každého sieťového admina.
🏠 Domáca úloha
  1. Vysvetli vlastnými slovami, čo je IP adresa, gateway a DNS - na čo slúžia?
  2. Prečo je localhost vždy 127.0.0.1 a na čo je dobrý?
  3. Čo znamená riadok default via 192.168.1.1 z výpisu ip route?
  4. Kedy by si použil ping a čo ti odpoveď (alebo jej absencia) prezradí?
Hodina 24 · Blok 6

SSH

Vzdialená správa serverov cez Secure Shell.

Teória 15 min Prax 30 min Úloha 10 min

24.1 Čo je SSH?

SSH (Secure Shell) je šifrovaný protokol na vzdialenú správu počítačov. Správcovia serverov sa takto pripájajú na stroje, ktoré nemajú žiadny monitor.

Keď sa pripojíš cez SSH, dostaneš terminál vzdialeného počítača, akoby si pri ňom sedel. Všetko, čo pošleš, je šifrované, takže nikto na ceste nevidí tvoje heslá ani príkazy.

24.2 Prvé pripojenie

Pripojenie má tvar ssh používateľ@ip. Skúsime sa pripojiť na localhost ako root, čo je bežné na VM.

student@debian: ~
student@debian:~$ ssh root@localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. Are you sure you want to continue connecting (yes/no)? yes root@localhost's password: ******** Welcome to Debian GNU/Linux 12! root@debian:~# hostname debian root@debian:~# exit logout Connection to localhost closed. student@debian:~$

Pri prvom pripojení sa ťa systém pýta, či dôveruješ serveru. Odpovieš yes a potom zadáš heslo. Všimni si, že prompt sa zmenil na root@debian:~#.

24.3 Inštalácia SSH servera

Ak SSH server nemáš nainštalovaný, nainštalujeme ho. Na Debiane a Minte cez apt, na Fedore cez dnf.

student@debian: ~
student@debian:~$ sudo apt install openssh-server Reading package lists... Done Building dependency tree... Done openssh-server is already the newest version. student@debian:~$ sudo systemctl enable ssh Synchronizing state of ssh.service with SysV service script. student@debian:~$ sudo systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) student@debian:~$
student@fedora: ~
student@fedora:~$ sudo dnf install openssh-server Last metadata expiration check: 1:12:34 ago. Package openssh-server-9.6p1-3.fc40.x86_64 is already installed. student@fedora:~$ sudo systemctl enable --now sshd Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service. student@fedora:~$

systemctl enable zabezpečí, že sa služba spustí aj po reštarte. Na Fedore sa služba volá sshd, na Debiane ssh.

24.4 SSH kľúče

Heslá sa dajú uhádnuť. Kľúče sú bezpečnejšie. Vygeneruješ si pár: súkromný kľúč (necháš si ho) a verejný kľúč (nakopíruješ na server).

student@debian: ~
student@debian:~$ ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/home/student/.ssh/id_ed25519): Enter Enter passphrase (empty for no passphrase): Enter Your identification has been saved in /home/student/.ssh/id_ed25519 Your public key has been saved in /home/student/.ssh/id_ed25519.pub student@debian:~$ ssh-copy-id root@localhost /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s) root@localhost's password: ******** Number of key(s) added: 1 student@debian:~$ ssh root@localhost Welcome to Debian GNU/Linux 12! root@debian:~# exit logout student@debian:~$

Po nakopírovaní kľúča sa pripojíš bez zadávania hesla. ssh-copy-id ti verejný kľúč pridá do súboru ~/.ssh/authorized_keys na serveri.

Nikdy nezdieľaj súkromný kľúč
Súkromný kľúč ~/.ssh/id_ed25519 (alebo id_rsa) je tvoja identita. Kto ho má, môže sa za teba prihlásiť. Verejný kľúč .pub môžeš zdieľať, súkromný nikdy.

24.5 SCP - kopírovanie súborov

scp kopíruje súbory medzi počítačmi cez SSH. Funguje ako cp, ale s adresou vzdialeného stroja.

student@debian: ~
student@debian:~$ echo "ahoj" > poznamka.txt student@debian:~$ scp poznamka.txt root@localhost:/root/ poznamka.txt 100% 5 0.1KB/s 00:00 student@debian:~$ scp -r moj_adresar root@localhost:/root/ moj_adresar/subor1.txt 100% 12 0.2KB/s 00:00 moj_adresar/subor2.txt 100% 34 0.3KB/s 00:00 student@debian:~$

scp -r kopíruje celý adresár rekurzívne. Smer šípky určuje smer kopírovania: z lokálneho na vzdialený, alebo naopak.

🏠 Domáca úloha
  1. Prečo je komunikácia cez SSH šifrovaná a čo by sa mohlo stať, keby nebola?
  2. Vysvetli rozdiel medzi súkromným a verejným kľúčom pri SSH. Ktorý nikdy nikomu nedávaš?
  3. Prečo je prihlasovanie cez kľúče bezpečnejšie ako cez heslá?
  4. Akou formou sa zadáva vzdialené pripojenie? Napíš príklad ssh ... a rozlúšti jednotlivé časti.
Hodina 25 · Blok 6

Súborové systémy

Disky, mountovanie a miesto na disku.

Teória 15 min Prax 30 min Úloha 10 min

25.1 Čo je mount a súborový systém?

Súborový systém určuje, ako sú dáta uložené na disku. Linux najčastejšie používa ext4. Mount znamená pripojiť disk do adresárovej štruktúry.

Na rozdiel od Windowsu, kde má každý disk písmeno, v Linuxe sa disky pripájajú do existujúcich adresárov. Napríklad tvoj hlavný disk je pripojený na / a swap je špeciálny oddiel, ktorý slúži ako virtuálna pamäť (diskový doplnok RAM).

25.2 lsblk a blkid

lsblk ukáže disky a oddiely v prehľadnej stromovej štruktúre. blkid ukáže identifikátory oddielov.

student@debian: ~
student@debian:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 18G 0 part / └─sda3 8:3 0 1.5G 0 part [SWAP] student@debian:~$ sudo blkid /dev/sda2: UUID="a1b2c3d4-..." TYPE="ext4" PARTUUID="..." /dev/sda3: UUID="e5f6a7b8-..." TYPE="swap" PARTUUID="..." student@debian:~$

Vidíš disk sda s tromi oddielmi: boot, hlavný systém na ext4 a swap. MOUNTPOINTS ukazuje, kam je ktorý oddiel pripojený.

25.3 Miesto na disku

df -h ukáže voľné miesto na všetkých pripojených systémoch. du ukáže, koľko miesta zaberajú adresáre.

student@debian: ~
student@debian:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 18G 6.2G 11G 37% / tmpfs 1.9G 0 1.9G 0% /dev/shm student@debian:~$ du -sh * 4.0K Dokumenty 1.2G Downloads 8.0K poznamka.txt 340M Projekty student@debian:~$ du -sh . 1.6G . student@debian:~$

-h znamená human-readable, teda čitateľné veľkosti ako 1.2G. du -sh * ukáže veľkosť každého súboru a adresára v aktuálnom priečinku, du -sh . celkovú veľkosť aktuálneho adresára.

25.4 Mount a fstab

mount bez argumentov ukáže všetky aktuálne pripojené systémy. Súbor /etc/fstab definuje, čo sa pripojí pri štarte.

student@debian: ~
student@debian:~$ mount | head -5 /dev/sda2 on / type ext4 (rw,relatime) proc on /proc type proc (rw,nosuid) sysfs on /sys type sysfs (rw,nosuid) devtmpfs on /dev type devtmpfs (rw,nosuid) student@debian:~$ cat /etc/fstab UUID=a1b2c3d4-... / ext4 errors=remount-ro 0 1 UUID=e5f6a7b8-... none swap sw 0 0 student@debian:~$
/etc/fstab NEUPRAVOVAŤ
Súbor /etc/fstab riadi, čo sa pripojí pri štarte systému. Chyba v ňom môže spôsobiť, že sa systém nespustí. Nikdy ho neupravuj bez dozoru učiteľa.

25.5 Vytvor a odstráň testovací súbor

dd vytvorí súbor presnej veľkosti. Vytvoríme 100 MB testovací súbor a hneď ho odstránime.

student@debian: ~
student@debian:~$ dd if=/dev/zero of=/tmp/test bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.12 s, 873 MB/s student@debian:~$ ls -lh /tmp/test -rw-r--r-- 1 student student 100M Sep 8 10:30 /tmp/test student@debian:~$ rm /tmp/test student@debian:~$

if=/dev/zero znamená vstup plný núl, bs=1M veľkosť bloku a count=100 počet blokov, teda 100 MB. Súbor sme hneď odstránili, aby sme nezaplnili disk.

25.6 Prehľad súborových systémov

Na disku môže byť viac formátov a každý má inú filozofiu. Toto sú tie, na ktoré v Linuxe najčastejšie narazíš.

FormátKde ho stretnešPoznámka
ext4systémový disk / a /homemoderný žurnalovací súborový systém, natívny pre Linux, dnešný štandard
ext2staršie systémy, embeddedbez žurnalovania, výborná podpora v jadre
btrfs/home, /var, NAS serveryžurnalovací, podporuje snapshoty
xfsveľké dáta, serverové diskysilný žurnalovací FS, bežný na Linux serveroch
swapswapovací súbor/partíciadisková virtuálna pamäť (paging), dnes častejšie swapfile (obdoba pagefile.sys vo Windows)
FAT32 / exFATUSB kľúče, pamäťové kartyuniverzálna podpora všade
NTFSWindows diskyžurnalovací, v Linuxe výborná podpora cez ntfs-3g, rozumie aj Windows právam
SquashFSlive CD / read-only systémykomprimovaný súborový systém v obraze
Ktorý si vybrať?
Pre systémový disk ext4, pre zdieľané dáta medzi OS NTFS/exFAT, pre snapshoty btrfs.
Formátovanie zmaže všetky dáta
Súborový systém disku sa mení formátovaním, ktoré zmaže všetky dáta. Nikdy neformátuj disk, ktorého obsah nechceš stratiť. Na kurze to nepotrebuješ robiť.
🏠 Domáca úloha
  1. Vysvetli vlastnými slovami, čo je mount a čo súborový systém.
  2. Aký je rozdiel medzi df -h a du -sh? Kedy použiť ktorý?
  3. Prečo je /etc/fstab dôležitý a prečo by si ho bez uváženia nemeňoval?
  4. Čo je swap a na čo slúži?
Hodina 26 · Blok 6

Nano a vim

Textové editory priamo v termináli.

Teória 10 min Prax 30 min Úloha 10 min

26.1 Prečo editor v termináli?

Na serveri nemáš grafické prostredie. Keď sa pripojíš cez SSH, jediný spôsob, ako upraviť konfiguračný súbor, je textový editor v termináli.

Naučíš sa dva: nano je jednoduchý a priateľský, vim je výkonný, ale má strmú krivku učenia. Oba nájdeš na každom Linuxe.

26.2 Nano - priateľský editor

Nano otvoríš príkazom nano súbor. Dole v okne vidíš klávesové skratky. Ctrl+O uloží, Ctrl+X ukončí, Ctrl+W hľadá.

student@debian: ~
student@debian:~$ nano poznamky.txt GNU nano 7.2 poznamky.txt Ahoj, toto su moje poznamky z hodiny. Dnes sme sa ucili nano a vim. ^G Nápoveda ^O Uložiť ^W Hľadať ^X Ukončiť student@debian:~$

V nano píšeš rovno, žiadne módy. Ctrl+O ťa opýta na názov súboru, stlačíš Enter a je uložený. Ctrl+X ťa vráti do terminálu.

26.3 Vim - výkonný, ale náročný

Vim má dva hlavné módy: normal a insert. V normal móde naviguješ a vydávaš príkazy, v insert móde píšeš text. i ťa prepne do insert, Esc vždy vráti do normal.

Vim má módy
Vim má módy: insert a normal. Esc ti vždy vráti normal mód. Ak si sa zasekol, stlač Esc a si v bezpečí.
student@debian: ~
student@debian:~$ vim poznamky.txt Ahoj, toto su moje poznamky z hodiny. Dnes sme sa ucilo nano a vim. ~ ~ ~ -- INSERT -- student@debian:~$

Po otvorení si v normal móde. Stlač i a začni písať. Keď skončíš, stlač Esc, napíš :wq a Enter pre uloženie a ukončenie. :q! ukončí bez uloženia.

26.4 Základné vim príkazy

Pár príkazov, ktoré ti ušetria veľa času. V normal móde:

PríkazVýznam
iprepnúť do insert módu (písať)
Escvrátiť sa do normal módu
h j k lpohyb vľavo, dole, hore, vpravo
xzmazať znak pod kurzorom
:wquložiť a ukončiť
:q!ukončiť bez uloženia

Namiesto šípok používaj h j k l. Spočiatku to bude pomalé, ale po pár dňoch budeš rýchlejší ako s myšou.

26.5 vimtutor

Vim má vstavaný tutoriál. Stačí spustiť vimtutor a prejdeš si všetko krok za krokom priamo v termináli.

student@debian: ~
student@debian:~$ vimtutor =============================================================================== = Vitajte v tutoriáli VIM - Verzia 1.7 = = = = Vim je veľmi výkonný editor, ktorý má veľa príkazov... = = = =============================================================================== student@debian:~$

vimtutor je najlepší spôsob, ako sa naučiť vim. Prejdi si ho celý, zaberie to asi 30 minút a naučí ťa všetko podstatné.

🏠 Domáca úloha
  1. Prečo sa vôbec učíme editovať text v termináli, keď existujú grafické editory? Uveď 2 dôvody.
  2. Vysvetli rozdiel medzi módom insert a normal vo vime. Ktorou klávesou sa medzi nimi prepínaš?
  3. Kedy by si použil nano a kedy vim? Na čo je vimtutor?
  4. Napíš spamäti 3 užitočné klávesové skratky pre nano a 3 pre vim.
Hodina 27 · Blok 6

tmux a vzdialená správa

Terminálový multiplexor, ktorý drží tvoje relácie nažive.

Teória 10 min Prax 30 min Úloha 10 min

27.1 Problém s odpojením

Keď sa pripojíš cez SSH a spustíš dlhý príkaz, čo sa stane, keď sa odpojíš? Proces zomrie, pretože bežal na popredí tvojej relácie.

Predstav si, že inštaluješ veľký balík, odpojíš sa na obed a po návrate zistíš, že inštalácia sa prerušila. tmux tento problém rieši.

27.2 Čo je tmux?

tmux je terminálový multiplexor. Vytvorí reláciu, ktorá beží nezávisle od tvojho pripojenia. Môžeš sa odpojiť, relácia beží ďalej, a keď sa vrátiš, pripojíš sa späť a vidíš presne to, čo si nechal.

tmux drží reláciu nažive
tmux drží tvoju reláciu nažive aj po odpojení SSH. Procesy v nej bežia ďalej, aj keď si offline.

27.3 Vytvor a pripoj reláciu

Novú reláciu vytvoríš tmux new -s názov. Odpojíš sa Ctrl+B a potom d. Znova sa pripojíš tmux attach.

student@debian: ~
student@debian:~$ tmux new -s praca [detached (from session praca)] student@debian:~$ tmux ls praca: 1 windows (created Tue Sep 8 10:30:01 2026) student@debian:~$ tmux attach -t praca student@debian:~$

Všimni si: tmux new -s praca vytvoril reláciu, ale hneď sa odpojil, pretože sme ju spustili z terminálu. tmux ls ukáže bežiace relácie a tmux attach -t praca sa k nej pripojí.

27.4 Dlhý príkaz a odpojenie

Teraz to najdôležitejšie. Spustíme dlhý príkaz v tmux, odpojíme sa a znova pripojíme. Príkaz medzitým beží.

student@debian: ~
student@debian:~$ tmux new -s dlhy [v tmux relácii] student@debian:~$ sleep 60 && echo "hotovo" # stlač Ctrl+B a potom d pre odpojenie [detached (from session dlhy)] student@debian:~$ tmux attach -t dlhy hotovo student@debian:~$

Príkaz sleep 60 bežal 60 sekúnd. Medzitým sme sa odpojili a znova pripojili, a príkaz stále bežal a dokončil sa. Presne takto funguje tmux.

27.5 Rozdelenie okna

tmux ti umožní mať viac terminálov v jednom okne. Ctrl+B a % rozdelí okno vertikálne, Ctrl+B a " horizontálne. Prepínaš sa Ctrl+B a šípkou.

student@debian: ~
student@debian:~$ tmux new -s rozdelene [v tmux relácii] # Ctrl+B % -> vertikálne rozdelenie # Ctrl+B " -> horizontálne rozdelenie # Ctrl+B šípka -> prepínanie medzi panelmi student@debian:~$

V jednej polovici môžeš sledovať logy, v druhej písať príkazy. Je to ako viac okien terminálu, ale v jednom SSH pripojení.

🏠 Domáca úloha
  1. Prečo proces spustený na popredí zomrie, keď sa odpojíš cez SSH? Čo s tým spraví tmux?
  2. Vysvetli, čo znamená detach a attach v tmux - aký je medzi nimi rozdiel?
  3. Kedy sa ti v reálnej administrácii oplatí tmux? Uveď 2 príklady.
  4. Prečo je pri dlhých príkazoch (napr. inštalácia) nebezpečné jednoducho zavrieť terminál?
Hodina 28 · Blok 6

Bezpečnosť a firewall

Základné pravidlá a ochrana systému firewallom.

Teória 15 min Prax 30 min Úloha 10 min

28.1 Základné pravidlá bezpečnosti

Bezpečnosť nie je o jednom nástroji, ale o návykoch. Tri najdôležitejšie: aktualizuj systém, používaj silné heslá a spúšťaj čo najmenej služieb.

Každá otvorená služba je potenciálny vstup pre útočníka. Čím menej portov počúva, tým menšia plocha na útok. A aktualizácie opravujú známe diery, takže ich neodkladaj.

28.2 Firewall - čo to je?

Firewall je filter, ktorý rozhoduje, ktoré spojenia môžu prejsť do tvojho počítača. Predvolene môže blokovať všetko a ty povolíš len to, čo naozaj potrebuješ.

Neotváraj zbytočné porty
Neotváraj porty, ktoré nepotrebuješ. Každý otvorený port je potenciálny vstup pre útočníka. Povol len to, čo naozaj používaš.

28.3 UFW na Debiane a Minte

ufw (Uncomplicated Firewall) je jednoduchý firewall pre Debian a Mint. Zapneš ho, skontroluješ stav a povolíš SSH.

student@debian: ~
student@debian:~$ sudo ufw enable Firewall is active and enabled on system startup student@debian:~$ sudo ufw status Status: active student@debian:~$ sudo ufw allow ssh Rule added Rule added (v6) student@debian:~$ sudo ufw status Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) student@debian:~$

Po zapnutí firewall blokuje všetko okrem povolených pravidiel. sudo ufw allow ssh povolí port 22, aby si sa mohol pripojiť cez SSH.

28.4 Firewalld na Fedore

Fedora používa firewalld. Skontroluješ stav služby a vypíšeš aktívne pravidlá.

student@fedora: ~
student@fedora:~$ systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) student@fedora:~$ sudo firewall-cmd --list-all public (active) target: default services: dhcpv6-client ssh ports: student@fedora:~$ sudo firewall-cmd --add-service=http --permanent success student@fedora:~$ sudo firewall-cmd --reload success student@fedora:~$

firewall-cmd --list-all ukáže povolené služby. --add-service=http --permanent pridá HTTP natrvalo a --reload aplikuje zmeny.

28.5 Ako firewall blokuje port

Ukážeme si rozdiel. Keď je firewall vypnutý, port je otvorený. Keď ho zapneme bez povolenia, port sa zablokuje a spojenie zlyhá.

student@debian: ~
student@debian:~$ sudo ufw disable Firewall stopped and disabled on system startup student@debian:~$ nc -l 8080 & [1] 1234 student@debian:~$ ss -tln | grep 8080 LISTEN 0 1 0.0.0.0:8080 0.0.0.0:* student@debian:~$ sudo ufw enable Firewall is active and enabled on system startup student@debian:~$ ss -tln | grep 8080 (žiadny výstup - port je zablokovaný) student@debian:~$

So zapnutým firewallom sa k portu 8080 zvonku nikto nedostane, aj keď služba beží. Firewall ho jednoducho neprepustí.

28.6 Ďalšie bezpečnostné tipy

Pár pravidiel, ktoré ťa ochránia na reálnom serveri:

  • Vypni root login cez SSH v /etc/ssh/sshd_config (riadok PermitRootLogin no).
  • Používaj silné heslá a SSH kľúče namiesto hesiel.
  • Buď opatrný so sudoers, neprideľuj zbytočné práva.
  • Pravidelne aktualizuj systém cez apt upgrade alebo dnf upgrade.
🏠 Domáca úloha
  1. Prečo by firewall nemal mať otvorené všetky porty? Čo sa môže stať pri zle nastavenom serveri?
  2. Vysvetli pravidlo „povoliť len to, čo naozaj potrebuješ“ na príklade SSH a web servera.
  3. Napíš 3 bezpečnostné pravidlá, ktoré by si dodržal na vlastnom serveri.
  4. Prečo sú pravidelné aktualizácie systému dôležité pre bezpečnosť?
Hodina 29 · Blok 7

Web server (nginx)

Inštalácia, konfigurácia a testovanie web servera nginx.

Teória 15 min Prax 30 min

29.1 Čo je web server?

Každá web stránka, ktorú navštíviš v prehliadači, niekde beží. Web server je program, ktorý prijíma požiadavky od klientov (prehliadačov) a posiela im späť obsah. Komunikácia prebieha cez protokol HTTP (port 80) alebo HTTPS (port 443).

Funguje to jednoducho: ty napíšeš v prehliadači adresu, tvoj počítač sa spojí so serverom a server odošle späť HTML stránku. Na našom VM si rozbeháme vlastný web server, aby sme videli, ako to celé funguje odvnútra.

Klient-server model
Klient (prehliadač) sa pýta, server odpovedá. Ty si na krúžku budeš serverom aj klientom zároveň, pretože všetko beží na jednom stroji.

29.2 Inštalácia nginx

nginx (vyslovuj "engine-x") je jeden z najpopulárnejších web serverov na svete. Je rýchly, spoľahlivý a ľahko sa konfiguruje. Nainštalujeme ho cez správcu balíkov.

Inštalácia nginx (Debian/Mint)
student@debian:~$ sudo apt update ... student@debian:~$ sudo apt install nginx -y Čítanie zoznamov balíkov... Hotovo ... student@debian:~$
Inštalácia nginx (Fedora)
student@fedora:~$ sudo dnf install nginx -y ... student@fedora:~$

29.3 Spustenie a kontrola

Po inštalácii treba nginx spustiť a nastaviť, aby sa spúšťal automaticky pri štarte systému. Použijeme na to systemctl, ktorý už poznáme z hodiny 21.

Spustenie nginx
student@debian:~$ sudo systemctl enable --now nginx student@debian:~$ systemctl status nginx nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled) Active: active (running) since ... student@debian:~$
Test pomocou curl
student@debian:~$ curl localhost <!DOCTYPE html> <html> <head><title>Welcome to nginx!</title>... </html> student@debian:~$ curl 127.0.0.1 <!DOCTYPE html> <html> <head><title>Welcome to nginx!</title>... </html> student@debian:~$
Čo je curl?
curl je príkaz na odosielanie HTTP požiadaviek priamo z terminálu. Je to prvý nástroj, ktorým testuješ, či web server funguje. localhost a 127.0.0.1 odkazujú na ten istý stroj, na ktorom sedíš.

29.4 Vlastná stránka

Úvodná stránka nginx je pekná, ale naša bude lepšia. Predvolený obsah sa nachádza v /var/www/html/. Upravíme si ju.

Vytvorenie vlastnej stránky
student@debian:~$ sudo cp /var/www/html/index.nginx-debian.html /var/www/html/index.nginx-debian.html.bak student@debian:~$ sudo nano /var/www/html/index.html # Vlož tento obsah: <!DOCTYPE html> <html lang="sk"> <head><title>Moja stránka</title></head> <body> <h1>Ahoj, toto je môj web server!</h1> <p>Beží na nginx v mojom Linux VM.</p> </body> </html> student@debian:~$ curl localhost <!DOCTYPE html> <html lang="sk"> <head><title>Moja stránka</title></head> <body> <h1>Ahoj, toto je môj web server!</h1> <p>Beží na nginx v mojom Linux VM.</p> </body> </html> student@debian:~$
Zapamätaj si
Obsah stránok nginx sa nachádza v /var/www/html/. Súbory tam píšeš ako root (pomocou sudo), pretože ten adresár vlastní systém. Ak chceš stránku vytvoriť normálnym používateľom, musíš opraviť oprávnenia.
🏠 Domáca úloha
  1. Vysvetli model klient-server na príklade vlastnej web stránky z hodiny.
  2. Čo znamená port 80 a port 443? Aký je medzi nimi rozdiel?
  3. Ako overíš z terminálu, že web server beží? Prečo curl localhost stačí ako test?
  4. Kde leží obsah stránok nginx a prečo doň musíš písať ako root?
Hodina 30 · Blok 7

Vlastný systemd servis

Vytvoríme si vlastnú službu, ktorú vie systemd spúšťať, zastavovať a reštartovať.

Teória 10 min Prax 35 min Úloha 10 min

30.1 Rýchle zopakovanie systemd

V hodine 21 sme sa naučili ovládať hotové služby. Dnes si vytvoríme úplne vlastnú. systemd je správca služieb - vie ich spúšťať pri štarte, reštartovať pri páde a zaznamenávať ich výstup.

Základné príkazy už poznáš:

student@debian: ~
student@debian:~$ systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) student@debian:~$ systemctl restart ssh student@debian:~$ systemctl stop ssh && systemctl start ssh student@debian:~$

Dnes to posunieme ďalej: namiesto hotovej služby si napíšeme vlastný skript a vlastnú definíciu služby v systemd.

30.2 Náš skript

Najprv si pripravíme skript, ktorý bude naša služba spúšťať. Každých 5 sekúnd zapíše aktuálny čas do súboru v domovskom adresári.

Vytvoríme ho v /usr/local/bin - to je štandardné miesto pre vlastné programy.

student@debian: ~
student@debian:~$ sudo nano /usr/local/bin/casopis.sh
/usr/local/bin/casopis.sh
#!/bin/bash # Služba: každých 5 s zapíše čas do log súboru while true; do echo "$(date '+%F %T') - služba beží" >> /home/student/casopis.log sleep 5 done
student@debian: ~
student@debian:~$ sudo chmod +x /usr/local/bin/casopis.sh student@debian:~$ ls -l /usr/local/bin/casopis.sh -rwxr-xr-x 1 root root 119 sep 8 14:30 /usr/local/bin/casopis.sh student@debian:~$
Prečo /usr/local/bin?
Do /usr/local/bin patria programy, ktoré nainštaluješ ručne (nie cez apt/dnf). Odtiaľ ich vie spustiť každý používateľ bez toho, aby musel písať celú cestu.

30.3 Unit súbor

Teraz príde to hlavné - definícia služby pre systemd. Súbory služieb sú v /etc/systemd/system/ a majú príponu .service.

student@debian: ~
student@debian:~$ sudo nano /etc/systemd/system/casopis.service
/etc/systemd/system/casopis.service
[Unit] Description=Môj prvý vlastný servis After=network.target [Service] ExecStart=/usr/local/bin/casopis.sh Restart=always [Install] WantedBy=multi-user.target
SekciaRiadokVýznam
[Unit]DescriptionPopis služby (vidíš ho v status)
[Unit]AfterSpusti až potom, čo je sieť hore
[Service]ExecStartKtorý program sa spustí
[Service]RestartReštartovať vždy, keď skript spadne
[Install]WantedByPri ktorom "cieľe" sa služba spúšťa (multi-user = po prihlásení do systému)

30.4 Spustenie služby

Po vytvorení unit súboru musíš vždy povedať systemd, že sa zmenil: daemon-reload.

student@debian: ~
student@debian:~$ sudo systemctl daemon-reload student@debian:~$ sudo systemctl start casopis student@debian:~$ sudo systemctl enable casopis Created symlink /etc/systemd/system/multi-user.target.wants/casopis.service → /etc/systemd/system/casopis.service. student@debian:~$ systemctl status casopis ● casopis.service - Môj prvý vlastný servis Loaded: loaded (/etc/systemd/system/casopis.service; enabled) Active: active (running) Main PID: 4821 (casopis.sh) student@debian:~$
student@debian: ~
student@debian:~$ cat /home/student/casopis.log 2026-09-08 14:31:02 - služba beží 2026-09-08 14:31:07 - služba beží 2026-09-08 14:31:12 - služba beží student@debian:~$ sudo systemctl stop casopis student@debian:~$ systemctl is-active casopis inactive student@debian:~$ sudo systemctl start casopis student@debian:~$

Služba beží, loguje do súboru a vieš ju kedykoľvek zastaviť a spustiť. Všimnite si, že enable (spúšťa sa pri štarte) je iná vec ako start (spúšťa sa hneď teraz).

daemon-reload je povinný
Vždy, keď zmeníš unit súbor, musíš spustiť sudo systemctl daemon-reload. Inak si systemd pamätá starú verziu a tvoje zmeny sa neprejavia.
Pozor na nekonečný cyklus s Restart=always
Ak skript okamžite skončí s chybou a máš Restart=always, systemd ho bude reštartovať stále dokola. Nekonečný cyklus s sleep 5 je v poriadku, ale dávaj pozor, aby skript nemal logiku, ktorá okamžite zlyhá.
🏠 Domáca úloha
  1. Čo robí ExecStart a čo Restart=always v unit súbore?
  2. Prečo je daemon-reload povinný po zmene unit súboru?
  3. Načrtni, čo všetko treba na vlastný servis: skript, unit súbor, príkazy. Napíš postup v 5 krokoch.
  4. Čo sa stane, keď máš Restart=always a skript okamžite skončí s chybou? Aké je riziko?
Hodina 31 · Blok 7

Logovanie a monitoring

Kde Linux ukladá logy, ako ich čítať a ako sledovať stav systému.

Teória 10 min Prax 35 min Úloha 10 min

31.1 Prečo logovať?

Keď niečo nefunguje, logy sú prvé miesto, kam sa pozrieš. Log je záznam udalostí - kto sa prihlásil, ktorá služba spadla, čo sa dialo v systéme. Každý správca servera trávi čas čítaním logov.

V Linuxe sú logy na dvoch miestach: v /var/log (tradičné súbory) a v samotnom systemd (príkaz journalctl).

31.2 journalctl - logy systemd

journalctl číta logy, ktoré zbiera systemd. Je to najrýchlejší spôsob, ako zistiť, čo sa deje.

student@debian: ~
student@debian:~$ journalctl -n 15 -- Logs begin at sep 8 08:00:00, end at sep 8 14:35:00 -- sep 8 14:34:55 debian systemd[1]: Started casopis.service - Môj prvý vlastný servis. sep 8 14:35:00 debian casopis.sh[4821]: 2026-09-08 14:35:00 - služba beží student@debian:~$ journalctl -u casopis -- Logs begin at sep 8 08:00:00 -- sep 8 14:31:00 debian systemd[1]: Started casopis.service - Môj prvý vlastný servis. sep 8 14:33:12 debian systemd[1]: Stopped casopis.service. student@debian:~$ journalctl -u casopis -f # sleduje logy naživo, ukončí sa Ctrl+C student@debian:~$

-n 15 ukáže posledných 15 riadkov. -u casopis filter na konkrétnu službu. -f (follow) sleduje logy naživo - skvelé pri debugovaní.

31.3 Logy v /var/log

Súbory v /var/log sú tradičnejšie logy, písané priamo programami.

student@debian: ~
student@debian:~$ ls /var/log/ auth.log kern.log syslog apt/ nginx/ journal/ student@debian:~$ sudo tail -n 10 /var/log/auth.log sep 8 14:30:12 debian sudo: student : TTY=pts/0 ; PWD=/home/student ; USER=root ; COMMAND=/usr/bin/nano /usr/local/bin/casopis.sh sep 8 14:31:02 debian systemd-logind[401]: New session 5 of user student. student@debian:~$
SúborČo obsahuje
auth.logPrihlásenia, sudo, zmeny používateľov
kern.logSprávy z jadra, hardvér, ovládače
syslogVšeobecné systémové správy
apt/História inštalácií balíkov
nginx/Logy web servera (ktorý si postavil v hodine 29)
Prečo sudo?
Väčšina logov v /var/log je čitateľná len pre root. Bežný používateľ by ich mohol čítať a zistiť heslá alebo citlivé informácie o systéme.

31.4 logrotate - prečo logy nerastú donekonečna

Logy by bez starostlivosti rástli, až kým by nezaplnili disk. K tomu slúži logrotate - starý log sa po čase "otočí" (zazipuje a nakoniec vymaže).

student@debian: ~
student@debian:~$ ls /etc/logrotate.d/ apt nginx rsyslog sudo ufw student@debian:~$ cat /etc/logrotate.d/nginx /var/log/nginx/*.log { daily rotate 14 compress missingok notifempty } student@debian:~$

Preklad: logy nginx sa rotujú denne, ponechá sa 14 starých verzií, staré sa komprimujú. Nginx má vlastnú konfiguráciu, iné programy tiež.

31.5 Monitoring systému

Na sledovanie aktuálneho stavu systému slúži niekoľko príkazov, ktoré už poznáš. Poďme si ich dať dokopy:

student@debian: ~
student@debian:~$ uptime 14:35:12 up 6:35, 2 users, load average: 0.00, 0.01, 0.05 student@debian:~$ free -h total used free shared buff/cache available Mem: 3.8Gi 520Mi 2.8Gi 12Mi 500Mi 3.0Gi Swap: 2.0Gi 0B 2.0Gi student@debian:~$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda6 19G 3.1G 15G 17% / student@debian:~$ watch -n 2 free -h # každé 2 sekundy obnoví výpis, ukončí sa Ctrl+C student@debian:~$

watch opakuje príkaz stále dokola s prestávkou - super na sledovanie, ako sa systém mení. uptime ukáže, ako dlho systém beží a akú má záťaž.

Prvý krok pri riešení problému
Keď ti niečo nefunguje: 1) systemctl status služba, 2) journalctl -u služba -n 50, 3) Google s presným textom chyby. Log ti vždy povie viac, než hádanie.
🏠 Domáca úloha
  1. Prečo sú logy pre správcu systému také dôležité? Uveď príklad situácie, keď ťa log zachráni.
  2. Vysvetli, čo robí journalctl -u sluzba, -n 50 a -f - čo každý prepínač pridá?
  3. Prečo existuje logrotate a čo by sa stalo, keby logy rotované neboli?
  4. Vymenuj aspoň 3 príkazy na monitoring systému a čo každý ukazuje.
Hodina 32 · Blok 7

Záverečný projekt

Postavíš si kompletného mini-servera s web stránkou, vlastnou službou, zálohou a firewallom.

Zadanie 10 min Samostatná práca 40 min Domáca úloha 10 min

32.1 Zadanie

Toto je tvoja skúška. Postavíš malý, ale funkčný server, ktorý používa všetko, čo sme sa za 31 hodín naučili. Na ďalšej hodine ho odprezentuješ.

Projekt má štyri časti. Prejdi ich postupne a každú otestuj, až potom pokračuj ďalej.

32.2 Časť 1: Web server

Nginx z hodiny 29 musí bežať a na localhost musí odpovedať tvoja vlastná stránka s tvojím menom, triedou a malým popisom.

student@debian: ~
student@debian:~$ systemctl is-active nginx active student@debian:~$ curl localhost | head -n 5 <!DOCTYPE html> <html lang="sk"> <head><title>Projekt Janka</title></head> <body> student@debian:~$

32.3 Časť 2: Vlastná služba

Služba uptime-log (vlastný názov si zvoľ) bude každú minútu zapisovať aktuálny uptime do súboru ~/uptime.log. Využiješ znalosti z hodiny 30.

/usr/local/bin/uptime-log.sh
#!/bin/bash while true; do echo "$(date '+%F %T') $(uptime -p)" >> /home/student/uptime.log sleep 60 done
student@debian: ~
student@debian:~$ sudo systemctl daemon-reload student@debian:~$ sudo systemctl start uptime-log student@debian:~$ sudo systemctl enable uptime-log student@debian:~$ systemctl is-active uptime-log active student@debian:~$

32.4 Časť 3: Záloha

Napíš skript zaloha.sh (z hodiny 17), ktorý zazipuje celý /var/www/html do priečinka ~/backup so zadným dátumom v názve. Skript spustíš ručne.

student@debian: ~
student@debian:~$ mkdir -p ~/backup student@debian:~$ sudo tar -czf ~/backup/web_$(date +%F).tar.gz /var/www/html student@debian:~$ ls -lh ~/backup/ total 12K -rw-r--r-- 1 root root 3.2K sep 8 14:40 web_2026-09-08.tar.gz student@debian:~$ tar -tzf ~/backup/web_2026-09-08.tar.gz var/www/html/index.html var/www/html/index.nginx-debian.html student@debian:~$

32.5 Časť 4: Firewall

Zapni firewall (z hodiny 28) a povol v ňom SSH a HTTP, aby si sa vedel k serveru pripojiť a aby šla stránka otvoriť.

Debian/Mint (ufw)
student@debian:~$ sudo ufw allow ssh student@debian:~$ sudo ufw allow 80 student@debian:~$ sudo ufw enable Firewall is active and enabled on system startup student@debian:~$ sudo ufw status Status: active 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere student@debian:~$
Fedora (firewalld)
student@fedora:~$ sudo firewall-cmd --permanent --add-service=ssh student@fedora:~$ sudo firewall-cmd --permanent --add-service=http student@fedora:~$ sudo firewall-cmd --reload student@fedora:~$ sudo firewall-cmd --list-all ports: 22/tcp 80/tcp student@fedora:~$

32.6 Dokumentácia

Vytvor README.txt v domovskom adresári a do neho napíš odpovede na tieto otázky:

  • Aký názov si dal svojej službe a čo robí?
  • Ako overíš, že web server beží?
  • Kde a ako sa robí záloha?
  • Ako sa volá tvoja služba v systemd a ako ju zastavíš?
Postupuj po krokoch
Nezvládneš všetko naraz. Poradie: web → služba → záloha → firewall → README. Každú časť otestuj hneď po dokončení, nekumuluj chyby na koniec.
Čo môžeš použiť
Všetko: man stránky, --help, svoje poznámky, skripty z minulých hodín. Čo nemôžeš: odpisovať od spolužiaka kompletné riešenie. Môžeš sa poradiť, ale kód si napíš sám - na prezentácii ťa nechám vysvetliť, ako to funguje.
🏠 Domáca úloha
  1. Naplánuj záverečný projekt na papier: 4 časti v poradí a ako každú otestuješ.
  2. Ktorá časť projektu je podľa teba najťažšia a ako ju chceš zvládnuť?
  3. Priprav si 2-minútovú prezentáciu: čo ukážeš a v akom poradí?
  4. Prečo je lepšie dokončiť a otestovať každú časť hneď, ako nechať všetko na koniec?
Hodina 33 · Blok 7

Prezentácia a záver

Posledná hodina: ukážeš, čo si postavil, a oslávime celý kurz.

Prezentácie 40 min Diskusia a záver 15 min

33.1 Prezentácia projektu

Každý z vás má 2 minúty. Premietame na tabuľu, ostatní pozerajú. Tvoj VM je pripravený, projekt beží, ty ho predvedieš.

student@debian: ~
student@debian:~$ systemctl status uptime-log --no-pager | head -n 6 ● uptime-log.service - Zapisuje uptime do logu Loaded: loaded (/etc/systemd/system/uptime-log.service; enabled) Active: active (running) Main PID: 5102 (uptime-log.sh) student@debian:~$ curl localhost <!DOCTYPE html> <html lang="sk"> <head><title>Projekt Janka</title></head> student@debian:~$ cat /home/student/uptime.log 2026-09-08 14:41:01 up 6 hours, 44 minutes 2026-09-08 14:42:01 up 6 hours, 45 minutes student@debian:~$

Odprezentuj štyri veci: web stránku (curl + otvor v prehliadači), službu (status + log), zálohu (ukáž .tar.gz a obsah) a firewall (status). Povedz aj jednu vec, ktorá ťa prekvapila alebo ktorej si nerozumel.

Skvelá práca
Postaviť funkčný server s vlastnou službou, web stránkou a zálohou je viac, než dokáže väčšina dospelých. Si na to hrdý - zaslúžiš si to.

33.2 Čo sme sa naučili za celý kurz

BlokHodinyČo vieš
1 · Úvod1-3VM, inštalácia, prvý login, terminál
2 · Terminál4-8cesty, súbory, wildcards, rúry, man
3 · Práva9-12používatelia, sudo, chmod, chown
4 · Skriptovanie13-18premenné, if, cykly, funkcie, skripty
5 · Balíky a procesy19-22apt/dnf, procesy, systemd, cron
6 · Sieť a admin23-28IP, SSH, súborové systémy, nano/vim, tmux, firewall
7 · Nasadenie29-33nginx, vlastná služba, logy, projekt

33.3 Čo ďalej?

Kurz končí, ale Linux sa nekončí. Tu je pár nápadov, kam pokračovať:

  • Homelab - starý počítač alebo Raspberry Pi ako domáci server (Nextcloud, Plex, AdGuard)
  • Self-hosting - vlastný cloud, vlastné web stránky, vlastný email
  • Certifikáty - Linux Foundation, LPI Linux Essentials (prvá, ľahká certifikácia)
  • Pokročilé skriptovanie - awk, sed, jq, automatizácia kadečoho
  • Containery - Docker a pod, na čom beží moderný internet
  • Vyskúšaj inú distribúciu - Arch? Gentoo? Ventoy a USB kľúč s desiatimi ISO
Naše pravidlá z hodiny 1 stále platia
Pýtaj sa. Rozbíjaj si veci vo VM. Čítaj man stránky. Vždy si zapisuj. A hlavne: skús to sám, ešte predtým, než sa spýtaš.

33.4 Programovanie na Linuxe

Linux je rodiskom obrovskej časti moderného softvéru. Väčšina serverov, na ktorých beží internet, je programovaná práve na Linuxe. Ak ťa programovanie ťahá, tu je prehľad toho, čo ťa čaká.

CLI nástroje - kompilátory a jazyky priamo v termináli

Na programovanie nepotrebuješ nič navyše. Kompilátory a jazyky sú priamo v systéme: gcc/g++ pre C/C++, python pre Python a git na správu kódu je neoddeliteľnou súčasťou systému. Všetko ovládaš z terminálu, ktorý už dôverne poznáš.

student@debian: ~
student@debian:~$ python3 -c "print('Ahoj, Linux!')" Ahoj, Linux! student@debian:~$

GUI prostredia - vývojové nástroje s oknami

Ak chceš programovať s oknami, na Linuxe máš na výber z desiatok prostredí:

  • VS Codium - plne open-source odvodenina Visual Studio Code (ktorý má aj proprietárne časti a telemetriu Microsoftu), univerzálne, najpopulárnejšie
  • Eclipse - univerzálne, hlavne pre Javu
  • QT Creator - C/C++
  • Apache NetBeans - Java
  • Jupyter - Python, matematika a dáta
  • Thonny a PyCharm - Python
  • Code::Blocks - C/C++
  • MonoDevelop - .NET
  • Scratch - vizuálne programovanie pre úplný začiatok
  • Lazarus - Pascal
  • Arduino IDE - mikrokontroléry

Výhody Linuxu pre programátorov

  • Git a Mercurial sú integrálnou súčasťou systému - nemusíš nič doťahovať
  • Výborná podpora rôznych architektúr - toolchaining pre x86, ARM, RISC-V a ďalšie
  • Dokumentácia jazykov priamo v systéme - man stránky pokrývajú aj C/C++
  • Filozofia "všetko je súbor" dáva programom jednotné rozhranie
  • Balíčkový systém nainštaluje všetky nástroje jedným príkazom
Skús to
Webový server z hodiny 29 je vlastne tvoj prvý "program" bežiaci 24/7. Programovanie je prirodzené pokračovanie kurzu - aj bash skripty z bloku 4 už programovanie sú!
🏠 Posledná domáca úloha
  1. Napíš 5 vecí, ktoré ťa na krúžku najviac bavili alebo prekvapili.
  2. Napíš 1 vec, ktorú chceš v Linuxe vyskúšať ďalej, a prečo práve to.
  3. Ktorá hodina ti dala najviac a čo by si poradil budúcim študentom krúžku?