Tutorijal: Linux i komandna linija

Uvod u Linux za DevOps inženjere

Linux operativni sistem je nezaobilazan alat u svetu DevOps-a. Razumevanje njegovih osnova i tečno korišćenje komandne linije su fundamentalne veštine za svakog DevOps inženjera. Bilo da se radi o konfigurisanju servera, automatizaciji zadataka, implementaciji CI/CD pipeline-a ili rešavanju problema u produkciji, poznavanje Linuxa je ključno. Ovaj tutorijal će vas provesti kroz osnovne koncepte i praktične primere kako biste stekli samopouzdanje u radu sa Linux komandnom linijom.

Zašto je Linux važan u DevOps-u?

DevOps filozofija promoviše automatizaciju, efikasnost i saradnju. Linux, sa svojom stabilnošću, fleksibilnošću i bogatim ekosistemom alata, savršeno se uklapa u ove principe. Većina serverskih infrastruktura, cloud okruženja i kontejnerskih platformi (poput Dockera i Kubernetes-a) zasnovana je na Linuxu. Stoga, duboko razumevanje Linuxa omogućava DevOps inženjerima da:

Osnove Linux operativnog sistema

Linux je operativni sistem otvorenog koda, sličan Unixu, koji je postao dominantan u serverskom svetu. Postoji mnogo distribucija (distro-a) Linuxa, kao što su Ubuntu, CentOS, Debian, Red Hat Enterprise Linux (RHEL) i Fedora. Iako se razlikuju po paketskim menadžerima i nekim konfiguracionim detaljima, osnovne komande i principi su uglavnom isti.

Struktura fajl sistema

Linux fajl sistem je hijerarhijski organizovan, počevši od korenskog direktorijuma (/). Razumevanje ove strukture je ključno za navigaciju i upravljanje fajlovima. Evo nekih važnih direktorijuma:

Osnovne komande za navigaciju i upravljanje fajlovima

Ove komande su osnova za interakciju sa Linux fajl sistemom:

Pregled sadržaja fajlova

Upravljanje procesima i servisima

Razumevanje kako se procesi pokreću i upravljaju je ključno za dijagnostiku i održavanje sistema.

Procesi

Servisi (Systemd)

Moderni Linux sistemi koriste systemd za upravljanje servisima.

Upravljanje korisnicima i dozvolama

Bezbednost je ključna, a upravljanje korisnicima i njihovim dozvolama je osnovni deo toga.

Korisnici i grupe

Dozvole fajlova (chmod)

Linux koristi sistem dozvola za fajlove i direktorijume koji se sastoji od tri tipa dozvola (čitanje, pisanje, izvršavanje) za tri kategorije (vlasnik, grupa, ostali).

Dozvole se mogu predstaviti simbolički (npr. rwx) ili numerički (oktalno).

Dozvola Numerička vrednost
r 4
w 2
x 1
- 0

Primer: rwx r-x r-- (vlasnik ima sve, grupa čita i izvršava, ostali samo čitaju) prevodi se u 754.

Vlasništvo fajlova (chown)

Bash skripting

Bash skripting je moćan alat za automatizaciju zadataka na Linuxu. Omogućava vam da kombinujete više komandi u jedan izvršni fajl.

Osnove Bash skriptinga

Svaki bash skript počinje sa shebang linijom koja govori sistemu koji interpreter da koristi:

#!/bin/bash

Varijable:

#!/bin/bash

IME="Svete"
echo "Zdravo, $IME!"

Uslovi (if/else):

#!/bin/bash

BROJ=10

if [ $BROJ -gt 5 ]; then
  echo "Broj je veći od 5."
else
  echo "Broj je manji ili jednak 5."
fi

Petlje (for/while):

#!/bin/bash

for i in 1 2 3 4 5;
do
  echo "Broj: $i"
done

BROJAC=0
while [ $BROJAC -lt 3 ]; do
  echo "Brojač: $BROJAC"
  BROJAC=$((BROJAC + 1))
done

Funkcije:

#!/bin/bash

pozdrav() {
  echo "Zdravo, $1!"
}

pozdrav "Svet"
pozdrav "DevOps"

