IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal26/40-dars16 daqiqa
Mundarija (35)

Jarayonlar va band portlar: ps, kill va EADDRINUSE

Qisqacha: Ishlab turgan har bir dastur — PID raqamli jarayon. Uni ps bilan ko'rasiz va kill PID bilan to'xtatasiz (qotib qolsa — kill -9 PID). EADDRINUSE: address already in use :::3000 xatosi — "3000-portni boshqa jarayon egallab turibdi" degani. Kimligini lsof -i :3000 (macOS, Linux) yoki netstat -ano | findstr :3000 (Windows) topadi, keyin o'sha jarayon to'xtatiladi.

Bu darsda

  • Terminalda ishlab turgan jarayonlarni ko'rasiz: ps, top, Windows'da tasklist.
  • Ctrl + C va Ctrl + Z farqini, &, jobs, fg bilan orqa fonda ishlashni bilasiz.
  • kill va kill -9 qanday signal yuborishini va qaysi birini qachon ishlatishni tushuntira olasiz.
  • Port nima ekanini oddiy so'zlar bilan aytib bera olasiz.
  • EADDRINUSE xatosini ko'rganda portni kim band qilganini topib, bo'shatasiz — Windows'da ham, macOS/Linux'da ham.

Oldin bilishingiz kerak: Operatsion tizim nima: kernel, jarayon va oqim, Exit code va buyruqlarni zanjirlash, Oqimlar, pipe va yo'naltirish.

1. Nega bu kerak?

Bir kun siz o'z saytingizni kompyuteringizda ishga tushirasiz va ekranda qizil yozuv chiqadi:

text
Error: listen EADDRINUSE: address already in use :::3000

Kecha hammasi ishlagan edi. Kod o'zgarmagan. Nima bo'ldi?

Ko'pincha javob kulgili: kechagi serveringiz hali ham ishlayapti. Siz terminal oynasini yopgansiz yoki Ctrl + Z bosgansiz — lekin dastur o'chmagan. U 3000-portni egallab turibdi, yangi nusxa esa o'sha joyga sig'maydi.

Bu xato kursda ham, real ishda ham juda ko'p uchraydi. Uni hal qilish uchun uch narsani bilish kerak: jarayonni qanday ko'rish, qanday to'xtatish va port nima.

2. Jarayonlarni ko'rish

2.1 Eslatma: jarayon va PID

OS darsida ko'rgan edik: diskdagi dastur — shunchaki fayl. Uni ishga tushirganingizda operatsion tizim jarayon (process) yaratadi va unga takrorlanmas raqam beradi — PID (Process ID). Windows'da buni Task Manager'da ko'rgansiz. Endi xuddi shuni terminalda qilamiz.

Mashq uchun bizga uzoq ishlaydigan dastur kerak. sleep shunday buyruq: u berilgan soniya davomida "uxlaydi" — hech narsa qilmaydi, faqat ishlab turadi. Git Bash, WSL, macOS va Linux'da bor.

2.2 ps — jarayonlar ro'yxati

Birinchi terminal oynasida yozing:

bash
sleep 300

Prompt qaytmaydi — sleep 300 soniya (5 daqiqa) ishlaydi. Endi ikkinchi terminal oynasini oching va yozing:

bash
ps

Linux yoki WSL'da natija shunga o'xshaydi:

text
    PID TTY          TIME CMD
   2210 pts/0    00:00:00 bash
   2388 pts/1    00:00:00 sleep
   2390 pts/0    00:00:00 ps
Ustun Ma'nosi
PID Jarayon raqami — eng muhimi
TTY Qaysi terminal oynasiga tegishli
TIME Protsessor vaqti qancha sarflangan
CMD Qaysi buyruq

Raqamlar sizda boshqacha bo'ladi. ps ning o'zi ham ro'yxatda bor — u ham jarayon.

