CodeGym /Kurslar /Docker SELF /cron və at ilə tapşırıqların avtomatlaşdırılması

cron və at ilə tapşırıqların avtomatlaşdırılması

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

cronat ilə tapşırıqların avtomatlaşdırılması

1. Avtomatlaşdırma niyə lazımdır?

Tapşırıqların avtomatlaşdırılması — Linux-da xüsusilə hər hansı bir sistem administratoru üçün əsasların əsasıdır. Avtomatizasiyasız işi təsəvvür edin: hər səhər terminala daxil olub eyni əmri daxil edirsiniz ki, məlumatlarınızın surətini çıxarasınız, arxiv edəsiniz, serverə göndərəsiniz və köhnə log-ları təmizləyəsiniz. Bir həftə sonra bu rutin sizi peşənizi dəyişməyi düşünməyə vadar edəcək... Amma yox, biz buradayıq ki, maşını sizin sadiq qulluqçunuza çevirməyin yolunu öyrədək.

Bugünkü mühazirə — vaxt və tapşırıqlar sehridir. Biz əməliyyat sistemi səviyyəsində prosesləri inanılmaz vasitələrlə cronat vasitəsilə avtomatlaşdırmağı öyrənəcəyik. Bu utilitlər çoxlu vaxt, bəzən isə əsəbləri xilas edir.

Avtomatlaşdırma — hər hansı bir rutin tapşırıq üçün qurtarıcı dairədir. Məsələn, sizin müdiriniz üçün hesabat yaradan bir skriptiniz var. Bu hesabat hər səhər 8:00-da lazımdır. Skripti əl ilə başlatmaq üçün daha erkən durmaq (və kofe fincanı ilə ilişib qalıb başlatmağı unutmaq riski ilə) əvəzinə, bu tapşırığı avtomatik yerinə yetirmək üçün cron qura bilərsiniz.

cron — müəyyən vaxtda təkrarlanan tapşırıqlar üçün vasitədir.
at — konkret bir vaxtda yerinə yetirilməli olan tək tapşırıqlar üçün utilitdir.


2. cron ilə iş

cron nədir?

cron — arxa planda işləyən və müəyyən vaxtda proqramlaşdırılmış tapşırıqları yerinə yetirən bir demon prosesidir (sistem prosesi). Bu tapşırıqların cədvəlləri crontab adlı tekst fayllarında saxlanılır. Sistemdə hər bir istifadəçi öz fərdi crontab-ına sahib ola bilər.

Sizin ilk cron tapşırığınız

cron ilə işləmək üçün əsas komanda belə görünür:

crontab -e

Bu komanda cari istifadəçinin crontab-ını redaktə etmək üçün açır. Cədvəl formatını qeyd edərək tapşırıqlar əlavə edə bilərsiniz.

Cədvəl sintaksisi

crontab daxilində bir sıra altı sahədən ibarətdir:

* * * * * COMMAND
- - - - -
| | | | └─ Həftənin günü (0–7, burada 0 və 7 — bazar günüdür)
| | | └── Ay (1–12)
| | └─── Ayın günü (1–31)
| └──── Saatlar (0–23)
└───── Dəqiqələr (0–59)

Nümunə: hər gün günorta saat 12-də echo "Hello, Linux" işlədin:

0 12 * * * echo "Hello, Linux"

Təcrübə: sadə bir tapşırıq işə salaq

  1. Sizin crontab-ınızı redaktə etmək üçün açın:

    crontab -e
    
  2. Sətir əlavə edin:

    */5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.log
    

    Bu tapşırıq hər 5 dəqiqədən bir cari vaxtı cron_test.log faylına əlavə edəcək. Faylı saxlayın və çıxın.

  3. Tapşırığın başladığını yoxlayın:

    tail -f ~/cron_test.log
    

    5 dəqiqə sonra faylda yenilənmiş bir qeyd görməli olacaqsınız.

Planlaşdırılan tapşırıqlara baxış

Cari tapşırıqları yoxlamaq üçün:

crontab -l

Tapşırıqların silinməsi

crontab-dan bütün tapşırıqları silmək üçün:

crontab -r

cron ilə real nümunələr

Faylların arxivləşdirilməsi

