CodeGym /Kurslar /Docker SELF /Sadə bir bash script yazmaq və cron ilə işləri avtomatlaş...

Sadə bir bash script yazmaq və cron ilə işləri avtomatlaşdırmaq

Docker SELF
Səviyyə , Dərs
Mövcuddur

Sadə bir bash script yazmaq və işləri avtomatlaşdırmaq üçün cron istifadə etmək

1. Tapşırığın qoyuluşu

Bu gün saytın əlçatanlığını yoxlayan və nəticəni log-fayla yazan real bir skript yazacağıq, sonra bu skriptin işə salınmasını cron vasitəsilə avtomatlaşdıracağıq.

Nə etmək istəyirik?

Biz belə bir bash skript yaradacağıq:

  1. Verilmiş saytın əlçatanlığını ping vasitəsilə yoxlayacaq.
  2. Yoxlama nəticəsini, tarixi və vaxtı daxil olmaqla jurnal faylına qeyd edəcək.
  3. Bu skripti hər 5 dəqiqədən bir avtomatik işə salacaq, cron ilə.

Niyə bu vacibdir?

Real həyatda veb-saytların və serverlərin əlçatanlığının monitorinqi sistem administratorlarının əsas vəzifələrindən biridir. Məsələn, əgər saytınız (və ya serveriniz) qəfil cavab verməyi dayandırdısa, bunu mümkün qədər tez öyrənmək istəyərsiniz. Belə ssenari nəinki monitorinq üçün, həm də iş müsahibələrində və ya praktiki işdə faydalıdır.


2. Addım 1: Sadə bash-skriptin yazılması

  1. Yoxlanılmalı olan sayt ünvanını təyin edəcəyik.
  2. Serverə sorğu göndərmək üçün ping istifadə edəcəyik.
  3. Cavabın mövcud olub olmadığını yoxlayacağıq.
  4. Nəticəni log faylda saxlayacağıq.

Gəlin site_check.sh faylını yaradaq:

#!/bin/bash

# Veb sayt ünvanını təyin edirik
WEBSITE="example.com"

# Nəticələrin log faylı
LOG_FILE="/var/log/site_status.log"

# Saytın əlçatanlığını ping ilə yoxlayırıq
if ping -c 1 $WEBSITE &> /dev/null; then
    # Əgər sayt əlçatandırsa
    echo "$(date): $WEBSITE əlçatandır" >> $LOG_FILE
else
    # Əgər sayt əlçatan deyilsə
    echo "$(date): $WEBSITE əlçatan deyil" >> $LOG_FILE
fi

Kodun izahı:

  1. #!/bin/bash — skriptin Bash istifadə edilərək icra olunmalı olduğunu göstərir.
  2. WEBSITE="example.com" — yoxlanılmalı olan saytın ünvanı. example.com-u istənilən başqa sayt və ya serverlə əvəz edə bilərsiniz.
  3. ping -c 1 $WEBSITE — göstərilən sayta bir (-c 1) paket göndərir. Əgər sayt cavab verirsə, komanda sıfır kodu ilə başa çatır. Əks halda, səhv ilə başa çatır.
  4. &> /dev/null — standart çıxışı və səhvləri "qara dəliyə" yönləndirir (biz ping çıxışını konsolda görmək istəmirik).
  5. $(date) — mesaja cari tarix və saat əlavə edir.
  6. >> $LOG_FILE — nəticəni log faylının sonuna əlavə edir.

3. Addım 2: Skripti manuel olaraq işə salmaq

Skripti avtomatlaşdırmadan əvvəl onun işlədiyini yoxlayaq.

  1. Skripti site_check.sh adlı faylda saxlayın.

  2. Onu icra olunabilən edin:

    chmod +x site_check.sh
    
  3. İşə salın:

    sudo ./site_check.sh
    

Skripti işə saldıqdan sonra /var/log/site_status.log faylını açın ki, yoxlama nəticələrinin log-a əlavə edildiyini görəsiniz. Bu əmri istifadə edin:

cat /var/log/site_status.log

Əgər hər şey qaydasındadırsa, belə bir sətir görməlisiniz:

Mon Oct 30 14:35:22 UTC 2023: example.com əlçatandır

4. Addım 3: cron istifadə edərək avtomatik icra konfiqurasiyası

Artıq bilirik ki, cron tapşırıqları cədvəl üzrə başlada bilər. İndi cron-u elə konfiqurasiya edəcəyik ki, skriptimiz hər 5 dəqiqədən bir işə düşsün.

crontab redaktəsi

crontab redaktorunu açın:

crontab -e

Aşağıdakı sətiri əlavə edin:

*/5 * * * * /path/to/site_check.sh

İzah:

  • */5 — tapşırığın hər 5 dəqiqədən bir başlamağını göstərir.
  • /path/to/site_check.sh — skriptimizin tam yolu. Yolun düzgün olduğuna əmin olun. Məsələn, əgər skript istifadəçinin ev kataloqunda yerləşirsə, yol belə bir şey olacaq: /home/your_username/site_check.sh.

Dəyişiklikləri saxladıqdan sonra cron skripti hər 5 dəqiqədən bir işə salmağa başlayacaq. Tapşırığın əlavə olunmasını yoxlamaq üçün aşağıdakı əmri icra edin:

crontab -l

5. Addım 4: cron işini yoxlamaq

İndi avtomatlaşdırmanın işlədiyini yoxlayaq. 5-10 dəqiqə gözləyin və log faylını yenidən açın:

cat /var/log/site_status.log

Hər 5 dəqiqədən bir yenilənmiş yeni qeydləri görməlisiniz. Məsələn:

Mon Oct 30 14:35:22 UTC 2023: example.com əlçatandır
Mon Oct 30 14:40:22 UTC 2023: example.com əlçatandır
Mon Oct 30 14:45:22 UTC 2023: example.com əlçatandır

6. Tipik suallar və səhvlərin analizi

  1. Ping 'Permission denied' səhvini göstərir

    Əgər skripti adi bir istifadəçi adından işə salırsansa, ola bilsin ki, onun kifayət qədər hüquqları yoxdur. Skripti sudo ilə işə sal və ya icra hüquqları əlavə et.

  2. Log faylı yaradılmır

    Log faylı (/var/log/site_status.log) üçün yolun düzgün qeyd edildiyinə və istifadəçinin həmin kataloqa yazma hüququ olduğuna əmin ol. Əgər log faylı yoxdursa, onu əl ilə yaratmaq üçün bu komandaları yerinə yetir:

    sudo touch /var/log/site_status.log
    sudo chmod 666 /var/log/site_status.log
    
  3. cron skripti başlamır

    Xidmətin cron işləyib işləmədiyini yoxla:

    sudo systemctl status cron
    

    Onun statusu active (running) olmalıdır. Əgər dayandırılıbsa, onu belə başladırsan:

    sudo systemctl start cron
    
  4. Skript cron-da icra olunmur, amma əl ilə işləyir

    Skriptin və istifadə olunan bütün faylların yolunun tam olaraq göstərildiyinə əmin olun. cron tapşırıqları üçün ətraf mühit dəyişənləri (məsələn, $PATH) fərqli ola bilər. Ən yaxşısı tam yollar istifadə etməkdir.


7. Təkmilləşdirmələr və əlavə tapşırıqlar

Veb saytların filtrasiyası

Skripti elə genişləndirin ki, bir neçə saytın əlçatanlığını yoxlasın. Məsələn:

WEBSITES=("example.com" "google.com" "stackoverflow.com")
for SITE in ${WEBSITES[@]}; do
    if ping -c 1 $SITE &> /dev/null; then
        echo "$(date): $SITE əlçatandır" >> $LOG_FILE
    else
        echo "$(date): $SITE əlçatan deyil" >> $LOG_FILE
    fi
done

Bildirişlərin göndərilməsi

Əgər sayt əlçatan deyilsə, bildiriş göndərməyi əlavə edin. Məsələn, email göndərmək üçün mail komandasından istifadə edərək:

# Email ilə bildiriş
if ! ping -c 1 $WEBSITE &> /dev/null; then
    echo "$WEBSITE əlçatan deyil!" | mail -s "Website Check Alert" your_email@example.com
fi

Dövri log yazma

Log-faylın ölçüsünü, məsələn, 1 MB ilə məhdudlaşdırın. Əgər fayl çox böyük olarsa, onu təzə bir log-fayl kimi arxivləşdirərək yenisini başladın.


Təbriklər! İndi sən bash-skriptlərdən və cron vasitəsilə real tapşırıqların avtomatlaşmasından istifadə etməyi bacarırsan. Bu bacarıqlar xüsusilə DevOps mühəndisləri və sistem administratorları üçün çox tələb olunan biliklərdir.

1
Опрос
Linux xidmətləri,  3 уровень,  6 лекция
недоступен
Linux xidmətləri
Linux xidmətləri
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION