1. Bashi põhitõed
Mis on Bash shell?
Bash (Bourne Again Shell) on kõige levinum käsurealiides Linuxi distributsioonides. See lihtne ja võimas tööriist pakub kasutajale platvormi süsteemiga suhtlemiseks ning võimaldab täita palju põhitoiminguid, nagu failihaldus, programmide käivitamine ja ülesannete haldamine.
Bashi eelised
- Võimas skriptimisvõimekus: Bash võimaldab automatiseerida keerukaid ülesandeid shelliskriptide abil.
- Lai tugi: Toetatud peaaegu kõigis Unixil põhinevates operatsioonisüsteemides ja Linuxi distributsioonides.
- Suur kohandatavus: Aliaste ja shellifunktsioonide abil saab kasutaja oma töökeskkonda isikupärastada vastavalt enda vajadustele.
# Lihtne Bash-käsk
echo "Hello, World!"
2. Bashis põhikäsklused
Failihaldus
Tutvustame kõige sagedamini kasutatavaid failihalduskäske Bashis.
ls
: Kuvab kataloogi sisu nimekirja.cd
: Vahetab kataloogi.cp
: Kopeerib faile või katalooge.mv
: Liigutab või nimetab faile ümber.rm
: Kustutab faile.
# Kataloogi sisu detailne kuvamine
ls -l
# Mine kodukataloogi
cd ~
# Kopeeri fail
cp source.txt destination.txt
# Nimeta fail ümber või liiguta
mv old_name.txt new_name.txt
# Kustuta fail
rm unwanted_file.txt
Süsteemi info ja protsesside haldamine
Süsteemi info vaatamine ja protsesside haldamise käsud on samuti olulised.
ps
: Kuvab aktiivseid protsesse.top
: Kuvab reaalajas protsesside nimekirja ja süsteemi üldinfo.kill
: Saadab protsessile signaali (nt lõpetab selle).
# Kuvab aktiivsed protsessid
ps aux
# Kuvab süsteemi üldinfo ja protsesside nimekirja
top
# Lõpetab protsessi ID-ga 1234
kill 1234

3. Bash-skriptide kirjutamine
Skripti põhistruktuur
Bash-skript on fail, mis sisaldab mitmeid käske. Skripti abil saab automatiseerida ja järjest täita erinevaid toiminguid.
#!/bin/bash
# See rida on shebang ning määrab shelli, millega skripti käivitatakse.
echo "Hello, World!" # echo käsk kuvab sõnumi
Muutujate kasutamine
Muuttujaid saab kasutada andmete salvestamiseks ja taaskasutamiseks skriptis.
#!/bin/bash
message="Hello, Bash Scripting!"
echo $message
Tingimuslause ja tsüklid
Keerukate loogikate ja korduvate ülesannete jaoks kasutatakse tingimuslauseid ja tsükleid.
#!/bin/bash
# if-lause näide
if [ $1 -gt 100 ]
then
echo "Number on suurem kui 100."
else
echo "Number on 100 või väiksem."
fi
# for-tsükli näide
for i in 1 2 3 4 5
do
echo "Tsüklis ... number $i"
done
4. Ülesannete automatiseerimine Bashiga
Automatiseerimise ülevaade
Bash-skripte saab kasutada korduvate ülesannete tõhusaks automatiseerimiseks. Näiteks süsteemi varundamine, andmete sünkroniseerimine või aruannete loomine – see kõik vähendab süsteemiadministraatori töökoormust.
Automaatne varundusskript
Igapäevase andmekaitse jaoks varundab järgmine skript määratud kataloogi regulaarselt.
#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
DATE=$(date +%Y%m%d)
# Kui varunduskataloogi pole, loo see
if [ ! -d "$DST_DIR" ]; then
mkdir -p "$DST_DIR"
fi
# Paki kataloogi sisu ja tee varukoopia
tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .
echo "Varundamine õnnestus."
Skripti automaatne käivitamine croniga
Kasutades cron-i, saab varundusskripti käivitada iga päev kell 2 öösel.
0 2 * * * /path/to/backup.sh
Veakäsitlus ja teavitused
Lisame käsitluse juhuks, kui varundamisel tekib viga – probleemist teavitatakse administraatorit.
#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d)
if [ ! -d "$DST_DIR" ]; then
mkdir -p "$DST_DIR"
fi
if tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .; then
echo "Varundamine õnnestus $DATE" >> $LOG_FILE
else
echo "Varundamine ebaõnnestus $DATE" | mail -s "Varundamise viga" admin@example.com
fi

5. Tõrkeotsing ja levinumad vead
Bashi vigade mõistmine ja lahendamine
Bash-skripti käivitamisel esineb vigu sageli. Siin selgitame levinumaid vigu ja nende lahendusi.
Käsu mitte leidmise viga
See tekib, kui käivitatavat käsku pole süsteemi paigaldatud või PATH pole õigesti seadistatud.
command not found
- Lahendus: Veendu, et käsk oleks paigaldatud ja
$PATH
keskkonnamuutuja on õigesti seadistatud.
Õiguste viga
Tekib, kui puuduvad vajalikud õigused faili või kataloogi kasutamiseks.
Permission denied
- Lahendus: Kasuta sobivaid õigusi omavat kasutajat või muuda õiguseid käskudega
chmod
võichown
.
Süntaksiviga
See ilmneb, kui skriptis on kood valesti kirjutatud.
syntax error: unexpected end of file
- Lahendus: Kontrolli skripti hoolikalt ja paranda süntaksivead.
Faili mitte leidmise viga
Kui määratud faili ei eksisteeri, ilmneb see viga.
No such file or directory
- Lahendus: Veendu, et faili asukoht ja nimi on õiged ning fail eksisteerib.
Silumistööriistad
Bash-skriptide silumiseks on kasulik kasutada käsku set -x
. See näitab iga skripti sammu täitmise ajal ja aitab vea põhjust kiiresti leida.
set -x # Skripti silumine sisse lülitatud
6. Ülesannete automatiseerimine Bashiga
Automatiseerimise ülevaade
Bash-skripte saab kasutada korduvate ülesannete tõhusaks automatiseerimiseks. Näiteks süsteemi varundamine, andmete sünkroniseerimine või aruannete loomine – see kõik vähendab süsteemiadministraatori töökoormust.
Automaatne varundusskript
Igapäevase andmekaitse jaoks varundab järgmine skript määratud kataloogi regulaarselt.
#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
DATE=$(date +%Y%m%d)
# Kui varunduskataloogi pole, loo see
if [ ! -d "$DST_DIR" ]; then
mkdir -p "$DST_DIR"
fi
# Paki kataloogi sisu ja tee varukoopia
tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .
echo "Varundamine õnnestus."
Skripti automaatne käivitamine croniga
Kasutades cron-i, saab varundusskripti käivitada iga päev kell 2 öösel.
0 2 * * * /path/to/backup.sh
Veakäsitlus ja teavitused
Lisame käsitluse juhuks, kui varundamisel tekib viga – probleemist teavitatakse administraatorit.
#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d)
if [ ! -d "$DST_DIR" ]; then
mkdir -p "$DST_DIR"
fi
if tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .; then
echo "Varundamine õnnestus $DATE" >> $LOG_FILE
else
echo "Varundamine ebaõnnestus $DATE" | mail -s "Varundamise viga" admin@example.com
fi