Linux va terminal

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        # fondagi ishlar
fg          # oxirgi ishni oldinga qaytarish
fg %1       # 1-raqamli ishni oldinga qaytarish
Terminalni yopsangiz, & 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.

Boshqa distributivlarda boshqa paket menejerlari bor: Fedora/CentOSda 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