Praktičan primer: Bekap skripta

Ovaj skript će kreirati kompresovanu arhivu određenog direktorijuma i sačuvati je sa vremenskom oznakom.

#!/bin/bash

# Direktorijum za bekap
SOURCE_DIR="/var/www/html"
# Direktorijum gde će se čuvati bekapovi
BACKUP_DIR="/home/ubuntu/backups"
# Naziv bekap fajla sa vremenskom oznakom
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="web_app_backup_${TIMESTAMP}.tar.gz"

# Kreiranje bekap direktorijuma ako ne postoji
mkdir -p "$BACKUP_DIR"

echo "Pokrećem bekap direktorijuma: $SOURCE_DIR"

# Kreiranje kompresovane arhive
tar -czvf "$BACKUP_DIR/$BACKUP_FILE" "$SOURCE_DIR"

if [ $? -eq 0 ]; then
  echo "Bekap uspešno kreiran: $BACKUP_DIR/$BACKUP_FILE"
else
  echo "Greška prilikom kreiranja bekapa."
fi

# Brisanje starih bekapova (npr. starijih od 7 dana)
find "$BACKUP_DIR" -type f -name "web_app_backup_*.tar.gz" -mtime +7 -delete
echo "Stari bekapovi obrisani."

Da biste pokrenuli ovaj skript:

  1. Sačuvajte ga kao backup.sh.
  2. Dajte mu dozvolu za izvršavanje: chmod +x backup.sh.
  3. Pokrenite ga: ./backup.sh.

SSH i remote pristup

SSH (Secure Shell) je protokol za bezbedan remote pristup serverima. Korišćenje SSH ključeva umesto lozinki je standardna praksa u DevOps-u.

Generisanje SSH ključeva

ssh-keygen -t rsa -b 4096 -C "vas_email@example.com"

Ovo će kreirati dva fajla: id_rsa (privatni ključ) i id_rsa.pub (javni ključ) u direktorijumu ~/.ssh/.

Kopiranje javnog ključa na server

ssh-copy-id korisnik@vas_server_ip

Ova komanda će kopirati vaš javni ključ na server i dodati ga u ~/.ssh/authorized_keys fajl, omogućavajući vam da se prijavite bez lozinke.

Povezivanje putem SSH-a

ssh korisnik@vas_server_ip

Cron Jobs i automatizacija zadataka

Cron je alat za zakazivanje zadataka na Linuxu. Koristi se za automatizaciju ponavljajućih zadataka, kao što su bekapovi, čišćenje logova ili pokretanje skripti.

Uređivanje Cron tabele

crontab -e

Ovo će otvoriti cron tabelu u tekst editoru. Svaki red u cron tabeli predstavlja jedan zakazani zadatak.

Sintaksa Cron posla

Sintaksa je sledeća:

* * * * * komanda_za_izvrsavanje
Polje Opis Dozvoljene vrednosti
1 Minut (0-59) * ili 0-59
2 Sat (0-23) * ili 0-23
3 Dan u mesecu (1-31) * ili 1-31
4 Mesec (1-12) * ili 1-12
5 Dan u nedelji (0-7, 0 i 7 su nedelja) * ili 0-7

Primeri:

Praktičan primer: Zakazivanje bekap skripte

Da biste zakazali bekap skriptu koju smo ranije kreirali da se pokreće svakog dana u 3 ujutru, dodajte sledeći red u vašu cron tabelu:

0 3 * * * /home/ubuntu/backup.sh >> /var/log/backup.log 2>&1

>> /var/log/backup.log 2>&1 preusmerava standardni izlaz i greške u log fajl, što je dobra praksa za praćenje izvršavanja cron poslova.

Zaključak

Ovaj tutorijal je pokrio osnovne, ali ključne aspekte Linuxa i komandne linije koji su neophodni za svakog DevOps inženjera. Kontinuiranim vežbanjem i istraživanjem, produbićete svoje znanje i postati efikasniji u automatizaciji i upravljanju infrastrukturom. Zapamtite, komandna linija je vaš najmoćniji alat u DevOps svetu.

Reference


Autor: Manus AI Datum: 27. jul 2025.