Keepalived test


Noto'g'ri jarayonlar bilan shug'ullanish



Yüklə 13,79 Mb.
səhifə64/125
tarix21.08.2023
ölçüsü13,79 Mb.
#140060
1   ...   60   61   62   63   64   65   66   67   ...   125
abdurakhmonov

Noto'g'ri jarayonlar bilan shug'ullanish


Ps buyrug'iga kelsak, shu nuqtada siz serveringizda ishlaydigan jarayonlarni qanday ko'rsatishni, shuningdek, satr yoki resurslardan foydalanish bo'yicha chiqishni qanday qisqartirishni bilasiz. Ammo bu bilim bilan aslida nima qila olasiz? Qanchalik tan olishdan nafratlansak ham, ba'zida serverimiz boshqaradigan jarayonlar muvaffaqiyatsizlikka uchraydi yoki noto'g'ri ishlaydi va siz ularni qayta ishga tushirishingiz kerak bo'ladi. Agar jarayon odatdagidek yopilishni rad etsa, bu jarayonni tugatish kerak bo'lishi mumkin. Ushbu bo'limda biz ushbu maqsadga xizmat qilish uchun kill va killall buyruqlari bilan tanishamiz.
Kill buyrug'i PID-ni argument sifatida qabul qiladi va jarayonni chiroyli tarzda yopishga harakat qiladi. O'z-o'zidan amalga oshirilmaydigan jarayonni tugatishingiz kerak bo'lgan odatiy ish jarayonida siz avval aybdorning PID-ni topish uchun ps buyrug'idan foydalanasiz. Keyin, PIDni bilib, jarayonni kill buyrug’ini berishga harakat qilishingiz mumkin. Misol uchun, agar PID 31258 o'ldirilishi kerak bo'lsa, siz quyidagilarni bajarishingiz mumkin:
sudo kill 31258
Agar hamma narsa yaxshi bo'lsa, jarayon tugaydi. Siz uni qayta ishga tushirishingiz yoki uning jurnallarini ko'rib chiqish orqali nima uchun muvaffaqiyatsiz bo'lganini tekshirishingiz mumkin.
kill buyrug'i nima qilishini yaxshiroq tushunish uchun avval Linux Signals asoslarini tushunishingiz kerak bo'ladi. Signallar ham administratorlar, ham ishlab chiquvchilar tomonidan qo'llaniladi va jarayonga yadro, boshqa jarayon yoki buyruq yordamida qo'lda yuborilishi mumkin. Signal so'rov yoki o'zgartirish jarayonini va ba'zi hollarda to'liq tugatishni buyuradi. Bunday signalga misol SIGHUP bo'lib, u jarayonlarni boshqarish terminali chiqqanligini bildiradi. Bu sodir bo'lishi mumkin bo'lgan holatlardan biri sizda terminal emulyatori ochiq bo'lsa, uning ichida bir nechta jarayonlar ishlaydi. Agar siz terminal oynasini yopsangiz (siz ishlayotgan jarayonlarni to'xtatmasdan), ularga SIGHUP signali yuboriladi, bu asosan chiqishni bildiradi (asosan, bu qobiq yopilgan yoki o'chirilgan degan ma'noni anglatadi).
Boshqa misollar orasida SIGINT (ilova oldingi planda ishlayotgan va klaviaturada Ctrl + c tugmalarini bosish orqali to'xtatiladi) va SIGTERM ni o'z ichiga oladi, ular jarayonga yuborilganda uni toza tugatishni so'raydi. Yana bir misol SIGKILL, buboshqacha tugatishga majbur qiladi. Nomga qo'shimcha ravishda, har bir signal, shuningdek, SIGTERM uchun 15 va SIGKILL uchun 9 kabi qiymat bilan ifodalanadi. Signallarning har birini ko'rib chiqish ushbu bobning doirasidan tashqarida (signallarning ilg'or mavzulari asosan ishlab chiquvchilar uchun foydalidir), lekin agar qiziqsangiz, man sahifasiga murojaat qilib, ular haqida qo'shimcha ma'lumotni ko'rishingiz mumkin:
man 7 signal
Ushbu bo'lim maqsadlari uchun bizni eng ko'p tashvishlantiradigan ikkita signal turi SIGTERM(15) va SIGKILL(9) dir. Jarayonni to'xtatmoqchi bo'lganimizda, biz unga ushbu signallardan birini yuboramiz va kill buyrug'i bizga buni amalga oshirishga imkon beradi. Odatiy bo'lib, kill buyrug'i jarayonni toza tugatishni bildiruvchi 15 ( SIGTERM ) signalini yuboradi. Muvaffaqiyatli bo'lsa, jarayon xotirani bo'shatadi va chiroyli tarzda yopiladi. Oldingi kill buyrug'imiz misolida biz jarayonga 15- signal yubordik, chunki qaysi signalni yuborishni aniqlamadik.
SIGKILL(9) yordamida jarayonni tugatish eng oxirgi chora hisoblanadi. Jarayonga 9- signal yuborsangiz, bu uning ostidan gilamni yirtib tashlash yoki uni dinamit tayoq bilan portlatish bilan tengdir. Jarayon hech qanday munosabat bildirish uchun vaqt bermasdan majburan yopiladi, shuning uchun siz o'zingiz o'ylashingiz mumkin bo'lgan hamma narsani tom ma'noda sinab ko'rmaguningizcha foydalanishdan qochishingiz kerak bo'lgan narsalardan biridir. Nazariy jihatdan, 9 -signalni yuborish buzilgan fayllar, xotira muammolari yoki boshqa nayranglarning paydo bo'lishiga olib kelishi mumkin.
Jarayonga 9- signal yuborish uchun siz kill buyrug'ining -9 variantidan foydalanasiz. To'g'ri jarayon identifikatoriga qarshi bajarayotganingizga ishonch hosil qilish uchun buni aytish kerak:
sudo kill -9 31258
31258 bo'lgan jarayon izsiz yo'qoladi. U yozgan har qanday narsa noaniq bo'lib qoladi va u bir zumda xotiradan o'chiriladi. Agar biron sababga ko'ra jarayon o'z ishini davom ettirsa (bu juda kamdan-kam hollarda), ehtimol siz undan xalos bo'lish uchun serverni qayta ishga tushirishingiz kerak bo'ladi, buni men juda kamdan-kam hollarda ko'rganman. Bunga zombi jarayoni misol bo'la oladi, bu jarayon ishlaydi, lekin unga signal yuborilishi ta'sir qilmaydi, chunki bunday jarayon baribir CPU vaqtiga rejalashtirilmaydi. Hamma narsaga kelganda, kill -9 jarayondan xalos bo'lmasa, hech narsa bo'lmaydi.
killall buyrug'i bo'lib, u kill buyrug'idan xavfsizroqdir (agar boshqa sabablarga ko'ra siz noto'g'ri jarayonni tasodifan o'ldirishingiz ehtimoli kamroq bo'lsa). kill ga o'xshab, killall SIGTERM ni jarayonga yuborish imkonini beradi, lekin kill dan farqli o'laroq, siz buni nomingiz bilan qilishingiz mumkin. Bundan tashqari, killall faqat bitta jarayonni o'ldirmaydi, u siz uni variant sifatida bergan nom bilan topgan har qanday jarayonni o'ldiradi. killall dan foydalanish uchun siz shunchaki killall ni jarayon nomi bilan birga bajarasiz:
sudo killall myprocess
Xuddi kill buyrug'i kabi, jarayonga 9- signalni ham yuborishingiz mumkin:
sudo killall -9 myprocess
Shunga qaramay, faqat kerak bo'lganda foydalaning. Amalda esa siz killall -9 dan tez-tez foydalana olmaysiz (agar mavjud bo'lsa), chunki bir xil jarayon nomi ostida bir nechta jarayonlarning bloklanishi kamdan-kam uchraydi. Agar siz 9- signalni yuborishingiz kerak bo'lsa, iloji bo'lsa, kill buyrug'iga yopishib oling.
O'ldirish va killall buyruqlari tiqilib qolgan jarayonda juda foydali bo'lishi mumkin, ammo bu buyruqlar siz tez-tez ishlatishingiz shart emas deb umid qilasiz. Qotib qolgan jarayonlar ilovalar tiklana olmaydigan vaziyatga duch kelgan holatlarda yuzaga kelishi mumkin, shuning uchun siz doimo jarayonlarni tugatishga muhtoj bo'lsangiz, xizmat uchun mas'ul bo'lgan paketning yangilanishini tekshirishingiz yoki serveringizni tekshirishingiz mumkin.

Yüklə 13,79 Mb.

Dostları ilə paylaş:
1   ...   60   61   62   63   64   65   66   67   ...   125




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin