15. Scheduling, backup va automation — 15 ta savol-javob
Avval javobni o'zingiz ayting, so'ng ochib solishtiring.
1. cron qanday ishlaydi?
Javob
cron — fonda ishlaydigan daemon. Har daqiqada uyg'onib, crontab fayllarini o'qiydi va joriy daqiqaga mos keladigan qatorlardagi buyruqlarni yangi shell'da ishga tushiradi. Agar daemon to'xtagan bo'lsa (systemctl status cron), serverdagi hech bir vazifa ishlamaydi. Bitta vazifa ishlamasa, odatda muammo uning o'zida.
2. Crontab qatorining 5 ta vaqt maydoni qaysilar?
Javob
Daqiqa (0–59), soat (0–23), oy kuni (1–31), oy (1–12), hafta kuni (0–7, 0 va 7 yakshanba), so'ng buyruq. * — har qanday, 1,15 — ro'yxat, 1-5 — oraliq, */5 — har 5 birlikda. Tizim crontab'larida (/etc/crontab, /etc/cron.d/) beshta maydondan keyin foydalanuvchi nomi ham yoziladi.
3. Oy kuni va hafta kuni ikkalasi ham ko'rsatilsa nima bo'ladi?
Javob
Ikkalasi * bo'lmasa, cron ularni YOKI bilan birlashtiradi: 0 0 1 * 1 — har oyning 1-kuni yoki har dushanba. Ko'pchilik "va" deb o'ylaydi: bu klassik tuzoq. "Har oyning birinchi dushanbasi" uchun vaqt qatorida bunday shart yo'q, buyruq ichida tekshirish kerak ([ "$(date +\%d)" -le 7 ]).
4. Skript qo'lda ishlaydi, cron'da ishlamaydi. Eng ko'p sabablar qaysilar?
Javob
1) PATH farqi: cron minimal muhit bilan ishlaydi (/usr/bin:/bin), ~/.bashrc o'qilmaydi. 2) Joriy katalog boshqa (uy katalogi). 3) % belgisi crontab'da maxsus. 4) Muhit o'zgaruvchilari yo'q. 5) Ruxsat yoki x biti yo'q. 6) Chiqish yo'naltirilmagan, xato ko'rinmaydi. Yechim: to'liq yo'llar, PATH= o'rnatish, cd, chiqishni faylga yo'naltirish.
5. Crontab'da % nega muammo?
Javob
Crontab'da % — yangi qator belgisi: undan keyingi matn buyruqqa stdin sifatida beriladi. Shu sabab date +%F jim ravishda buzilgan buyruqqa aylanadi. To'g'ri yozuv: date +\%F. Bu, ayniqsa, sana bilan nomlangan zaxira fayllarda uchraydi.
6. Cron vazifasi chiqishi (stdout/stderr) qayerga ketadi?
Javob
Yo'naltirilmasa, cron chiqishni foydalanuvchiga pochta orqali yuboradi (MAILTO); pochta tizimi bo'lmasa yo'qoladi va xatolar ko'rinmay qoladi. Shu sabab >> /var/log/job.log 2>&1 bilan faylga yo'naltirish yoki MAILTO="". Vazifa ishga tushirilganini jurnaldan (journalctl -u cron, /var/log/syslog) tekshirish mumkin, lekin natijani emas.
7. Foydalanuvchi crontab'i, /etc/crontab, /etc/cron.d/ va cron.daily farqi nima?
Javob
Foydalanuvchi crontab'i (crontab -e) — shaxsiy, foydalanuvchi maydoni yo'q. /etc/crontab va /etc/cron.d/* — tizim darajasida, foydalanuvchi nomi bilan; paketlar cron.d ga alohida fayl qo'yadi. /etc/cron.hourly|daily|weekly|monthly/ — skriptlar katalogi, ularni run-parts ishga tushiradi (faylda nuqta bo'lmasligi va x biti kerak).
8. Cron'ni kimlar ishlata olishini qanday cheklaysiz?
Javob
/etc/cron.allow mavjud bo'lsa, faqat unda yozilganlar foydalana oladi. Bo'lmasa, /etc/cron.deny dagilar taqiqlanadi. Ikkalasi ham bo'lmasa, sozlamaga bog'liq (ko'pincha hamma yoki faqat root). Xavfsizlik nuqtai nazaridan ruxsat ro'yxati (allow) ishonchliroq.
9. Vazifa ustma-ust ishga tushmasligini qanday ta'minlaysiz?
Javob
Vazifa jadvaldagi oraliqdan uzoqroq davom etsa, ikkinchi nusxa boshlanadi, ular to'planib serverni yuklab qo'yishi mumkin. Yechim: flock -n /var/lock/job.lock buyruq (band bo'lsa darhol chiqib ketadi) yoki skript ichida qulf. Vazifa davomiyligini monitoring qilish ham foydali.
10. systemd timer cron'dan nimasi bilan farq qiladi?
Javob
Timer ikki fayldan iborat: .timer (qachon) va .service (nima). Afzalliklari: natija journalctl -u da yig'iladi, Persistent=true o'tkazib yuborilgan ishni yoqilgach bajaradi, RandomizedDelaySec yukni tarqatadi, xizmat bog'liqliklari, resurs cheklovlari va systemctl list-timers bilan ko'rinadi. Cron esa oddiy, hamma joyda bor va bir qatorda yoziladi.
11. Persistent=true nimani anglatadi va anacron bilan qanday bog'liq?
Javob
Timer oxirgi ishga tushish vaqtini diskda saqlaydi; server vazifa vaqtida o'chiq bo'lsa, yoqilgach o'tkazib yuborilgan ishni darhol bajaradi. Oddiy cron o'tkazib yuborilgan ishni takrorlamaydi. anacron ham shu muammoni hal qiladi (kunlik/haftalik vazifalar uchun, doim yoqilmaydigan kompyuterlarda).
12. Vaqt zonasi va yozgi vaqt cron'ga qanday ta'sir qiladi?
Javob
Cron tizim vaqt zonasi bo'yicha ishlaydi. Yozgi vaqtga o'tishda soat oldinga sakrasa, o'sha oraliqdagi vazifa o'tkazib yuborilishi, orqaga qaytsa ikki marta ishlashi mumkin. Shu sabab serverlar UTC da saqlanadi, kritik vazifalar yarim tun yoki o'tish soatlariga qo'yilmaydi. Timer'da OnCalendar vaqt zonasi bilan ham yozilishi mumkin.
13. Yaxshi zaxira (backup) strategiyasi nimalardan iborat? 3-2-1 qoidasi nima?
Javob
3-2-1: ma'lumotning 3 nusxasi, 2 xil saqlash muhitida, shundan 1 tasi tashqi joyda (boshqa joylashuv). Qo'shimcha: nusxalar saqlash muddati (retention), shifrlash, avtomatlashtirish, va eng muhimi — tiklashni muntazam sinash. Tiklab ko'rilmagan zaxira ishlaydi deb bo'lmaydi.
14. Zaxira skriptida qanday xatolardan qochish kerak?
Javob
Xatoni jim o'tkazib yuborish (chiqish kodi tekshirilmaydi), arxiv yaratilgan-yaratilmaganini tekshirmaslik, zaxirani xuddi shu diskda saqlash, eski nusxalarni cheksiz yig'ish (disk to'ladi) yoki xavfli o'chirish (rm bo'sh o'zgaruvchi bilan), maxfiy ma'lumotni shifrlamaslik. Skript muvaffaqiyat/xato holatini chiqish kodi va logi bilan bildirishi kerak.
15. Vazifa jimgina to'xtab qolganini qanday bilib olasiz?
Javob
Vazifa muvaffaqiyatli tugaganda tashqi monitoring (healthchecks.io kabi "dead man's switch") ga signal yuboradi; signal kelmasa, ogohlantirish chiqadi. Qo'shimcha: zaxira faylining yoshi va hajmini tekshirish, loglarda ERROR ni qidirish, timer holatini (systemctl list-timers) monitoring qilish. "Hech narsa xato demaydi" muvaffaqiyat degani emas.