Git Bash'da ps biroz boshqa ustunlar chiqaradi, jumladan WINPID — shu jarayonning Windows'dagi raqami. Git Bash'dagi ps faqat Git Bash ichida ishga tushgan jarayonlarni ko'rsatadi. Windows'ning barcha jarayonlari uchun tasklist (yoki Task Manager) kerak.

2.3 Hamma jarayonlar: ps aux

Oddiy ps faqat sizning terminalingizdagi jarayonlarni ko'rsatadi. Butun tizimni ko'rish uchun macOS va Linux'da ps aux yoziladi. Ro'yxat juda uzun bo'ladi, shuning uchun pipe darsidagi grep bilan filtrlanadi:

bash
ps aux | grep sleep

aux — uchta qisqa flag birga: a — hamma foydalanuvchilarniki, u — egasi va xotira ustunlari bilan, x — terminalga bog'lanmaganlari ham. Natijada USER, PID, %CPU (protsessor foizi), %MEM (xotira foizi) va COMMAND ustunlari bo'ladi. Qator juda uzun, shuning uchun bu yerda ko'rsatmaymiz — o'zingiz sinab ko'ring.

Maslahat: ps aux | grep sleep natijasida ko'pincha grep sleep qatorining o'zi ham chiqadi. Chunki qidirish paytida grep ham jarayon edi va nomida sleep so'zi bor. Uni e'tiborsiz qoldiring.

Windows'da (Git Bash yoki PowerShell'da) shunga o'xshash buyruq — tasklist:

text
Image Name                     PID Session Name        Session#
========================= ======== ================ ===========
node.exe                      7880 Console                    1

(Chiqish qisqartirilgan: o'ng tomonda yana "Mem Usage" ustuni bor.)

2.4 top — jonli ko'rinish

ps — bir lahzalik surat. top esa jonli ro'yxat: har 1–3 soniyada yangilanadi va eng ko'p protsessor ishlatayotgan jarayonlarni tepada ko'rsatadi. Bu — terminaldagi Task Manager. Chiqish — q tugmasi.

top macOS, Linux va WSL'da bor, Git Bash'da yo'q. Windows'da uning o'rnida Task Manager (Ctrl + Shift + Esc) ishlatiladi. Chiroyliroq muqobili htop ni zamonaviy CLI vositalari darsida ko'ramiz.

Tekshirib ko'ring: ps natijasida sleep jarayonining PID'i 2388. Ertaga xuddi shu buyruqni ishga tushirsangiz, PID yana 2388 bo'ladimi?

Javob

Deyarli aniq — yo'q. PID har ishga tushirishda operatsion tizim tomonidan yangidan beriladi. Shuning uchun PID'ni har safar ps (yoki boshqa buyruq) bilan qayta topasiz, eslab yurmaysiz.

3. Jarayonni to'xtatish

3.1 Signal nima?

Jarayonni "to'xtatish" aslida unga signal yuborish demak. Signal — operatsion tizim jarayonga yuboradigan qisqa xabar: "to'xta", "yopil", "uxla". Har signalning nomi va raqami bor. Bizga to'rttasi kerak:

Signal Raqam Ma'nosi Qanday yuboriladi
SIGINT 2 "To'xta" (interrupt) Ctrl + C
SIGTERM 15 "Iltimos, yopil" kill PID
SIGKILL 9 "Darhol o'l" kill -9 PID
SIGTSTP 20 (Linux) "Pauza qil" Ctrl + Z

SIGINT va SIGTERM — iltimos. Dastur ularni "eshitib", ochiq fayllarini saqlab, toza yopiladi. SIGKILL esa dasturga umuman yetib bormaydi: operatsion tizim jarayonni shunchaki o'chiradi.

O'xshatish: mehmon ketishi kerak. SIGTERM — "Vaqt bo'ldi, yig'inib chiqsangiz". Mehmon kiyinadi, xayrlashadi, eshikni yopadi. SIGKILL — mehmonni oyog'ini yerga tekkizmay ko'chaga chiqarib yuborish. Tez, lekin paltosi ichkarida qoladi.

3.2 Ctrl + C — oldindagi dasturni to'xtatish

Birinchi oynadagi sleep 300 ga qayting va Ctrl + C bosing. Prompt darhol qaytadi — dastur to'xtadi. Terminal darsida buni "to'xtatish" deb o'rgangan edik; aslida bu SIGINT signali.

Exit code darsidan eslang: Ctrl + C bilan to'xtagan dastur 130 kodini qaytaradi. Bu tasodif emas: 128 + 2 (SIGINT raqami).

3.3 kill — PID bo'yicha to'xtatish

Dastur boshqa oynada yoki orqa fonda ishlayotgan bo'lsa, Ctrl + C yetib bormaydi. Unda PID kerak:

bash
kill 2388

Bu SIGTERM yuboradi. Muvaffaqiyatli bo'lsa, hech narsa chiqmaydi (yangiliksiz — yaxshi yangilik). Jarayon allaqachon yo'q bo'lsa:

text
bash: kill: (2388) - No such process

"Bunday jarayon yo'q" — ehtimol u o'zi tugagan yoki PID'ni adashtirdingiz.

Dastur SIGTERM'ga javob bermasa (qotib qolgan bo'lsa), oxirgi chora:

bash
kill -9 2388

Diqqat: kill -9 ni odat qilmang. Dastur ma'lumotlarni diskka yozib ulgurmaydi — yarim yozilgan fayl yoki buzilgan baza qolishi mumkin. Avval oddiy kill, bir necha soniya kuting, faqat keyin -9.

Maslahat: Linux va macOS'da jarayonni PID'siz, nomi bo'yicha ham to'xtatish mumkin: pkill sleep — nomida sleep bor barcha jarayonlarga SIGTERM yuboradi. Qulay, lekin ehtiyot bo'ling: pkill node sizning hamma Node dasturlaringizni birdaniga to'xtatadi. Git Bash'da pkill yo'q.

Tekshirib ko'ring: Server dasturi foydalanuvchi buyurtmasini bazaga yozayotgan paytda uni to'xtatish kerak. kill yoki kill -9 — qaysi biri xavfsizroq va nega?

Javob

kill (SIGTERM). Dastur signalni oladi va joriy yozuvni tugatib, toza yopiladi. kill -9 uni yozuvning o'rtasida uzib qo'yishi mumkin — buyurtma yarim saqlanib qoladi.

4. Oldingi va orqa fon

4.1 & — orqa fonda ishga tushirish

Odatda buyruq oldingi fonda (foreground) ishlaydi: u tugaguncha prompt qaytmaydi. Buyruq oxiriga & qo'yilsa, u orqa fonda (background) ishlaydi va prompt darhol qaytadi:

bash
sleep 300 &
text
[1] 2388

[1] — shell bergan vazifa raqami (job number), 2388 — PID. Endi terminal bo'sh, sleep esa orqada ishlayapti.

4.2 jobs, fg, kill %1

bash
jobs
text
[1]+  Running                 sleep 300 &

jobs — shu terminaldan orqa fonga yuborilgan vazifalar. Ular bilan ishlash:

Buyruq Nima qiladi
fg Oxirgi vazifani oldingi fonga qaytaradi
fg %1 1-vazifani oldingi fonga qaytaradi
bg Pauzadagi vazifani orqa fonda davom ettiradi
kill %1 1-vazifani to'xtatadi (PID shart emas)

%1 dagi % — "bu PID emas, vazifa raqami" degan belgi.

4.3 Ctrl + Z — tuzoq

Ctrl + Z dasturni to'xtatmaydi — faqat pauzaga qo'yadi va orqa fonga suradi:

text
^Z
[1]+  Stopped                 sleep 300

Stopped — "to'xtatilgan", lekin o'chirilmagan. Jarayon xotirada turibdi va o'zi egallagan hamma narsani — xotira, fayllar, port — ushlab turibdi. fg bilan qaytarsangiz, qolgan joyidan davom etadi.

