cron
və at
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ə cron
və at
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
Sizin
crontab
-ınızı redaktə etmək üçün açın:crontab -e
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.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:
Skript yazın:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
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:
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
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. cron
dan 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ə
2 dəqiqədən sonra bildiriş üçün bir tapşırıq yaradın:
echo "notify-send 'Vaxt bitdi!'" | at now + 2 minutes
Tapşırıqların siyahısını yoxlayın:
atq
2 dəqiqədən sonra pop-up pəncərəsinin görünməsini gözləyin.
4. cron
və at
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ə, cron
və at
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!
GO TO FULL VERSION