Jarayonlar va tarmoq
Har bir ishlab turgan dastur โ bu jarayon (process). Bu darsda jarayonlarni ko'rish va boshqarishni, dasturlarni fon rejimida ishlatishni, tizim xizmatlarini boshqarishni hamda tarmoq va paketlar bilan ishlashni o'rganamiz.
Jarayon nima?
Jarayon โ bu ishlab turgan dasturning bir nusxasi. Brauzer, matn muharriri, web-server โ har biri bitta yoki bir necha jarayon. Har bir jarayonning noyob PID (Process ID) raqami bor, u orqali jarayonni aniqlaymiz va boshqaramiz.
ps โ jarayonlar ro'yxati
ps (process status) ishlab turgan jarayonlarni ko'rsatadi. Odatda aux flaglari bilan barcha jarayonlarni chiqaramiz:
ps aux
Bu barcha foydalanuvchilarning barcha jarayonlarini PID, protsessor va xotira sarfini ko'rsatib chiqaradi. Ma'lum dasturni topish uchun grep bilan filtrlaymiz:
ps aux | grep node # 'node' bor jarayonlarni topish
Bu qatorlar ichidan node dasturlarini va ularning PID raqamlarini topib beradi.
top va htop โ jonli kuzatuv
top jarayonlarni real vaqtda, jonli yangilanib turadigan jadval sifatida ko'rsatadi โ protsessor va xotira eng ko'p iste'mol qilayotgan dasturlar tepada bo'ladi:
top
Chiqish uchun q tugmasini bosing. top tizim yuklamasini, umumiy xotira sarfini va har bir jarayon holatini ko'rsatadi.
htop โ topning chiroyliroq, rangli va qulayroq varianti. U odatda alohida o'rnatiladi:
sudo apt install htop
htop
htopda sichqoncha ishlaydi, jarayonlarni rang bilan ajratadi va bevosita ichidan jarayonni "o'ldirish" mumkin (F9 tugmasi). Server sekinlashsa, birinchi ish โ htop ochib, nima resursni yeb turganini ko'rish.kill โ jarayonni to'xtatish
Osilib qolgan yoki keraksiz jarayonni kill buyrug'i bilan uning PID raqami orqali to'xtatamiz:
kill 12345 # PID 12345 jarayonga to'xtash signali
kill -9 12345 # majburiy to'xtatish (qaysar jarayonlar uchun)
Oddiy kill jarayondan "iltimos, ishni yakunlab to'xta" deb so'raydi (yumshoq). kill -9 esa "darhol o'l" degan qattiq signal โ u faqat oddiy kill ishlamaganda ishlatiladi.
Nom bo'yicha to'xtatish uchun pkill qulay:
pkill node # barcha 'node' jarayonlarini to'xtatish
kill -9 jarayonga ishini xotirjam yakunlash imkonini bermaydi โ saqlanmagan ma'lumot yo'qolishi mumkin. Doim avval oddiy killni sinang, faqat u ishlamaganda -9ga o'ting.Fon rejimi: & va jobs
Odatda buyruq ishlab bo'lguncha terminal band bo'ladi. Dasturni fonda (background) ishlatib, terminalni bo'shatish uchun buyruq oxiriga & qo'yiladi:
node server.js &
Endi server fonda ishlaydi, terminaldan boshqa buyruqlar berishingiz mumkin. Fondagi ishlarni ko'rish va boshqarish uchun:
jobsโ joriy terminalning fondagi ishlari ro'yxati;fgโ fondagi ishni oldingi planga qaytarish (foreground);bgโ to'xtatilgan ishni fonda davom ettirish;- Ctrl+Z โ joriy ishni vaqtincha to'xtatib fonga o'tkazish;
- Ctrl+C โ joriy ishni butunlay to'xtatish.
jobs # fondagi ishlar
fg # oxirgi ishni oldinga qaytarish
fg %1 # 1-raqamli ishni oldinga qaytarish
& bilan ishga tushirilgan jarayonlar ham to'xtaydi. Serverni doimiy ishlatish uchun nohup, tmux yoki keyingi bo'limdagi systemctl xizmatlaridan foydalaniladi.systemctl โ tizim xizmatlarini boshqarish
Web-serverlar, ma'lumotlar bazalari kabi doimiy ishlaydigan dasturlar xizmat (service) sifatida ishga tushiriladi. Ularni systemctl boshqaradi:
sudo systemctl start nginx # xizmatni ishga tushirish
sudo systemctl stop nginx # to'xtatish
sudo systemctl restart nginx # qayta ishga tushirish
sudo systemctl status nginx # holatini ko'rish
Xizmatni kompyuter yoqilganda avtomatik ishga tushishini yoqish/o'chirish:
sudo systemctl enable nginx # avtoyuklashni yoqish
sudo systemctl disable nginx # avtoyuklashni o'chirish
systemctl status โ muammoni tekshirishning birinchi qadami. U xizmat ishlayaptimi (active/failed), oxirgi log qatorlari va xato borligini bir joyda ko'rsatadi.ping โ tarmoqni tekshirish
ping berilgan server bilan aloqa bor-yo'qligini tekshiradi โ unga kichik paketlar yuborib, javob vaqtini o'lchaydi:
ping google.com
Har soniyada javob kelib turadi, javob vaqti millisekundlarda ko'rsatiladi. To'xtatish uchun Ctrl+C bosing. Agar javob kelmasa โ internet yo'q yoki server ishlamayapti.
curl va wget โ tarmoqdan ma'lumot olish
curl โ tarmoq orqali so'rov yuboradigan universal vosita. U API bilan ishlash, web-sahifani olish, fayl yuklab olishda ishlatiladi:
curl https://example.com # sahifa mazmunini ekranga chiqarish
curl -O https://example.com/fayl.zip # faylni saqlab olish
curl -I https://example.com # faqat javob sarlavhalarini ko'rish
API bilan ishlashda ko'p qo'llaniladi. Masalan, JSON so'rov yuborish:
curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"nom": "Aziz"}'
wget โ asosan fayl yuklab olishga ixtisoslashgan, oddiyroq vosita:
wget https://example.com/dastur.tar.gz
Farqi: curl ko'p qirrali (API, so'rovlar), wget esa fayllarni, ayniqsa katta yuklamalarni (davom ettirish imkoni bilan) yuklab olishga qulay.
apt โ paket menejeri
Linuxda dasturlar paket menejeri orqali o'rnatiladi โ internetdan qidirib yuklab olishning hojati yo'q. Ubuntu/Debianda bu apt:
sudo apt update # paketlar ro'yxatini yangilash
sudo apt upgrade # o'rnatilgan paketlarni yangilash
sudo apt install git # 'git' paketini o'rnatish
sudo apt remove git # paketni o'chirish
apt search redis # paketni qidirish
Eng muhim qoida: yangi paket o'rnatishdan oldin doim apt update qiling โ bu paketlar ro'yxatini eng yangi holatga keltiradi:
sudo apt update && sudo apt install nodejs
Bu yerda && ikki buyruqni bog'laydi: birinchisi muvaffaqiyatli tugasa, ikkinchisi ishlaydi.
dnf yoki yum, Arch Linuxda pacman. Buyruqlar o'xshash mantiqda ishlaydi, faqat nomi farq qiladi. Ubuntu bilan ishlaganingiz uchun biz aptga e'tibor qaratamiz.Xulosa
- Jarayon โ ishlab turgan dastur, uning PID raqami bor;
ps auxโ jarayonlar ro'yxati;top/htopโ jonli kuzatuv;kill PIDโ to'xtatish,kill -9โ majburiy (faqat zarur bo'lsa);&โ fonda ishga tushirish;jobs,fg,bgโ fon ishlarini boshqarish;systemctl start/stop/status/enableโ tizim xizmatlarini boshqaradi;pingโ tarmoqni tekshirish;curlโ so'rovlar/API,wgetโ fayl yuklab olish;apt update+apt installโ paketlarni yangilash va o'rnatish.