Boshlovchilar Ctrl + Z ni "chiqish" deb o'ylaydi (ba'zi dasturlarda u "bekor qilish"). Terminalda esa bu — 1-bo'limdagi EADDRINUSE ning eng ko'p uchraydigan sababi.

Qoida: dasturni to'xtatish — Ctrl + C. Tasodifan Ctrl + Z bosgan bo'lsangiz: fg yozing, keyin Ctrl + C.

Tekshirib ko'ring: jobs natijasida [1]+ Stopped node server.js turibdi. Server so'rovlarga javob beradimi? Port bo'shmi?

Javob

Ikkalasiga ham "yo'q". Stopped — jarayon pauzada: u so'rovlarga javob bermaydi, lekin portni ushlab turibdi. Yangi server shu portda ishga tusha olmaydi. Yechim: fg, keyin Ctrl + C — yoki kill %1.

5. Port nima?

Portlarni internet qismida batafsil o'rganamiz. Hozir bitta o'xshatish yetadi.

Kompyuter — ko'p qavatli biznes-markaz. Uning manzili bitta (IP manzil). Ichida esa raqamlangan xonalar bor — portlar. Tarmoqdan kelgan har bir so'rov manzilga emas, aniq xonaga keladi: "3000-xonaga". Port — 0 dan 65535 gacha son, u tarmoq xabari kompyuterdagi qaysi dasturga tegishli ekanini ko'rsatadi.

Asosiy qoida: bitta portni bir vaqtda faqat bitta dastur egallay oladi (dasturchilar "tinglaydi" — listen deyishadi). Xonada ijarachi o'tirgan bo'lsa, ikkinchisi kira olmaydi.

Dasturchilar ko'p uchratadigan portlar:

Port Odatda kim
3000 React, Next.js, Express loyihalari
5173 Vite loyihalari
5432 PostgreSQL bazasi
80 / 443 Veb-saytlar (HTTP / HTTPS)

Bu nomlarning hammasini kursda o'rganamiz — hozir shunchaki "har xil dastur — har xil port" ekanini ko'ring.

6. EADDRINUSE: band portni bo'shatish

6.1 Xatoni o'qish

Node.js (keyinroq o'rnatasiz) band portda server ochmoqchi bo'lsa, shunday yozadi (qisqartirilgan):

text
Error: listen EADDRINUSE: address already in use :::3000
  code: 'EADDRINUSE',

Bo'laklaymiz:

  • listen — "tinglashni boshlash" (portni egallash) amali.
  • EADDRINUSE — Error ADDRess IN USE: "manzil band" xatosining kodi.
  • address already in use — "manzil allaqachon ishlatilmoqda".
  • :::3000 — qaysi manzil. Uni :: + : + 3000 deb o'qing: :: — "kompyuterning barcha tarmoq manzillari" (yangi IPv6 yozuvida), o'rtadagi : — manzil bilan portni ajratuvchi, 3000 — port.

Boshqa dasturlar xuddi shu muammoni boshqa so'zlar bilan aytadi: Port 3000 is already in use, Address already in use. Ma'nosi bir.

6.2 Uch qadamli yechim

flowchart TD
  A["EADDRINUSE :::3000"] --> B["1. Portni kim egallagan?<br/>lsof yoki netstat"]
  B --> C["2. PID ni oling"]
  C --> D{"Bu sizning eski<br/>serveringizmi?"}
  D -- "ha" --> E["3. To'xtating:<br/>kill yoki Stop-Process"]
  D -- "yo'q, begona dastur" --> F["Serverni boshqa<br/>portda ishga tushiring"]

6.3 macOS, Linux va WSL'da: lsof

lsof (list open files — ochiq fayllar ro'yxati) — port kimda ekanini ko'rsatadi. -i :3000 — "3000-port bilan bog'liqlarini ko'rsat":

bash
lsof -i :3000
text
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
node    51234  ali   23u  IPv6 0x9f2c...      0t0  TCP *:3000 (LISTEN)

Bizga ikkita ustun kerak: COMMAND — node (dastur), PID — 51234. (LISTEN) — "shu portni tinglayapti". Endi:

bash
kill 51234

Hech narsa chiqmasa — hammasi yaxshi. lsof -i :3000 ni qayta yozing: bo'sh natija — port bo'sh.

lsof Ubuntu'da ba'zan o'rnatilmagan bo'ladi. Unda: sudo apt install lsof, yoki Linux'da tayyor turadigan muqobil — ss -ltnp | grep 3000. ss (socket statistics — ulanishlar statistikasi) flaglari: l — faqat tinglayotganlar, t — TCP ulanishlar, n — nomlar emas, raqamlar, p — egasi (dastur nomi va PID). Boshqa foydalanuvchining jarayoni bo'lsa, egasini ko'rish uchun sudo kerak bo'ladi.

6.4 Windows'da: netstat va taskkill

Windows'da lsof yo'q (Git Bash'da ham). O'rniga netstat -ano: -a — hamma ulanishlar, -n — raqamlar bilan, -o — egasining PID'i bilan. Uni findstr (Windows'dagi grep) bilan filtrlaymiz. Bu buyruq PowerShell'da ham, Git Bash'da ham ishlaydi:

bash
netstat -ano | findstr :3000
text
  TCP    0.0.0.0:3000     0.0.0.0:0     LISTENING       8316
  TCP    [::]:3000        [::]:0        LISTENING       8316

(Bo'sh joylar qisqartirildi.) LISTENING — tinglayapti, oxirgi ustun — Windows PID'i: 8316. Ikkita qator — bitta dastur ikki xil manzil turida tinglayapti, PID bir xil.

PID'ni to'xtatish:

  • PowerShell'da: Stop-Process -Id 8316
  • cmd yoki PowerShell'da: taskkill /PID 8316 /F
  • Git Bash'da: taskkill //PID 8316 //F — ikkita chiziq bilan! Sababi xatolar bo'limida.

PowerShell'da portni tekshirishning qulayroq usuli ham bor:

powershell
Get-NetTCPConnection -LocalPort 3000 -State Listen

Natijadagi OwningProcess ustuni — PID. Bu buyruqlar tilini PowerShell darsida o'rganamiz.

6.5 Bitta buyruq: npx kill-port

Node.js o'rnatilgan bo'lsa, hamma tizimda bir xil ishlaydigan qisqa yo'l bor:

bash
npx kill-port 3000

npx — internetdan kichik dasturni yuklab, bir marta ishga tushiradigan vosita (npx darsida to'liq ko'ramiz). kill-port shu port egasini o'zi topadi va to'xtatadi. Qulay — lekin nima bo'layotganini tushunish uchun avval qo'lda qilishni o'rganing.

6.6 Ikkinchi yo'l: boshqa port

Ba'zan portni boshqa, kerakli dastur egallagan bo'ladi — masalan, boshqa loyihangiz. Uni o'chirish shart emas. Yangi serverni boshqa portda ishga tushirasiz. Muhit o'zgaruvchilari darsidagi bir martalik o'zgaruvchi aynan shu uchun: PORT=3001 npm start.

Tekshirib ko'ring: netstat -ano | findstr :5432 natijasida LISTENING 4120 chiqdi. Tasklist'da 4120 — postgres.exe. Siz Node serveringizni 5432-portda ochmoqchi edingiz. Nima qilasiz?

Javob

postgres.exe ni o'chirmaysiz — bu ma'lumotlar bazasi, u kerak. Adashgan — sizning serveringiz: 5432 — PostgreSQL'ning odatiy porti. Serverni boshqa portda (masalan 3000) ishga tushirasiz.

7. Ko'p uchraydigan xatolar

7.1 Terminalni yopdim — server baribir ishlayapti

VS Code terminalini "axlat qutisi" tugmasi bilan emas, boshqa yo'l bilan yopdingiz yoki server orqa fonda (&) qoldi. Oyna yo'q, lekin jarayon yashayapti va portni ushlab turibdi. Tuzatish: 6-bo'limdagi qadamlar — portdan PID'ni topib, to'xtatish.

7.2 Git Bash'da taskkill /PID

bash
taskkill /PID 8316 /F
text
ERROR: Invalid argument/option - 'C:/Program Files/Git/PID'.

"Noto'g'ri argument: C:/Program Files/Git/PID". Qayerdan paydo bo'ldi bu yo'l? Git Bash / bilan boshlangan so'zni Linux'dagi yo'l deb o'yladi va uni Windows yo'liga "tarjima" qildi: /PID → C:/Program Files/Git/PID. Sizda yo'l Git qayerga o'rnatilganiga qarab boshqacha bo'ladi. Tuzatish: Git Bash'da Windows flaglarini ikkita chiziq bilan yozing: taskkill //PID 8316 //F. Yoki bu buyruqni PowerShell'da bajaring.

7.3 Git Bash'dagi kill Windows PID'ini tanimaydi

netstat bergan 8316 — Windows PID'i. Git Bash'dagi kill esa o'z ichki raqamlari bilan ishlaydi (ps dagi PID ustuni, WINPID emas). kill 8316 ko'pincha No such process beradi. Tuzatish: Windows PID'i uchun — taskkill //PID 8316 //F yoki PowerShell'da Stop-Process -Id 8316.

7.4 Birinchi urinishda kill -9

Ishlaydi, lekin xavfli: dastur ma'lumotlarini saqlamay o'ladi. Qoida: kill → bir necha soniya kutish → kerak bo'lsa kill -9.

7.5 Tizim jarayonini o'ldirish

netstat ro'yxatida svchost.exe, System yoki postgres kabi nomlarni ko'rsangiz — ularni to'xtatmang. Ular Windows'ning yoki boshqa dasturning qismi. Faqat o'zingiz ishga tushirgan va taniydigan jarayonni (node, python) to'xtating.

8. Mashqlar

1-mashq (oson): Orqa fon

Terminalda (Git Bash, WSL yoki macOS) bajaring va har qadamdan keyin natijani kuzating:

  1. sleep 200 & — ekranda kvadrat qavs ichida vazifa raqami chiqadi: . Yonida — PID.
  2. jobs — holati (inglizcha bitta so'z): .
  3. kill %1, keyin yana jobs.
Yechim
bash
sleep 200 &
jobs
kill %1
jobs
text
[1] 2388
[1]+  Running                 sleep 200 &
[1]+  Terminated              sleep 200

& — orqa fonda ishga tushirdi. jobs — Running (ishlayapti). kill %1 SIGTERM yubordi. Shell bu haqda bir marta Terminated (tugatildi) deb xabar beradi: yo darhol keyingi prompt oldidan, yo keyingi jobs natijasida. Xabar chiqqandan keyin vazifa ro'yxatdan o'chadi — yana bir marta jobs yozsangiz, hech narsa chiqmaydi. PID raqami sizda boshqacha bo'ladi.

2-mashq (o'rta): Ctrl + Z tuzog'i

  1. sleep 200 ni oddiy (oldingi fonda) ishga tushiring.
  2. Ctrl + Z bosing. Ekranda nima chiqdi?
  3. jobs — holat qanday?
  4. Jarayonni to'liq to'xtating.
Yechim
text
^Z
[1]+  Stopped                 sleep 200

jobs ham Stopped ko'rsatadi: jarayon tirik, faqat pauzada. To'xtatishning ikki yo'li:

bash
fg

— sleep oldingi fonga qaytadi, keyin Ctrl + C bosasiz. Yoki bitta buyruq bilan: kill %1. Pauzadagi jarayon ham signalni oladi.

Bu mashqni Git Bash'da emas, WSL, macOS yoki Linux'da qilgan ma'qul — Git Bash'da Ctrl + Z ba'zi dasturlarda boshqacha ishlaydi.

3-mashq (qiyin): Port tergovi

Windows'da hozir ham ba'zi portlar tinglanib turadi — masalan, 135-port. Buni faqat ko'rish uchun (hech narsani to'xtatmang!):

  1. 135-portni qaysi PID tinglayotganini toping.
  2. Shu PID qaysi dasturga tegishli ekanini aniqlang.

macOS yoki Linux'da bo'lsangiz: lsof -i -P | grep LISTEN bilan tinglayotgan dasturlarni ko'ring va bittasining nomi va PID'ini yozing.

Ishora: Windows'da dastur nomini PID bo'yicha tasklist /FI "PID eq 1234" topadi (Git Bash'da — //FI). FI — filter.

Yechim

PowerShell'da:

powershell
netstat -ano | findstr :135
tasklist /FI "PID eq 1952"
text
  TCP    0.0.0.0:135      0.0.0.0:0     LISTENING       1952
  TCP    [::]:135         [::]:0        LISTENING       1952

Image Name                     PID Session Name        Session#
========================= ======== ================ ===========
svchost.exe                   1952 Services                   0

(PID sizda boshqacha bo'ladi; tasklist chiqishi qisqartirildi.) 135-portni svchost.exe — Windows'ning xizmat jarayoni tinglaydi. Bu tizim jarayoni — uni to'xtatmaymiz. Mashqning maqsadi — zanjirni o'rganish: port → PID → dastur nomi. EADDRINUSE da ham aynan shu zanjir.

PowerShell'da bir qadamda:

powershell
Get-Process -Id (Get-NetTCPConnection -LocalPort 135)[0].OwningProcess

9. Real ishda

  • Har kungi ish. Frontend dasturchi kuniga bir necha marta dev-serverni ishga tushiradi va to'xtatadi. EADDRINUSE ni bir daqiqada hal qila olish — oddiy, lekin qadrlanadigan ko'nikma.
  • Qotib qolgan dastur. VS Code yoki brauzer javob bermay qoldi — ps/tasklist bilan topib, to'xtatish.
  • Serverda. Serverda grafik Task Manager yo'q. Qaysi dastur protsessorni 100% band qilganini top bilan topish, keyin kill — DevOps'ning asosiy ishlaridan. Serverdagi jarayonlarni Linux server qismida chuqurroq o'rganamiz.
  • Toza yopilish. Server dasturlari SIGTERM'ni "ushlab", ochiq ulanishlarni yopib chiqadigan qilib yoziladi. Shuning uchun kill (SIGTERM) va kill -9 farqi real kodda ham muhim.
  • Intervyu. "kill va kill -9 farqi?", "Port band bo'lsa nima qilasiz?" — Linux va backend bo'yicha klassik savollar.

Xulosa

  • Jarayon — ishlab turgan dastur, PID — uning raqami. Ko'rish: ps, ps aux, top; Windows'da tasklist yoki Task Manager.
  • Ctrl + C — to'xtatadi (SIGINT). Ctrl + Z — faqat pauza: jarayon va uning porti qoladi.
  • kill PID — iltimos bilan (SIGTERM); kill -9 PID — majburan (SIGKILL), faqat oxirgi chora.
  • & — orqa fonda ishga tushirish; jobs, fg, kill %1 — vazifalarni boshqarish.
  • Port — dasturning "xona raqami"; bitta portda faqat bitta dastur.
  • EADDRINUSE: lsof -i :3000 yoki netstat -ano | findstr :3000 → PID → kill / Stop-Process.

Keyingi dars: PowerShell asoslari va bash bilan farqi — Windows'ning o'z shell'i qanday ishlashini, Stop-Process kabi buyruqlar qanday tuzilganini va nega u matn emas, obyektlar bilan ishlashini ko'ramiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Jarayonlar va band portlar: ps, kill va EADDRINUSE — IlmHamroh