Bashi Shelli Põhjalik Juhend: Põhikäsud, Skriptimine ja Automatiseerimine Linuxis

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õi chown.

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