Tutaq ki, hər gecə saat 3-də /var/logs kataloqundakı faylları arxivləşdirmək istəyirsiniz:

  1. Skript yazın:

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. crontab-da cədvəl əlavə edin:

    0 3 * * * /path/to/script.sh
    

Vəssalam! Artıq ehtiyat nüsxə etməyi heç vaxt unutmayacaqsınız.

Sistemin yüklənməsi barədə bildiriş

Məsələn, prosessorun yüklənməsi 80%-dən artıq olarsa, bildiriş almaq istəyirsiniz:

  1. Skript yazın:

    #!/bin/bash
    LOAD=$(uptime | awk '{print $10}' | sed 's/,//')
    if (( $(echo "$LOAD > 0.80" | bc -l) )); then
        echo "High CPU load: $LOAD" | mail -s "CPU Alert" you@example.com
    fi
  2. Cədvəli təyin edin:

    */10 * * * * /path/to/cpu_check.sh
    

3. at ilə iş

at konkret vaxtda tək bir tapşırığı yerinə yetirməyə imkan verir. crondan fərqli olaraq, at tapşırıqları təkrarlanmır. Bu, məsələn, "sabah saat 9-da bunu et" kimi tapşırıqlar üçün yararlıdır.

at ilə sadə tapşırıq

Tapşırığın necə planlaşdırılacağına dair bir nümunə:

echo "echo 'Salam, Linux!'" | at now + 1 minute

Bu komanda echo 'Salam, Linux!' komandasını bir dəqiqədən sonra işə salacaq.

Dəqiq vaxt və tarix göstərə bilərsiniz:

echo "echo 'Backup tamamlandı!'" | at 10:30 AM tomorrow

at tapşırıqlarının idarə olunması

Tapşırıq əlavə edəndən sonra onları siyahıya baxa bilərsiniz:

atq

Nümunə çıxışı:

1   Tue Oct 31 10:30:00 2023 a user
2   Tue Oct 31 11:00:00 2023 a user

Tapşırığı silmək üçün:

atrm <job_id>

Praktika: at-dən bildirişlər üçün istifadə

  1. 2 dəqiqədən sonra bildiriş üçün bir tapşırıq yaradın:

    echo "notify-send 'Vaxt bitdi!'" | at now + 2 minutes
    
  2. Tapşırıqların siyahısını yoxlayın:

    atq
    
  3. 2 dəqiqədən sonra pop-up pəncərəsinin görünməsini gözləyin.


4. cronat ilə iş zamanı tipik səhvlər

Ən çox rast gəlinən problemlərdən biri, skript və ya komandaya yanlış yol göstərilməsidir. Unutmayın ki, cron minimal mühitdə işləyir, ona görə də sizin dəyişənlərinizdən, məsələn PATH-dən xəbərsiz ola bilər. Ən yaxşı yol — mütləq yolları istifadə etməkdir.

Məsələn, əgər siz Python skriptini işə salmaq istəyirsinizsə:

*/30 * * * * /usr/bin/python3 /path/to/script.py

Həmçinin skriptin icazəyə malik olmasına əmin olun:

chmod +x /path/to/script.sh

Bunun harada faydası var?

Avtomatlaşdırma bacarıqları demək olar ki, IT ilə bağlı hər bir peşədə tələb olunur. Bu bilikləri aşağıdakılar üçün istifadə edə bilərsiniz:

  • Sistem tapşırıqlarını avtomatlaşdırmaq üçün.
  • Periodik ehtiyat nüsxələrin yaradılmasını sazlamaq üçün.
  • Serverlərin vəziyyətinə nəzarət etmək üçün.
  • Müsahibələrdə, harada ki, tez-tez cron və avtomatlaşdırma barədə soruşurlar.

Əgər DevOps, sistem inzibatçılığı sahəsində işləyirsinizsə və ya sadəcə daha məhsuldar olmaq istəyirsinizsə, cronat anlayışı sizə fərqlənməyə və çox vaxt qənaət etməyə kömək edəcək.

İndi siz Linux-u sizin üçün işləməyə məcbur etməyi bilirsiniz. Növbəti dəfə kimsə rutinlərdən şikayətlənəndə, sadəcə gülümsəyin, çünki siz — avtomatlaşdırma ustasısınız!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION