Linux nima? — yadro, distributivlar, nima uchun dasturchiga kerak
Muammodan boshlaylik
Siz Windows da kod yozasiz. Hammasi yaxshi — toki birinchi marta loyihani serverga chiqarishingiz kerak bo'lguncha. Hosting sizga IP manzil, login va parol beradi. Kirasiz va ko'rasiz:
deploy@server:~$ _
Sichqoncha yo'q. Oyna yo'q. "Pusk" tugmasi yo'q. Faqat qora ekran va miltillayotgan kursor.
Internetdagi serverlarning 90% dan ortig'i Linux da ishlaydi. Docker konteynerlari — Linux. Android — Linux yadrosi ustida. CI/CD (GitHub Actions) — Linux. Dasturchi uchun Linux va terminal — tanlov emas, asosiy ko'nikma.
Linux — bu yadro
Qat'iy aytganda, Linux — bu yadro (kernel): operatsion tizimning eng pastki qismi. U:
- Protsessor vaqtini dasturlar o'rtasida taqsimlaydi
- Xotirani boshqaradi
- Disk, tarmoq, klaviatura kabi qurilmalar bilan ishlaydi
- Dasturlar bir-biriga xalaqit bermasligini ta'minlaydi
┌─────────────────────────────────────┐
│ Dasturlar: bash, nginx, node, vim │
├─────────────────────────────────────┤
│ Tizim kutubxonalari va utilitalar │
├─────────────────────────────────────┤
│ Linux yadrosi (kernel) │
├─────────────────────────────────────┤
│ Uskuna: CPU, RAM, disk, tarmoq │
└─────────────────────────────────────┘
Yadroni 1991 yilda fin talabasi Linus Torvalds yozgan va kodini ochiq e'lon qilgan. Bugun uni minglab dasturchilar va kompaniyalar birgalikda rivojlantiradi. Linux — bepul va ochiq kodli.
[!INFO] Linux UNIX g'oyalariga asoslangan (1970-yillar). macOS ham UNIX avlodi — shuning uchun Mac terminalidagi buyruqlar (
ls,cd,grep) Linux bilan deyarli bir xil. Bu kursda o'rganganlaringiz Mac da ham ishlaydi.
Distributivlar
Yadroning o'zi bilan ishlab bo'lmaydi — unga shell, paket menejeri, utilitalar kerak. Yadro + shu narsalar to'plami — distributiv (distro).
| Distributiv | Qayerda ishlatiladi | Paket menejeri |
|---|---|---|
| Ubuntu | Serverlar, ish stoli — eng ommabop | apt |
| Debian | Serverlar, barqarorlik; Ubuntu asosi | apt |
| Fedora / RHEL / Rocky | Korporativ serverlar | dnf |
| Alpine | Docker image lar — juda kichik (5 MB) | apk |
| Arch | Hamma narsani o'zi sozlashni yoqtiruvchilar | pacman |
Bu kursda Ubuntu ishlatamiz — u eng keng tarqalgan va ko'p hostinglarda standart. Lekin buyruqlarning 95% i barcha distributivlarda bir xil; farq asosan paket menejerida (29-dars).
Nima uchun terminal?
"Grafik interfeys qulayroq-ku?" — Ish stolida, ehtimol. Lekin serverda:
1. Grafik interfeys yo'q. Serverda monitor yo'q, oyna tizimi resursni behuda sarflaydi.
2. Takrorlash va avtomatlashtirish. 1000 ta rasm nomini o'zgartirish:
for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Bitta qator. Sichqoncha bilan — bir soat.
3. Birlashtirish. Kichik buyruqlarni zanjirga ulash mumkin:
cat access.log | grep " 500 " | wc -l
"Log faylda nechta 500-xato bor?" — bitta qatorda. Bu UNIX falsafasi: har bir dastur bitta ishni yaxshi qilsin, dasturlar birga ishlay olsin.
4. Masofadan ishlash. SSH orqali (34-dars) dunyoning istalgan serveriga bir soniyada ulanasiz — sekin internetda ham ishlaydi.
5. Hujjatlash va ulashish. Buyruqni nusxalab, hamkasbga yuborish yoki skriptga yozish mumkin. "Bu yerga bos, keyin u yerga" ni esa yo'q.
Linux da "hammasi fayl"
Linux ning muhim g'oyalaridan biri: deyarli hamma narsa — fayl.
- Oddiy fayllar va papkalar — fayl
- Qurilmalar — fayl:
/dev/sda(disk),/dev/null("qora tuynuk") - Jarayonlar haqida ma'lumot — fayl:
/proc/1234/ - Tizim sozlamalari — matnli fayllar:
/etc/hosts,/etc/nginx/nginx.conf
Shuning uchun bir xil vositalar (cat, grep, >) bilan juda ko'p narsani qilish mumkin:
cat /proc/cpuinfo # protsessor haqida
cat /etc/os-release # qaysi distributiv
Sozlamalar — matnli fayllar: registry yo'q, maxsus vositalar yo'q, istalgan muharrirda tahrirlanadi va Git da saqlanadi.
Bu kursda nima o'rganasiz
- Terminal va fayl tizimi — harakatlanish, fayllar bilan ishlash, qidirish
- Matn bilan ishlash —
grep, pipe,sed,awk— loglarni tahlil qilish - Ruxsatlar —
chmod,sudo, nima uchun "Permission denied" - Jarayonlar va xizmatlar —
ps,kill,systemd - Tarmoq va SSH — serverlarga ulanish, fayl ko'chirish, firewall
- Bash skriptlar — avtomatlashtirish va
cron - Server — noldan sozlash va ilovani chiqarish
Kurs oxirida yangi VPS ni olib, xavfsiz sozlab, unda ilovangizni ishga tushira olasiz. Shundan keyin Docker kursi tabiiy davom bo'ladi.
Nima uchun shunday?
Nima uchun serverlar dunyosida aynan Linux g'olib bo'ldi?
Bir nechta sabab birlashdi. Bepul — 1000 ta serverga litsenziya to'lash shart emas. Ochiq kod — muammoni o'zingiz topib tuzatishingiz, tizimni ehtiyojingizga moslashingiz mumkin. Barqaror va yengil — server oylab qayta yuklanmasdan ishlaydi, keraksiz grafik qatlamsiz. Avtomatlashtirish — hamma narsa matnli buyruq va fayl, demak skript bilan boshqariladi. Bulutli provayderlar (AWS, Google) minglab serverlarni aynan shu xususiyatlar tufayli boshqara oladi. Natijada butun ekotizim — Docker, Kubernetes, CI tizimlari — Linux atrofida qurildi.
Xulosa
Eslab qoling:
- Linux — yadro; Ubuntu, Debian, Alpine — distributivlar (yadro + vositalar)
- Serverlarning aksariyati, Docker va CI — Linux da
- Terminal: avtomatlashtirish, buyruqlarni birlashtirish, masofadan ishlash
- "Hammasi fayl" — sozlamalar matnli fayllarda, qurilmalar ham fayl
- macOS terminali ham deyarli bir xil — bilimlar ko'chadi
- Kursda — Ubuntu
Keyingi dars
2-dars: Linux muhitini tayyorlash — WSL 2, virtual mashina, VPS