Praktikum 9 - Teenused ja optimeerimine
Selles praktikumis puudutame teemat, kuidas oma arvutit (operatsioonisüsteemi) optimeerida ja teha ka turvalisemaks. Lisaks vaatame mitmeid vajalikke väiksemaid teemasid. Operatsioonisüsteemid kipuvad sisaldama palju tarkvara, mida reaalsuses ei vajata, ja jooksvaid teenuseid, mille järgi puudub vajadus (võivad olla isegi turvanõrkusteks). Kahjuks pole enam Windowsi operatsioonisüsteemi installeerides valikuvõimalust paigaldatavate komponentide kohta (nt Windows 9x puhul oli). Samamoodi on kahjuks mitmetes Linuxi distributsioonides detailsemaid paigaldusvõimalusi kärbitud või kaotatud (sh Ubuntu's). Näiteks Arch Linux pakub veel detailsemat paigalduskogemust.
Käsitleme teemasid alguses Linux keskkonna kohta ja seejärel Windows keskkonnas. Soovi korral võite käesolevat praktikumi alustada Windowsi osaga.
Praktikumi viimases harjutuses uuendame Ubuntu virtuaalmasina uusima Ubuntu 25.10 peale.
Linux
Keskkonnamuutujad on tekstilised väärtused, mis võimaldavad lihtsasti kohandada programmide jaoks keskkonda, see tähendab, et mingi fikseeritud nimetuse taga on vastavalt kontekstile (nt operatsioonisüsteemi versiooni/distributsiooni või kasutaja) vastav väärtus.
Keskkonnamuutujad
Linuxis on näiteks järgmised keskkonnamuutujad:
- $HOME: Kasutaja kodukataloog (näiteks "/home/erkki").
- $PATH: Kui käivitate näiteks programmi "ls" (tahate näha jooksva kausta sisu), siis otsitakse "ls" nimelist programmi siin keskkonnamuutujas defineeritud kaustadest (kaustade järjekord nimekirjas on oluline). Kui on vaja kiiresti leida käivitatava programmi asukoht, siis selleks kasutatav käsk nt "ls" programmi kohta:
which ls(saame ka ise käsitsi kõik kaustad läbi käia, aga which teeb selle töö meie eest ära). - $SHELL: Milline käsurea intepretaator on vaikimisi kasutusel (nt "bash").
- $USER: Sisse loginud kasutaja kasutajanimi (näiteks "erkki")
Keskkonnamuutuja väärtust on võimalik näha näiteks käsuga echo $USER. NB! tõstutundlikkus on siinkohal oluline. Vaata järgi kõigi ülaltoodud keskkonnamuutujate väärtused. Keskkonnamuutujaid saab lihtsalt kasutada, kirjutades keskkonnamuutuja oma käsu sisse. Näiteks andke käsk cd /etc. Anna käsk pwd, millega näed, et oled kaustas "/etc". Nüüd anna käsk cd $HOME ja vaata uuesti kus oled.
Samamoodi võid anda käsu mkdir $USER. Vaata, kas jooksvasse kausta tekkis kasutajanimeline kaust. Samuti saad kombineerida keskkonnamuutujaid, nt kui soovite luua kausta kasutaja kodukataloogi, mille nime alguses on "TMP" ja lõpus "OK" ja nende vahel kasutaja kasutatav keel: mkdir "$HOME/TMP${USER}KAUST" (antud juhul on vaja lisada loogelised sulud, et eraldada keskkonnamuutuja nimi muust sisust, muidu käsu intepretaator hakkaks otsima keskkonnamuutujat "USERKAUST", mida eeldatavasti ei eksisteeri ja tulemuseks oleks tühisõne).
Kõikide keskkonnamuutujate nägemiseks anna käsk env.
Linuxi keskkonnamuutujad saab jagada ajutisteks (eksisteerivad ainult antud seansi ajal, seansi sulgedes kaovad keskkonnamuutujad (nt avate terminaliakna või logite masinasse sisse üle SSH)) ja püsivad keskkonnamuutujad. Ajutise keskkonnamuutuja $ENV_ABIKAUST saab defineerida käsuga export ENV_ABIKAUST="$HOME/projekt/abi/" (saame kasutada ka olemasolevaid keskkonnamuutujaid). Kui akna sulgeme, siis kaovad need ajutised keskkonnamuutujad. Suuremat skripti tehes on hea kasutada keskkonnamuutujaid, kuna saate ühe korra leida vajalikud väärtused (mis võivad sisaldada kohati palju erinevaid tingimusi, mida korduvalt teha oleks tülikas ning ebapraktiline) ja seejärel sobilikus kohas korduvalt rakendada. Üle defineerida saab ka olemasolevaid keskkonnamuutujaid, nt: export PATH="$PATH:/tmp/abi/tegevus/" (lisab olemasolevale $PATH keskkonnamuutujale juurde lõppu ":/tmp/abi/tegevus/". Keskkonnamuutujate ajutiseks kaotamiseks käsk, näiteks keskkonnamuutuja "SSH_AUTH_SOCK" eemaldamiseks: unset SSH_AUTH_SOCK.
Püsivate keskkonnamuutujate jaoks on vaja muuta Linuxi seadistusi, kasutajaspetsiifiliste jaoks Bash intepretaatorit, kasutades faili "$HOME/.bashrc" (muude intepretaatoritega seadistusfail erinev). Need muudatused on kasutajaspetiifilised. Süntaks on sama, mis ülal. Muudatuste rakendamiseks anna käsk source ~/.bashrc (mis käivitab skriptifaili). Kui uue terminali akna avame, siis selle skriptiga seadistatakse terminali keskkond, sh keskkonnamuutujad. Süsteemiüleste keskkonnamuutujate (kasutajateüleste) muutmiseks on vajalik muuta faili /etc/environment.
Keskkonnamuutujate illustreerimiseks vaatame levinud käske sudo su - ja sudo su. Avage kaks terminali ning pange need ekraanile nii, et need oleksid samaaegselt nähtavad (üks vasakul ja teine paremal ekraani osal. Sisestage vasakule terminali käsk sudo su - ja env ning paremale terminali sudo su ja env. Tutvuge väljundiga ning pöörake erilist tähelepanu muutujale PWD.
- Ülesanne 1: Sisestage operatsioonisüsteemid Ubuntu 25.04 terminali käsk
sudo suja vajadusel andke käsule lisaks teie kasutaja parool. Nüüd tuvastage käsurealPWDkeskkonnamuutuja väärtus ja lisage see aruandesse tekstikujul.
Pikkasid käskusid (sh parameetritega) võib olla tülikas sisestada ja ajaloos võivad need olla ka üpris taha vajunud, kuid neid võib siiski olla mingi aeg vaja kasutada. Linuxis on heaks abimeheks säärastes olukordades käskude aliased. Näiteks tahame kiiresti käsureal näha, mis päev täna on ja täpne kellaaeg. Selleks saame kasutada käsku date +"%d.%m.%Y %H:%M:%S", aga seda käsku iga kord käsitsi sisestada võib olla tülikas. Seetõttu võime teha sellele käsule lihtsalt aliase "aeg": alias aeg='date +"%d.%m.%Y %H:%M:%S"'. Nüüd, kui anname käsu aeg, siis näeme, mis aeg hetkel on täpselt sellisel kujul, nagu eelnevalt seadistasime. Defineeritud aliasete nägemiseks saame anda käsu alias. Nagu näeme, peaks siin olema ka käsk ll, mis on alias käsule ls -alF, mida kasutades saame kiiremini väga tihti vaja minevat käsku koos parameetritega sisestada.
Defineerime nüüd veel vähemalt 2 aliast, mis annaks meile kiiresti vajaliku info, ilma lipukesi ja töötlusi seadistamata:
alias info_cpu="ps auxf | sort -nr -k 3 | head -10"
alias info_memory='free -m -l -t'
Nüüd trüki käsurealt "info_" ja vajuta 2 korda tabulaatorit. Peaksite saama nimekirja värskelt defineeritud aliastest. Saate siia aliaseid sama prefiksiga juurde lisada, mis vähendab võimalust mingi olulise käsu unustamiseks (vaja meeles pidada ainult prefiksit). Sisestage käsureal exit käsk ehk sulgege käimasolev terminal. Avage Linuxi terminal uuesti ja sisestage käsk alias (nüüd peaksid eelnevalt sisestatud ajutised aliased olema kadunud).
Eelnevalt konfigureeritud Aliaste püsivaks defineerimiseks lisage need ka nüüd $HOME/.bashrc faili. Soovitatav on defineerimise read paigutada pärast teisi aliaseid nagu ll, la, l jne). Lisage $HOME/.bashrc faili aliased aeg, inf_cpu, inf_memory. Sisestage käsk alias (just lisatud aliased peaskid endiselt puudu olema). Linuxis on kasutusel nö running configuration ehk hetkel mälus olev ja rakendatav konfiguratsioon ja keskkonnamuutujad ja nö startup configuration. Konfiguratsiooni faili rakendamiseks on erinevaid võimalusi (teenuse taaskäivitus, kogu arvuti alglaadimine, source käsk jne). Kasutage käsku source ~/.bashrc eelnevalt defineeritud aliaste sisse lugemiseks käimasolevasse terminali. Sisestage veelkord alias käsk. Peaksite nägema eelnevalt defineeritud 3 aliast. Sisestage testimsieks käsk aeg. Sulgege terminal käsuga exit
- Ülesanne 2: Sisestage käsureale käsud
aliasjaaeg. Esitage väljundist ekraanivaade juhendisse. Väljundis peaks olema selgelt näha aliasedaeg,inf_cpu,inf_memoryjaaegaliase väjundina juhendis eelnevalt defineeritud spetsiifilise kujuga kuupäev ja kellaaeg.
Paigaldatud tarkvara ja daemonid/teenused
Olulise osa operatsioonisüsteemidest moodustavad erinevad daemonid/teenused (Linuxi all nimetatakse "daemon" ja Windowsi all "service"). Edaspidi nimetame neid lihtsuse huvides mõlemal juhul üldnimetusega "teenus".
Teenused on programmid, mis töötavad taustaprotsessina, millel puudub visuaalne liidestus ehk pole kasutajaga otse suhtlemist. Teenused käivituvad üldjuhul operatsioonisüsteemi käivitumisega. Teenused täidavad mitmeid süsteemi-taseme funktsioone nagu näiteks erinevad serverid (nt HTTP, SSH, ...), logimised, perioodilised tegevused (nt varukoopiate tegemise käivitamine), kella sünkroniseerija, prindispooler (print spooler) jne. Teenused on spetsiaalsed programmid, mis peavad rakendama spetsiaalset API't (application programming interface), millega saab teenuse tööd juhtida, nt staatust küsida, käivitada või peatada.
Linux daemon'd/teenused
Linuxi all teenuste (ehk daemon) nimetuses on tihti suffiks "d" (näiteks sshd, httpd, ...). Linuxi teenuste haldamise programmiks systemd põhistes süsteemides on systemctl (init (SysVinit) põhistes enamasti service ja chkconfig, OpenRC põhistes rc-service).
Vaatame Linuxi all olevaid teenuseid ja nende seisundeid käsurealt systemctl list-units --type=service --all
Väljundis on järgmised veerud:
- UNIT: Teenuse nimi.
- LOAD: Kas teenuse seadistuste fail on laetud.
- ACTIVE: Kas teenus hetkel töötab.
- SUB: Täiendab info teenuse hetkeseisundi kohta.
- DESCRIPTION: Teenuse lühikirjeldus.
Nägemaks ainult jooksvaid teenuseid: systemctl list-units --type=service --state=running
Nagu näeme, on teenuste nimes suffiks ".service". Kui me opereerime teenustega siis võime ".service" nimetusest ära jätta.
Näiteks systemctl cat cups (kuvatakse teenuse "cups" seadistuste fail, mille asukoht on näha väljundi esimesel real).
Näiteks, kui soovime saada infot teenuse omaduste kohta siis saame anda käsu: systemctl show cups.service või systemctl show cups (nagu näeme, on võimalikke omadusi päris palju).
Infot omaduste kohta võid saada näiteks siit: https://www.man7.org/linux/man-pages/man5/org.freedesktop.systemd1.5.html
NB!: Järgnevat on soovitatav teha oma virtuaalmasinas (hostmasinas ainult omal vastutusel). Paigaldame arvutisse Apache2 veebiserveri (mis paigaldab ka samanimelise teenuse):
sudo apt update
sudo apt install apache2
Vaatame, mis seisus Apache hetkel on:
sudo systemctl status apache2
Me paigaldasime teenuse Apache2, mis kuulab nüüd porti 80 (443 pordi ehk HTTPS kuulamiseks peaksime täiendavalt seadistama, mille järgi hetkel vajadust pole). Vaatame seda, avades brauseris aadressi http://localhost. Peaks avanema mingi vaikimisi leht.
Kui me kasutame veebiserverit ainult oma tarbeks, siis ei pruugi me tahta, et Apache2 automaatselt käivituks arvuti alglaadimisega, võttes nii ressursse, sh akut ja aega. Apache2 avas vaikimisi ka pordi 80, mistõttu arvuti võib olla Internetti ühendudes ka teistele kättesaadav — see avas ka võimaliku ründevektori. Turvalisuse huvides soovime minimeerida ründevektoreid oma arvutile. Seadistame, et Apache2 ei käivituks arvuti käivitudes automaatselt:
sudo systemctl disable apache2
Vaatame nüüd uuesti Apache2 seisundit. Võrdle varasemaga — mis erinevusi märkad?:
sudo systemctl status apache2
Samuti külasta uuesti http://localhost (võid kindluse mõttes ka F5 vajutada). Peaks töötama.
Me oleme oma tööd ära teinud (nt tegime mingit Ülikooli kursuse projekti) ja tahaksime Apache2 kinni panna, et ta ei võtaks ressursse ja tõsta turvalisust (masin ei kuulaks enam pordil 80). Paneme Apache2 teenuse käsitsi kinni:
sudo systemctl stop apache2
Pöördume uuesti http://localhost poole brauseriga. Ühendumine peaks nüüd ebaõnnestuma. Samuti vaatame teenuse seisundit:
sudo systemctl status apache2
Teeme nüüd arvutile restardi, näiteks käsuga reboot (nii on kiirem, ei pea hiirega otsima õiget kohta).
Kui taaskäivitus on tehtud, siis vaatame uuesti brauseris http://localhost (pöördumine peaks ebaõnnestuma). Vaatame ka teenuse seisundit:
sudo systemctl status apache2
Nüüd soovime panna uuesti Apache2 käsitsi tööle:
sudo systemctl start apache2
Nüüd külastame uuesti meie veebilehte http://localhost ja see peaks õnnestuma.
Vaatame samuti teenuse seisundit:
sudo systemctl status apache2
Kui teeme teenuse (nt Apache2) seadistustes muudatusi, siis seadistuste laadimiseks on 3 varianti:
- Saame teenuse peatada ja käivitada (mida ülal tegime juba).
- Saame teenusele saata korralduse "restart", näiteks:
sudo systemctl restart apache2, mis taaskäivitab teenuse. - Saame teenusele öelda, et ta oma seadistuse uuesti laadiks (vastavas teenuses peab olema vastav AÜI käsklus implementeeritud, mida alati ei pruugi olla). Apache2 puhul töötab ja saame peale seadistuse muutmist anda käsu:
sudo systemctl reload apache2(see on kiirem, kui mõlemad ülal toodud variandid).
Vaata teenuste nimekirja, eelkõige neid, mis töötavad. Otsi Internetist, mis on selle teenuse funktsioon. Teiseks, ürita selgeks teha, kas antud teenus on vajalik oma (virtuaal)masinas töötama (ja miks)? Võibolla ei ole antud teenust vaja ning seetõttu võtab ülemääraselt ressursse. Nii saate parema ülevaate oma masinast.
Linuxi tarkvara haldus
Me oleme varemasemates praktikumides paigaldanud uut tarkvara ning ka ülal paigaldasime Apache2 nimelise veebiserveri. Osa tarkvarast võib muutuda ebavajalikuks, mistõttu oleks mõistlik see eemaldada. Mõningail juhul võib see tõsta turvalisust, eriti tarkvara, mis avab mõne pordi ning seetõttu võib Interneti kaudu kättesaadavaks osutuda (igas tarkvaras või seadistuses võib esineda turvanõrkusi).
Nägemaks, mis tarkvara on installeeritud, anna käsk dpkg -l. Nimekiri on pikk, seetõttu mingi konkreetse tarkvara, nt "ssh" kohta saab küsida käsuga dpkg -l | grep ssh. Kui vastus on tühi, siis pole sellist tarkvara paigaldatud (või on juba eemaldatud). Soovides eemaldada näiteks "openssh-server" saame seda teha järgnevalt:
- Soovides infot vastava tarkvarapaki kohta, anna käsk:
apt show openssh-server.
- Soovides näha, mis failid on seotud antud tarkvarapakiga, anname käsu:
dpkg -L openssh-server.
- Vaja on otsustada, kas soovime eemaldada ka konfiratsiooni või mitte. Järgnevalt "remove" ei eemalda tarkvarapaki konfiguratsiooni, "purge" eemaldab. Muidugi on võimalik soovi korral salvestata konfiguratsioonifailid ära kuskile, kui neid võiks vaja olla (olete teinud oma seadistusi, mida tahaksite säilitada). Kasuta järgnevalt vastavalt oma äranägemisele "remove" või "purge" parameetrit:
- Kindluse mõttes võime teha protsessi läbi alguses kuivalt, et näha sõltuvusi või muid probleeme:
sudo apt remove --dry-run openssh-server.
sudo apt purge --dry-run openssh-server.
- Kui üle vaadatud ja probleeme ei näinud, siis eemaldame paigaldatud paki (nt "openssh-server"). Väljundist saad teada ka vabastatud kettamahu:
sudo apt remove openssh-server.
sudo apt purge openssh-server.
- Võimalik, et pakiga on seotud mingeid sõltuvusi, mis jäävad kasutuseta. Kui "apt" paigaldas paketi, siis ta paigaldas ka kõik puudu olevad sõltuvused (pakid, mille kasutaja on ise otse paigaldanud on, ei eemaldata). Teeme alguses orvuks jäänud pakkide eemaldamise läbi soovitatavalt kuivalt (kui ka konfiguratsioonifailid eemaldada siis koos lipuga "--purge"):
sudo apt autoremove --dry-run.
sudo apt autoremove --purge --dry-run.
- Väljundis näeme pakid, mis läheksid eemaldamisele. Soovi korral võimalik neid uurida ülal kasutatud käsuga
dpkg -L openssh-server. - Lõplikult eemaldamiseks:
sudo apt autoremove.
sudo apt autoremove --purge.
NB!: Kindluse mõttes on järgnevat ülesannet soovitav teha virtuaalmasinas (host-masinas ainult omal vastutusel)!
- Ülesanne 3: Vaata paigaldatud tarkvara nimekirja ja leia midagi, mis tundub olema üleliigne. Otsi selle kohta lisainfot, et mis on antud tarkvara funktsioon ja teiseks miks ta ebavajalik (vajadused võivad olla inimestel erinevad). Esitada põhjendus, vabastatud kettamaht ja ekraanipilt, et olete eemaldanud enda valitud tarkvara (näha eemaldamise käsud ja vahetult kohe käsk
dpkg -l | grep minuValitudEemaldatudTarkvara).
Windows
Järgnevalt vaatame üldjoontes samasid teemasid Windows keskkonnas. Windows on üldiselt mitmeid lähenemisi üle võtnud Linux'lt.
Keskkonnamuutujad
Ava Explorer ja kirjuta aadressiribale %SystemRoot% ja vajuta Enter. Peaksite jõudma "C:\Windows\" vmt kausta. Ava nüüd käsurida ja anna käsk cd %SystemRoot%. Peaksite samuti jõudma kausta "C:\Windows\" vmt. Anna käsurealt käsk %SystemRoot%\notepad.exe. Peaks avanema Notepad. Tegemist on keskkonnamuutujaga, mille nime ümber on eristamiseks spetsiaaltähenduslik märk %. Selliseid keskkonnamuutujaid on veelgi, mida vahel võib olla vaja kasutada käsureal või üldiste skriptide tegemisel. Keskkonnamuutujatest nimekirja saamiseks anna käsk "set".
Üks olulisemaid keskkonnamuutujaid on "Path". Siin on kaustade nimed, mis eraldatud ";" abil. Otsi siit nimekirjast mingi MITTE "C:\Windows" kaust ja vaata, kas seal sees on mingi EXE-fail. Kui leidsid, siis mine käsureal kausta, kus pole ühtegi faili (vajadusel loo uus tühi kaust). Mine käsuga käsureal sinna kausta ja veenduge "dir" käsuga, et kaust on tühi. Alustuseks kirjuta mingi fail, mida kindlasti ei eksisteeri, nt "erkki.exe" (peaksite saama vea "'erkki.exe' is not recognized as an internal or external command, operable program or batch file."). Seejärel oma eelnevalt valitud EXE-faili nimi. Nüüd peaks saama mingi tulemuse, mis näitab, et programm käivitus olles kaustas, milles ei olnud ühtegi faili. Siit näete, et kui Windows ei leia jooksvalt kaustast vastavat käivitatavat faili, siis vaatab keskkonnamuutujat %Path% ja üritab sealt kaudu leida. Kusjuures loendi järjekord on oluline — kui sama EXE-fail on mitmes kaustas, siis kasutatakse eespool olevat kausta.
- Ülesanne 4: Tehke kuvatõmmis "dir" käsust ja oma valitud EXE-faili käivitamisest, et oleks näha programmi käivitumine (sh ei ole järgmisel real veateadet vmt).
Kontrollimaks, et kataloogis olev EXE-fail on prioriteetsem, kopeerige nüüd siia tühja kausta mingi iseseisev EXE-fail (nt putty.exe vmt omal valikul, kuid olgu programm erinev eelnevalt käivitatud programmist) ja nimetage antud fail ümber eelnevalt käivitatud faili nime järgi. Seejärel käivitage uuesti ülal %Path% kaustadest leitud programm. Nüüd peaks käivituma kaustas olev programm. See näitab otsimise prioriteeti. Kuidas Linuxi keskkonnas toimiti analoogses situatsioonis? Kumb lähenemistee on turvalisem ja miks?
Kui %Path% muutub liiga pikaks, siis võiks seda jõudluse, turvalisuse ja korrastatuse huvides üle vaadata. Kui olete kindel, et mingi kaust on üleliigne, siis eemaldage sealt ebavajalikud elemendid (nt mitte enam eksisteeriv kaust või topelt kaustad või programmid, mis pole süsteemsed ega vajalikud). Olge siiski ettevaatlikud ja tehke eelnevalt igaks juhuks varukoopia (kopeeri lihtsalt sõne kuskile hoiule). NB!: Tehke järgnevat virtuaalmasinas (host-masinas ainult omal vastutusel)!
Muutmaks %Path%, liikuge "Juhtpaneel (Control Panel)" => "Süsteem (System)" => "Täpsemad süsteemisätted (Advanced system settings)" (paremal) => "Täpsemalt (Advanced)" => "Keskkonnamuutujad (Environment Variables)". Siin üleval on jooksva kasutaja keskkonnamuutujad ja all süsteemi omad (üldiselt kasutaja keskkonnamuutujad katavad üle süsteemi keskkonnamuutujad ja kui kasutaja all pole defineeritud, siis rakendatakse süsteemi oma).
Mis juhtub siis, kui mingi EXE-fail on nii kasutaja kui ka süsteemi %Path% keskkonnamuutujas sees? Vastuse saame leida käsurealt andes käsu echo %Path%. Võrdle tulemusi ja kirjuta kumb %Path% keskkonnamuutujas olev EXE käivitatakse, kui see on mõlemas olemas.
- Ülesanne 5: Kui käivitatav fail leidub nii kasutaja kui ka süsteemi "
%Path%" märgitud kaustades ja need kaustad on erinevad, siis kummas kataloogis olev fail käivitatakse?
Windows teenused
Alates Windwows NT'st tuli mõiste teenused (ehk Windows service), mis töötavad taustaprogrammina (ehk ei oma visuaalset liidestust ega kasutajaga otse suhtlemist). Võetud on eeskuju Unix/Linux daemon süsteemist. Teenused peavad järgima kindlaks määratud API-t (application programming interface), disainitud teenusena töötama (nt teenusehalduri teateid töötlema ja ei tohi oodata kasutajalt mingit sisendit, väljastada graafilisele kasutajaliidesele omaseid aknaid, sh veateateid (veateated logitakse EventLogi või logifaili) ja nad peavad olema eelnevalt registreeritud operatsioonisüsteemis. Teenustega tegeleb "%SystemRoot%\System32\services.exe".
Windowsi teenuste ülevaate saamiseks saab käivitada käsurealt "services.msc" (või Explorer'st arvuti hüpikmenüüst "Manage" valides avaneb aken, kus vasakul otsige puust üles "Services", mille järel ilmub teenuste nimekiri). Nimekirjas on veergudeks teenuse nimi, kirjeldus, staatus (kui "Running", siis teenus töötab, kui tühi siis teenus ei tööta (muud seisud on üldiselt ajutised (nt Stopping) või harva kasutatavad (nt Paused)), "Startup Type" (Automatic - pannakse kohe arvuti käivitamisel tööle; "Automatic (Delayed start)" - käivitatakse viitajaga peale arvuti käivitamist, et arvuti saaks kiiremini käivituda; "Manual" - teenust ei käivitata teenus-halduri poolt arvuti käivitamisel, aga kui mingi muu teenus, programm või kasutaja käivitab, siis läheb tööle; "Disabled" - teenuse käivitamine on ära keelatud ja teenuse käivitamine ebaõnnestub) ja "Log On As" (mis kasutaja õigustes teenus käivitatakse, tavaliselt spetsiaalsed 3 erinevat süsteemikasutajat, aga on võimalik käivitada ka konkreetse kasutaja õigustes, kui peaks olema vajadust).
Nagu näete, on töötavaid teenuseid üpris palju. Paljud neist teenustest pole reaalselt vajalikud ning võivad olla ka haavatavad, eriti nt juhul, kui sülearvutiga ühenduda suvaliste Wi-Fi-võrkudega. Näiteks failijagamisteenus (SMB (Server Message Block)) on üpris ebaturvaline (vt nt WannaCry rünnet), kui arvuti on Interneti kaudu otse kättesaadav (seetõttu on tihti ISP blokeerinud porte, et tavalisi kliente kaitsta). Iga protsess, mis töötab, vajab ressursse, töötava teenuse taga on samuti protsess, mis vajab ressursse (mälu, CPU, kirjutab kettale, kasutab võrku jne).
Üritame järgnevalt saada ülevaate oma arvutis olevatest teenustest ja seejärel üritame optimeerida arvutit, vähendades töötavaid teenuseid (optimeerige virtuaalmasinas, enda masinas ainult omal vastutusel). Enne muutma asumist on tark salvestada praegune seis. Teenuste haldamise aknas vali ikoon "Export List" ja faili tüübiks vali "Unicode text (*.csv)". Ava salvestatud fail (nt LibreOffice Calc'ga). Kui märkad, et osade teenuste tulbad on paigast ära, siis võib olla probleemiks, et Windowsi ekspordi funktsioon ei oska komasid varjestada CSV-s, kuid komasid võib leiduda kirjeldustes. Seega ava "View" menüüst "Add/Remove Columns" ja eemalda "Description" veerg, salvesta ja ekspordi uuesti ja ava CSV-fail. Nüüd võiks olla seis parem. Kahjuks väljundis kuvatakse ainult "Display name", mitte "Service name", mida meil järgnevalt vaja läheb.
Nüüd on aeg mittevajalike teenuseid kinni panema hakata. Selleks saate kasutada teenuste halduse graafilist kasutajaliidest, kuid on võimalik kasutada ka käsurida. Teenusel on kaks nime, üks neist on kuvatav ja teine süsteemne nimi. Ava mingi teenus topelt-klikiga ning avanevas aknas on "Service name" ja "Display name". Järgnevalt läheb meil vaja "Service name" väärtust.

Teenuse käivitamise keelamine:
sc config "<teenuse nimi>" start= disabled
"disabled" asemel võib vaja minna kasutada ka nt "auto" või "demand" (ehk manual)
Teenused võivad ka üksteisest sõltuda. Sõltuvuste nägemiseks ava mingi teenus ja ava sakk "Dependencies" ja järgnevalt on näha, mis teenustest antud teenus sõltub ja allpool teenused, mis sõltuvad antud teenusest (mõlemad nimekirjad võivad ka tühjad olla, sel juhul pole sõltuvusi). Kui teenuse, millest sõltutakse, käivitustüübiks on "Disabled", siis ka sõltuva teenuse käivitumine ebaõnnestub (selle kohta tekib veateade Event Log vaates). Kui avada "Remote Procedure Call (RPC)" sõltuvuste ülevaade, siis näeme, et sellest teenusest sõltuvad väga paljud teised teenused. Windowsi puhul on uuemates versioonides osadel teenustel blokeeritud nende peatamine ja käivitustüübi muutmine (sh viimati vaadatud teenus).

Teenuse käivitamiseks:
NET START <teenuse nimi ehk "Service name" väärtus>
Teenuse peatamiseks:
NET STOP <teenuse nimi ehk "Service name" väärtus>
Teeme oma arvuti teenustest ülevaate. Tahame teada mitu teenust on registreeritud. Ava PowerShell ja anna käsk:
(Get-Service | Measure-Object).Count (sama saab ka graafilisest kasutaja liidesest, aga nende kokku lugemine oleks vast üpris tülikas).
Üritame teada saada, mitu teenust on hetkel töötamas: Get-Service | Where-Object {$_.Status -eq "running" } | Measure-Object | Select-Object Count
Üritame teada saada, mitu teenust käivitub automaatselt algkäivitamisega: (Get-WmiObject Win32_Service | Where-Object { $_.StartMode -eq "Auto" }).Count (siin on ka viivitusega käivituvad teenused)
Võta nüüd lahti SysInternals tööriist ProcessExplorer. Järjesta teenused nt mälu või CPU kasutuse järgi järjekorda ja liigu mõne protsessi peale, mille puhul ilmub sildil tekst "Services: " ja teenus või teenuste nimed (kindlasti leiate mitu "svchost.exe" nimelisi protsesse, millel on teenuseid). Kas leidsite mingeid teenuseid, mis märgatavalt rohkem ressursse võtavad? Kui jah, siis tasuks uurida, millega on tegemist. Uurimiseks kasutage Interneti abi.
- Ülesanne 6: Võta teenuste loendist teenus, mille teenuse nimi algab oma perenime esitähega (ÕÄÖÜ puhul võta teenused algustähega C, Q, W, X, Y) (teenuste nimedes jäta "Windows" ja "Microsoft" eest ära ehk "Windows Time" loeme "Time" oma nimede esitähtede järgi teenuseid valides). Kirjuta eelnevalt valitud teenuse kohta otstarve. Teiseks, kas teenuse töötamine on vajalik oma masinas (ja miks) (kas võib teenuse "disabled" määrata)?
Windows optimeerimine
Ajapikku võib masinasse koguneda installeeritud tarkvara, mida mingi aeg enam ei vajata. Tavaline moodus neist ülevaate saamiseks ning eemaldamiseks on Windows "Juhtpaneeli (Control Panel)" kaudu ("Programmid (Programs)" alamosa), kuhu installeeritud programmid lisavad viite endast. Võite vaadata seda nimekirja üle ja eemaldada ebavajalikuks osutunud programme ja ka Windowsi komponente.
Windows 8 lisas AppX ja Windows 10 lisas MSIX tarkvarapakkide halduse (midagi sarnast nagu Linuxis ja Androidis), mida kasutatakse peamiselt Microsoft Store vahendusel. Siit kaudu võib olla arvutisse installeeritud päris palju tarkvara ja võtta päris palju ruumi kettal. Mõned neist võivad ka taustas töötada ning võtta jooksvalt mälu, protsessorit jne.
Paigaldatud tarkvarapakkide nägemiseks anna PowerShelli käsurealt käsk: Get-AppxPackage -AllUsers. Nähtavasti on palju väljundit. Vaatame, mitu paketti leiti: (Get-AppxPackage -AllUsers).Count. Lühema ülevaate saamiseks täiendame käsku: Get-AppxPackage -AllUsers | Select-Object Name, PackageFullName, InstallLocation. Me saame nüüd ülevaate, kui palju mingi tarkvarapakett ruumi võtab, vaadates kausta mahtu (nt Explorer's). Samas võime seda küsida ka käsurealt (antud juhul nt tarkvarapaketi "Microsoft.People" kohta): Get-ChildItem -Recurse (Get-AppxPackage -Name "Microsoft.People").InstallLocation | Measure-Object -Property Length -Sum | select Count, Sum.
Otsi nüüd tarkvarapakettidest midagi, mis tundub olema ebavajalik. Otsimiseks saad näiteks anda käsu get-appxpackage *One* (otsib tarkvarapakette, mille nimi sisaldab "one"). Tarkvarapakkidega, millel "IsFramework" = True või "NonRemovable" = True tasuks olla rohkem ettevaatlikum. Kui oled midagi välja valinud, siis on vaja saada lisainfot. Anna käsk (nt "Microsoft.People" kohta, aga vali midagi muud): Get-AppxPackage -Name "Microsoft.People" | Format-List *. Enne eemaldamist vaata, kui suure mahuga on vastav tarkvarapakk jms info.
- Ülesanne 7: Anna käsk (asenda "Microsoft.People" oma välja valitud tarkvarapakiga)
Get-AppxPackage -Name "Microsoft.People" | select packageFullName. Seejärel anna eemaldamise käsk ja kohe peale eemaldamist uuesti eelpool toodud käsk (Get-AppxPackage ...).
Eemaldamiseks saab anda käsu (asenda <PackageFullName> oma valitud tarkvarapaki vastava väärtusega) Remove-AppxPackage -Package <PackageFullName>. Näiteks "Microsoft.XboxGamingOverlay" puhul: Remove-AppxPackage -Package "Microsoft.XboxGamingOverlay_7.224.10282.0_x64__8wekyb3d8bbwe"
Ava nüüd Explorer, "See arvuti (This PC)" peal ava hüpikmenüü, kus vali "Atribuudid (Properties)", paremalt poolt vali "Täpsemad süsteemisätted (Advanced system settings)", vali "Täpsemalt (Advanced)" sakk, "Jõudlus (Performance)" all vajuta nuppu "Sätted (Settings)". Vali siin "Kohanda parima jõudluse saamiseks (Adjust for best performance)" (soovi korral võid ise valida allpool, mis kellasid ja vilesid soovid sisse-välja lülitada).
Ubuntu uuendamine viimasele versioonile
Esimestes praktikumides paigaldasime Ubuntu 25.04 versiooni operatsioonisüsteemid Linux virtuaalmasinaks. Enda masina hetke infot näete käsuga hostnamectl . Ubuntu mitte LTS versioonide soovituslik eluiga on suhteliselt lühike ja 25.04 versiooni ametlik tugi lõppeb juba jaanuaris 2026. Seega oleks mõistlik meie praktikumides kasutada olev Ubuntu virtuaalmasin uuendada oktoobris välja lastud viimasele versioonile Ubuntu 25.10.

Ubuntu-releases25.png
https://ubuntu.com/about/release-cycle
NB! Järgnevad käsud ja tegevused võtavad umbes 1h aega ja neid pole soovitatav katkestada, seega käesolevat harjutust on soovitatav teha olukorras, kus teil on võimalik lasta arvutil 1h omasoodu toimetada.
Sisestage käsud:
- Järgnevate käskude väljundit on soovitatav lugeda, kui saate hoiatusi, et midagi pole ühildub/compatible võite hoiatusi ignoreerida ja vajutada vajadusel
Yjätkamiseks. Järgnevad käsud on soovitatav käivitada Ubuntu vaikimisiGnomeaknahalduris. sudo apt updatesudo apt upgraderebootsudo do-release-upgradesudo apt updatehostnamectl- Ülesanne 8: Esitage
hostnamectlkäsu väljundi ekraanivaade teie Ubuntu virtuaalmasinast, mis on uuendatud Ubuntu25.10versioonile.
Proovige Kas Lubuntu ka endiselt töötab? - vähemalt praktikumijuhendate testimisel Lubuntu pärast Ubuntu uuendamist kahjuks enam ei töötanud. See on hea näide, kuidas operatsioonisüsteemi uuendamine võib mõned seal olevad tarkvarad katki teha.
Boonus: Uurige Internetist, tehisaru käest ja katsetage, kuidas Lubuntu uuesti tööle saada peale peamise Ubuntu uuendamist 25.10 peale. Lahendus esitage boonuspunktide jaoks praktikum0 juurde moodles või alo.peets@ut.ee
Tulemus
GitHubis või GitLab leheküljel peaks olema vastused järgmistele küsimustele/ülesannetele (ja alguse osasse võid kirjutada, kui palju üleliigset tarkvara eemaldasid, palju teenuseid ära keelasid jms):
- Ülesanne 1: Sisestage operatsioonisüsteemid Ubuntu 25.04 terminali käsk
sudo suja vajadusel andke käsule lisaks teie kasutaja parool. Nüüd tuvastage käsurealPWDkeskkonnamuutuja väärtus ja lisage see aruandesse tekstikujul. - Ülesanne 2: Sisestage käsureale käsud
aliasjaaeg. Esitage väljundist ekraanivaade juhendisse. Väljundis peaks olema selgelt näha aliasedaeg,inf_cpu,inf_memoryjaaegaliase väjundina juhendis eelnevalt defineeritud spetsiifilise kujuga kuupäev ja kellaaeg. - Ülesanne 3: Vaata paigaldatud tarkvara nimekirja ja leia midagi, mis tundub olema üleliigne. Otsi selle kohta lisainfot, et mis on antud tarkvara funktsioon ja teiseks miks ta ebavajalik (vajadused võivad olla inimestel erinevad). Esitada põhjendus, vabastatud kettamaht ja ekraanipilt, et olete eemaldanud enda valitud tarkvara (näha eemaldamise käsud ja vahetult kohe käsk
dpkg -l | grep minuValitudEemaldatudTarkvara). - Ülesanne 4: Tehke kuvatõmmis "dir" käsust ja oma valitud EXE-faili käivitamisest, et oleks näha programmi käivitumine (sh ei ole järgmisel real veateadet vmt). (teema Windows keskkonnamuutujad)
- Ülesanne 5: Kui käivitatav fail leidub nii kasutaja kui ka süsteemi "
%Path%" märgitud kaustades ja need kaustad on erinevad, siis kummas kataloogis olev fail käivitatakse? - Ülesanne 6: Võta teenuste loendist teenus, mille teenuse nimi algab oma perenime esitähega (ÕÄÖÜ puhul võta teenused algustähega C, Q, W, X, Y) (teenuste nimedes jäta "Windows" või "Microsoft" eest ära ehk "Windows Time" loeme "Time" oma nimede esitähtede järgi teenuseid valides). Kirjuta eelnevalt valitud teenuse kohta otstarve. Teiseks, kas teenuse töötamine on vajalik oma masinas (ja miks) (kas võib teenuse "disabled" määrata)?
- Ülesanne 7: Anna käsk (asenda "Microsoft.People" oma välja valitud tarkvarapakiga)
Get-AppxPackage -Name "Microsoft.People" | select packageFullName. Seejärel anna eemaldamise käsk ja kohe peale eemaldamist uuesti eelpool toodud käsk (Get-AppxPackage ...). Esita sellest kuvatõmmis. - Ülesanne 8: Esitage
hostnamectlkäsu väljundi ekraanivaade teie Ubuntu virtuaalmasinast, mis on uuendatud Ubuntu25.10versioonile.
Kui teil on GitHub/GitLab valmis, siis lisage link esitusele moodle keskkonda, kust me teie lahenduse leiame. Moodle esitamise otselink: https://moodle.ut.ee/mod/assign/view.php?id=1213676
(Tähtaeg 2 nädalat)