एक नींद की प्रक्रिया को मार नहीं सकते


13

मैं -9 को एक प्रक्रिया को मारने में सक्षम नहीं लगता, जो एक निष्क्रिय नींद (एस) की स्थिति में है:

[root@jupiter ~]# ps -elf | grep yum
4 S root     16790     1  0  75   0 - 73779 -      Jan15 ?        00:00:04 /usr/bin/python /usr/bin/yum -y install python-pip
[root@jupiter ~]# kill -9 16790
[root@jupiter ~]# ps -elf | grep yum
4 S root     16790     1  0  75   0 - 73779 -      Jan15 ?        00:00:04 /usr/bin/python /usr/bin/yum -y install python-pip

यह कैसे संभव है? क्या रिबूट किए बिना प्रक्रिया को मारने का कोई तरीका है?

बाउंटी: मैं वास्तव में इस बारे में अधिक जानकारी चाहता हूं कि यह कैसे संभव है।

अद्यतन: यह lsof का आउटपुट है:

[रूट @ जूपिटर ~] # lsof -p १६। ९ ०
COMMID PID USER FD TYPE DEVICE SIZE / OFF NODE NAME
यम 16790 रूट cwd DIR 1166,56842 4096 16886249 / घर / डेल
yum 16790 रूट rtd DIR 253,0 4096 2 /
यम 16790 रूट txt REG 253,0 8304 336177337 / usr / बिन / अजगर
यम १६47 ९ ० रूट मेम २५३,० १४४66६ ३४६१२ /५६ ९ / लिलि ६४ / ५४.५.तो
यम १६18 ९ ० रूट मेम २५३,० १ 16१ 34२३२ ३४६१२ /५l३ / लिलि ६४/libc-2.5.so
यम १६360 ९ ० रूट मेम २५३,० २३,०१६ ३४६१२ /५९९ / लिलि ६४/libdl-2.5.so
यम १६87 ९ ० रूट मेम २५३.०४ १४66२ ३४६१२ /५l४ / लिलि ६४/ लीबथ्रेड / ५.so
यम १६15 ९ ० रूट मेम २५३,०६ ६१५१३६ ३४६ ९ ६०६०२ / लिलि ६४/libm-2.5.so
यम १६44 ९ ० रूट मेम २५३,० १२४४ ९ २ ३३६१ /१०us / कुश / लिबि ६४ / लिलिथथोन २.४.so.1.0
yum 16790 रूट मेम रीज 253,0 95464 346128744 /lib64/libselinux.so.1
यम १६44 ९ ० रूट मेम २५३,० ५३४४6 ३४६१२ /l५ / लिलि ६४/librt-2.5.so
यम १६60 ९ ० रूट मेम २५३,० १३०६० ३३६१ /५६४/usr/lib64/libplat4.so
यम १६84 ९ ० रूट मेम २५३,० ५ 34४०० ३४६ ९ /२५५२ / लिलि ६४/ लीबग्‍क_एस ४.२.२००s०25२५.so.1
यम १६38 ९ ० रूट मेम २५३,० 16३ 33४ ३३६१ /३ / ९ ६ /usr/lib64/libelf-0.137.so
यम १६39 ९ ० रूट मेम २५३,० ११३ ९ ६ 33२ ३३६१ / /५us०/usr/lib64/librpmdb-4.4.so
यम १६77 ९ ० रूट मेम २५३,० ४० 336 ९ ३३६१ /५६us/usr/lib64/librpmio-4.4.so
यम १६3 ९ ० रूट मेम २५३,० २३३१४४ ३३६१ /१४२०/usr/lib64/libnspr4.so
यम १६75 ९ ० रूट मेम २५३,० ३6५६५६ ३३६१ / /५६ ९ /usr/lib64/libsqlite3.so.0.8.6
यम १६99 ९ ० रूट मेम २५३,० १ 33 ९९ २ ३३६१ /५६३ /usr/lib64/libplat4.so
यम १६67 ९ ० रूट मेम २५३,० ३ 16६66४ ३३६१ / /५us१/usr/lib64/librpm-4.4.so
यम १६47 ९ ० रूट मेम २५३,० १५४6161६ ३३६१8०२२us /usr/lib64/librpmbuild-4.4.so
यम १६47 ९ ० रूट मेम २५३,० ६४ 34६०6 ३४६ ९ २ /५ ९ / लिलि ६४ / लिलिग्लिब २.०.सो। १.२००.३
यम 16790 रूट मेम रीज 253,0 1297136 336176959 /usr/lib64/libxml2.so.2.6.26
यम १६84 ९ ० रूट मेम २५३,० १५५6४ ३४६१२ /५६६ / लिलि ६४ / लिटरमेपर.२.२..
यम १६34 ९ ० रूट मेम २५३,० १२३४३२6 ३३६१ / /५६६/usr/lib64/libnss3.so
यम १६15 ९ ० रूट मेम २५३,० १ 16१५२ ३४६१२ /६l० / लाइब ६४/libutil-2.5.so
यम १६40 ९ ० रूट मेम २५३,० ३४२४० ३३६१ / /०us१/usr/lib64/libpopt.so.0.0.0
यम १६77 ९ ० रूट मेम २५३,०६ 33 33३३ ३३६१ /५६us/usr/lib64/libbz2.so.1.0.3
यम १६14 ९ ० जड़ मेम २५३,० १४३१४४ ३४६१२ /६३ / लिलि ६४ / लिबासपाट.क्लास .0.0
यम १६64 ९ ० रूट मेम २५३,० ५६४३४४१६ ३३६१ /४० us२ / usr / lib / स्थान / स्थान-संग्रह
यम १६65 ९ ० रूट मेम २५३,० १३५६५६ ३३६५६०१us१ /usr/lib64/python2.4/site-packages/rpm/_rpmmodule.so
यम १६016 ९ ० रूट मेम २५३,० १५४०१३ ३३६१ /५६५/usr/lib64/libnssutil3.so
यम १६68 ९ ० रूट मेम २५३,० ९ 3६45५ ३४५६३ /६३२/usr/local/greenplum-loaders-3.3.0.0-build-3/lib/libz.so.1.2.3
यम १६7 ९ ० रूट मेम २५३,० २४6४ ९ ६ ३४६१२ll४ / लिलि ६४ / लिबसेपोल.से १
यम १६9 ९ ० रूट मेम २५३,० ३६ ९ १४४ ३३६१६ /us३ /usr/lib64/libsoftokn3.so
यम १६12 ९ ० रूट मेम २५३,० ३१२३३६ ३३६१33४५३ /usr/lib64/libfreebl3.so
यम १६40 ९ ० रूट मेम २५३.०२ २०५४० ३३६५३००६us / /r/lib64/python2.4/lib-dynload/timemodule.so
यम १६48 ९ ० रूट मेम २५३,० २५०४2 ३३६५२ ९९ ५३ /usr/lib64/python2.4/lib-dynload/stropmodule.so
यम 16790 रूट मेम रीज 253,0 18984 336530051 /usr/lib64/python2.4/lib-dynload/cStringIO.so
यम १६8 ९ ० रूट मेम २५३,० २१ 33१६ ३३६५२ ९९ ४३/usr/lib64/python2.4/lib-dynload/collectionsmodule.so
यम १६15 ९ ० रूट मेम २५३,० ५२१५२ ३३६५३००४४ / युसर / लिलि ६४ / पीथोन २.४/ लिलि- लोडनलोड /_सोकेटमोडुले.सो
यम १६200 ९ ० रूट मेम २५३,० १ 16२०० ३३६५३००४५ /usr/lib64/python2.4/lib-dynload/_ssl.so
यम १६50 ९ ० रूट मेम २५३,० ३१५०6० ३४६१२ / ९ ४ / एलिब ६४/libssl.so.0.9.8e
यम १६66 ९ ० रूट मेम २५३,० १३६६ ९ १२ ३४६१२ /lll / ४/६४/libcrypto.so.0.9.8e
यम १६9 ९ ० रूट मेम २५३,० १ ९ ० ९ 6६ ३३६१ / /५५२/usr/lib64/libgssapi_krb5.so.2.2
यम १६13 ९ ० रूट मेम २५३,० ६१३ ९ २6 ३३६१5४२४५ /usr/lib64/libkrb5.so.3.3
यम 16790 रूट मेम रीज 253,0 11760 346128747 /lib64/libcom_err.so.2
यम 16790 रूट मेम रीज 253,0 153720 336181723 /usr/lib64/libk5crypto.so.3.1
यम 16790 रूट मेम रीज 253,0 35984 336177832/usr/lib64/libkrb5support.so.0.1
यम १६47 ९ ० रूट मेम २५३,० ९ ४ 34२ ३४६१२ /६l१ / लिलि ६४/ लिलिबुटिल
यम १६16 ९ ० रूट मेम २५३,० ९ २6१६ ३४६१२ /३० / लिलि ६४ / लाइब्रेशोल्व ५।५।तो
यम १६38 ९ ० रूट मेम २५३,० 16५३ 33४ ३३६५३००५० /usr/lib64/python2.4/lib-dynload/cPickle.so
यम 16790 रूट मेम रीज 253,0 23736 336530064 /usr/lib64/python2.4/lib-dynload/structmodule.so
यम १६33 ९ ० रूट मेम २५३,० २ 16३३६ ३३६५२ / ९ ५us/usr/lib64/python2.4/lib-dynload/operator.so
यम १६20 ९ ० रूट मेम २५३,० २१५२० ३३६५२ ९९ ५us /rr/lib64/python2.4/lib-dynload/zlibmodule.so
यम १६9 ९ ० रूट मेम २५३,० ३ 16 ९ ४४ ३३६५२ / ९ ५२/usr/lib64/python2.4/lib-dynload/itertoolsmodule.so
यम 16790 रूट मेम रीज 253,0 21528 336528929 /usr/lib64/python2.4/lib-dynload/_localemodule.so
यम १६20 ९ ० रूट मेम २५३,० २१२०65 ३३६५२ ९९ ३ ९ /usr/lib64/python2.4/lib-dynload/binascii.so
यम १६80 ९ ० रूट मेम २५३,० १२०65० ३३६५३००६२/usr/lib64/python2.4/lib-dynload/shamodule.so
यम १६16 ९ ० रूट मेम २५३,० १३१६65 ३३६५३००५us५ /usr/lib64/python2.4/lib-dynload/md5module.so
यम १६000 ९ ० रूट मेम २५३,० १ 16००० ३३६५२ ९९ ४us /rr/lib64/python2.4/lib-dynload/mathmodule.so
यम 16790 रूट मेम री आरईजी 253,0 12504 336529934 /usr/lib64/python2.4/lib-dynload/_rand.dodule.so
यम 16790 रूट मेम रीज 253,0 15320 336528948 /usr/lib64/python2.4/lib-dynload/fcntlmodule.so
यम १६8 ९ ० रूट मेम २५३,० ३२ 33१६ ३३६५३००४ ९ /usr/lib64/python2.4/lib-dynload/bz2.so
यम १६60 ९ ० रूट मेम २५३,० 33६०65 ३३६५२ ९९ ४६ /usr/lib64/python2.4/lib-dynload/grpmodule.so
यम १६69 ९ ० ९९ रूट मेम २५३,० ३ 33६ ९ ६३६५२ ९ us१ ९ /usr/lib64/python2.4/site-packages/cElementTree.so
यम 16790 रूट मेम रीज 253,0 42672 336530047 /usr/lib64/python2.4/lib-dynload/arraymodule.so
यम १६36 ९ ० रूट मेम २५३,० ९ ३६65 ३३६५२ / ९ १५/usr/lib64/python2.4/lib-dynload/_bisect.so
यम १६99 ९ ० रूट मेम २५३,० 16४ ९९ २ ३३६५२ ९९ ४४ /usr/lib64/python2.4/lib-dynload/datetime.so
यम १६29 ९ ० रूट मेम २५३,० ३ 16२ ९ १२ ३३६५०५१० /usr/lib64/python2.4/site-packages/M2Crypto/__m2crypto.so
यम १६20 ९ ० रूट मेम २५३,० 16१२० ३३६५२ ९९ ३us/usr/lib64/python2.4/lib-dynload/_weakref.so
यम १६49 ९ ० रूट मेम २५३,० १ 16४ ९ ६३६६५ ९९ ६६ / सुसर / लिब ६४ / खसखस ​​२.४/ ललिब-लोडनोड / सेलेमोडुले.सो
यम १६44 ९ ० रूट मेम २५३,० ४६४४65 ३३६५२ / ९ ६१/usr/lib64/python2.4/lib-dynload/pyexpat.so
यम १६89 ९ ० रूट मेम २५३,० ३३ 33 ९ ३३६५२ ९ us२०/usr/lib64/python2.4/site-packages/_sqlite.so
यम १६17 ९ ० रूट मेम २५३,० ४१6565४ ३३६५३००us५ /usr/lib64/python2.4/site-packages/_sqlitecache.so
यम 16790 रूट मेम रीज 253,0 25104 336530066 /usr/lib64/python2.4/lib-dynload/termios.so
यम 16790 रूट मेम रीज 253,0 7280 336530065 /usr/lib64/python2.4/lib-dynload/syslog.so
यम १६4 ९ ० रूट मेम २५३.०५ २५६४ ३३६२६५४५us /usr/lib64/gconv/gconv-modules.cache
यम १६44 ९ ० रूट मेम २५३.०६ ६६५४४ ३३६५२ / ९ २६/usr/lib64/python2.4/lib-dynload/_cursesmodule.so
यम १६33 ९ ० रूट मेम २५३,० ३ 16०३३६ ३३६१ /१ ९ ३२/usr/lib64/libncurses.so.5.5
यम १६58 ९ ० रूट मेम २५३,० ४०५65० ३३६५२ ९९ ५us५ /usr/lib64/python2.4/lib-dynload/unicodedata.so
यम १६76 ९ ० रूट मेम २५३,०२५ 16६ २३६५२००४var / प्रति / ली / आरपीएम / ०४ डीबी १
यम १६38 ९ ० रूट मेम २५३,० ५३612४ ३६६१२ /४२४ / लिलि ६४ / लिबन्स_फिल्स २.५.तो
यम १६7 ९ ० रूट मेम २५३,० २३ 23३६ ३४६२8४०l / लिलि ६४ / लिबन्स_डांस २.५.सो
यम १६18 ९ ० रूट मेम २५३,०१३१ 23१२ २३६५२००५० / /वार / आरपीएम / ०४.००90००२
यम १६35 ९ ० रूट मेम २५३,०६६३५५२ २३६५२००५१ / /वार / आरपीएम / ०४ डीबी ३
यम १६90 ९ ० रूट मेम २५३,० 33६ ९ ०6४ ३३६१ /४ ९ ६५/usr/share/locale/en_US/LC_MESSAGES/redhat-dist.mo
यम 16790 रूट 0u CHR 136,8 0t0 10 / देव / पीटीएस / 8 (हटाए गए)
यम 16790 रूट 1u CHR 136,8 0t0 10 / dev / pts / 8 (हटाए गए)
यम 16790 रूट 2u CHR 136,8 0t0 10 / dev / pts / 8 (हटाए गए)
यम 16790 रूट 3u यूनिक्स 0xffff8104388d2e40 0t0 4675113 सॉकेट
यम १६ 0 ९ ० रूट ४ डब्लू आर २५३,० ० २३६५२२३२६ / अलवर / क्लो / यम.लॉग
यम १६ 60 ९ ० रूट ५ यू रीज २५३,0 ६०५१65४ २३६५२००२५ / इतवार / व्यंग्य / व्यंग / ज्ञानदासुदेव- देवा.प्रधान.एक्सएम.जीसी.सक्लाइट
यम १६ 20 ९ ० रूट ६ यू रीज २५३,0 २०४65० २३६५२४००२ / इतवार / कैशे / यम /addons/primary.sqlite.old.tmp (हटाए गए)
यम 16790 रूट 7u REG 253,0 12578816 236519970 /var/cache/yum/base/primary.xml.gz.sqlite.old.tmp (हटाए गए)
यम 16790 रूट 8u REG 253,0 17972224 236523993 /var/cache/yum/epel/317109b44f1b0b40d910dc6080e62cc4f4b16a-primary.sqlite.old.tmp (हटाए गए)
यम १६ 9 ९ ० ९ रूट ९यू २५३,० ९ ६६6565० २३६५२४०५५ / अलवर / कैश / उम / कस्टम / प्राइमरी.सक्लाइट.ओल्ड.टेम्प (डिलीट)
यम १६ 45 ९ ० रूट १० यू रीज २५३,0 ४५ ९ 64 24६ २४६४१५३६६ / इतवार / कैशे / यम/pgdg92/primary.sqlite.old.tmp (हटाए गए)
यम १६ 49 ९ ० रूट ११ यू रीज २५३,0 ४ ९ २ 23४22 २३६५२४०६० / इतवार / व्यंग्य / व्यंग / उच्छिष्ट / प्रमोद.सुक्लित.दो। टम्प (डिलीट)
yum 16790 root 12r REG 253,0 65204224 236519434 / var / lib / rpm / संकुल
यम १६ 450 ९ ० रूट १३ आर २५३,०५०५६ २३६५१ ९ ४३ root / वार / परिवाद / आरपीएम / नाम
यम 16790 रूट 14u IPv4 4675317 0t0 टीसीपी jupiter.example.com:33597->riksun.riken.go.jp:http (ESTABLISHED)
यम 16790 रूट 15u IPv4 4675939 0t0 टीसीपी jupiter.example.com:52708->freedom.itsc.cuhk.edu.hk:http (CLOSE-WAIT)
यम १६ 65 ९ ० रूट १६ आर २५३,0 ६५२०४२२४ २३६५१ ९ ४३४ / वर / परिवाद / आरपीएम / संकुल
yum 16790 रूट 17r REG 253,0 45056 236519438 / var / lib / rpm / नाम
यम १६ 12 ९ ० ९ रूट १ REG आर २५३,०२२6519 २३६५१ ९ ४४० / var / lib / rpm / Pubkeys
यम 16790 रूट 20r FIFO 0,6 0t0 4676024 पाइप
यम 16790 रूट 24 डब्ल्यू फीफो 0,6 0t0 4676024 पाइप

अन्य प्रक्रियाओं को मार डालो जो एक ही लॉक को हेरफेर करते हैं और यह संभवतः अंजाम होगा।
डेविड श्वार्ट्ज

@ डेविड - मैं ऊपर की प्रक्रिया सूची में किसी भी yum प्रक्रियाओं को नहीं मार सकता; वे सभी एक ही समस्या है।
डेल

मैंने अतिरिक्त पंक्तियों को हटा दिया क्योंकि वे कोई और जानकारी नहीं जोड़ रहे थे और वे आपकी पोस्ट को पढ़ने के लिए कठिन बना रहे थे।
टेराडो

@ एसएलएम - lsof टीसीपी सॉकेट्स को riksun.riken.go.jp:80 (ESTABLISHED) और स्वतंत्रता दिखाता है ।itsc.cuhk.edu.hk:80 (CLOSE-WAIT) मुझे लगता है कि यह हो सकता है?
डेल

@ एसएलएम - कृपया मेरा अद्यतन प्रश्न देखें।
डेल

जवाबों:


18

एस या डी राज्य में एक प्रक्रिया आमतौर पर एक ब्लॉकिंग सिस्टम कॉल में होती है, जैसे फ़ाइल या नेटवर्क पर पढ़ना या लिखना, समाप्त होने के लिए किसी प्रोग्राम का इंतजार करना, या सेमाफ़ोर्स या अन्य सिंक्रोनाइज़ेशन प्राइमेटिव्स पर प्रतीक्षा करना। यह प्रतीक्षा करते हुए नींद की स्थिति में चला जाएगा।

आप इसे "जागो" नहीं कर सकते - यह तभी आगे बढ़ेगा जब इसके लिए उपलब्ध डेटा / संसाधन की प्रतीक्षा की जा रही है। यह सब सामान्य और अपेक्षित है, और केवल एक समस्या है जब इसे मारने की कोशिश की जा रही है।

आप यह strace -p pidजानने के लिए प्रयास कर सकते हैं कि वर्तमान में कौन सा सिस्टम कॉल प्रक्रिया के लिए हो रहा है।

से विकिपीडिया :

एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत एक संकेत को संभाल नहीं पाएगी। यह केवल प्रतीक्षा-योग्य संसाधन के उपलब्ध होने के परिणामस्वरूप या उस प्रतीक्षा के दौरान एक टाइम-आउट होने के बाद जागृत होगा (यदि सोने के लिए निर्दिष्ट किया गया है)। यह ज्यादातर डिस्क या नेटवर्क IO (इनपुट / आउटपुट) की प्रतीक्षा कर रहे डिवाइस चालकों द्वारा उपयोग किया जाता है। जब प्रक्रिया निर्बाध रूप से सो रही है, तो सिस्टम कॉल या जाल से वापस आने पर नींद के दौरान संचित संकेतों पर ध्यान दिया जाएगा।

एक प्रणाली कॉल में अवरुद्ध एक प्रक्रिया अबाधित नींद में है, जैसा कि उसका नाम कहता है, वास्तव में जड़ से भी अबाधित है।

आम तौर पर, प्रक्रियाएं SIGKILL को ब्लॉक नहीं कर सकती हैं। लेकिन कर्नेल कोड कर सकते हैं और प्रक्रियाएँ कर्नेल कोड निष्पादित करती हैं, जब वे सिस्टम कॉल करते हैं, जिसके दौरान कर्नेल कोड सभी संकेतों को अवरुद्ध करता है। इसलिए अगर कोई सिस्टम अनिश्चित काल के लिए ब्लॉक करता है, तो प्रभावी रूप से प्रक्रिया को मारने का कोई तरीका नहीं हो सकता है। जब भी प्रक्रिया सिस्टम कॉल को पूरा करेगी तब SIGKILL प्रभावी होगा।


2
मैंने सोचा था कि केवल निर्बाध नींद की प्रक्रिया SIGKILL को अवरुद्ध करने में सक्षम थी। क्या नींद में बाधा उत्पन्न करने वाली प्रक्रियाएं भी हो सकती हैं? यदि हां, तो उनके बीच अंतर क्या है?
डेल

1
एस और डी दोनों राज्य प्रभावहीन हैं, केवल इसलिए कि कर्नेल में प्रोग्राम करने के लिए बहुत जटिल है और क्योंकि अतीत में वे केवल बहुत कम अवधि के होने वाले थे। हालाँकि कर्नेल NFS और अन्य मामलों को शामिल करने के लिए विकसित हुआ है जो कि अधिक समय ले सकते हैं, कर्नेल अवरोधन दुर्भाग्य से कभी समाप्त नहीं हुए थे।
हरमिस्क

3
दिलचस्प। क्या आपके पास इसके लिए कोई संदर्भ है? Google के साथ मैं जो कुछ भी पा सकता हूं वह यह कहता प्रतीत होता है कि विघटनकारी प्रक्रियाओं को SIGKILL को नजरअंदाज करने में सक्षम नहीं होना चाहिए।
डेल

1
ऐसा लगता है कि मैंने जो कुछ भी व्यवधानपूर्ण नींदों के बारे में पढ़ा है, उसका खंडन करता हूं, और मुझे थोड़ा संदेह है कि मैंने कुछ अनिर्दिष्ट व्यवहार पर ठोकर खाई है। उदाहरण के लिए निम्न 2 लिंक की जाँच करें। क्या मैं कुछ गलत समझ रहा हूं? (1) "एक व्यवधानपूर्ण नींद में, संकेतों के प्रसंस्करण के लिए प्रक्रिया को जगाया जा सकता है।" (2) "यदि इस राज्य में एक प्रक्रिया के लिए एक सिग्नल उत्पन्न होता है, तो ऑपरेशन बाधित होता है और सिग्नल की डिलीवरी से प्रक्रिया जाग जाती है।"
डेल

1
एक सिस्टम कॉल इंटरप्टिबल है या केवल इस बात पर निर्भर नहीं करता है कि यह कैसे प्रोग्राम किया गया था। एक बार कर्नेल के अंदर एक बार फिर सब कुछ हो जाता है।
at१३ को

10

एक नींद की प्रक्रिया पर पृष्ठभूमि

आप इस यूनिक्स और लिनक्स पोस्ट पर एक नज़र डालना चाहते हैं।

विशेष रूप से यह उत्तर, /unix//a/5648/7453

उस पोस्ट का अंश

किल -9 (SIGKILL) हमेशा काम करता है, बशर्ते आपको प्रक्रिया को मारने की अनुमति हो। मूल रूप से या तो प्रक्रिया आपके द्वारा शुरू की जानी चाहिए और सेट्युइड या सेटगिड नहीं होनी चाहिए, या आपको रूट होना चाहिए। एक अपवाद है: यहां तक ​​कि रूट PID 1 (init प्रक्रिया) के लिए एक घातक संकेत नहीं भेज सकता है।

हालांकि किल -9 को तुरंत काम करने की गारंटी नहीं है। SIGKILL सहित सभी संकेतों को अतुल्यकालिक रूप से वितरित किया जाता है: कर्नेल को उन्हें वितरित करने में अपना समय लग सकता है। आमतौर पर, सिग्नल देने में अधिकांश कुछ माइक्रोसेकंड लगते हैं, बस समय के लिए लक्ष्य के लिए समय लगता है। हालाँकि, यदि लक्ष्य ने सिग्नल को अवरुद्ध कर दिया है, तो सिग्नल को तब तक कतार में रखा जाएगा जब तक कि लक्ष्य इसे अनब्लॉक नहीं करता।

आम तौर पर, प्रक्रियाएं SIGKILL को ब्लॉक नहीं कर सकती हैं। लेकिन कर्नेल कोड कर सकते हैं और प्रक्रियाएँ कर्नेल कोड निष्पादित करती हैं, जब वे सिस्टम कॉल करते हैं। कर्नेल कोड सिस्टम सिग्नल को बाधित करते समय सभी संकेतों को ब्लॉक कर देता है, जिसके परिणामस्वरूप कर्नेल में कहीं न कहीं एक बुरी तरह से बनाई गई डेटा संरचना होती है, या आमतौर पर कुछ कर्नेल अपरिवर्तित उल्लंघन होता है। इसलिए यदि (बग या गलत पहचान के कारण) सिस्टम अनिश्चित काल के लिए ब्लॉक कॉल करता है, तो प्रभावी रूप से प्रक्रिया को मारने का कोई तरीका नहीं हो सकता है। (लेकिन अगर यह सिस्टम कॉल पूरा कर लेता है तो प्रक्रिया को मार दिया जाएगा।)

...

...

मैं अत्यधिक उस उत्तर के बाकी हिस्सों को पढ़ने का सुझाव देता हूं!

संसाधन (फ़ाइल या नेटवर्क) द्वारा अवरुद्ध प्रक्रिया को मारना

यहां 2 चीजें आजमाई गई हैं।

1. yum की .pid फ़ाइल को हटाना

क्या कोई यम लॉक फ़ाइल मौजूद है? जब आप उस लॉक फ़ाइल को हटाते हैं तो क्या होता है? मुझे लगता है कि यह आगे बढ़ने की अनुमति दे सकता है।

rm /var/run/yum.pid

2. किसी भी हैंगिंग CLOSE_WAITटीसीपी कनेक्शन को बंद करने के लिए मजबूर करना

A CLOSE_WAITको निम्नानुसार वर्णित किया गया है:

CLOSE_WAIT बताता है कि सर्वर को क्लाइंट से पहला फिन सिग्नल मिला है और कनेक्शन बंद होने की प्रक्रिया में है

तो यह अनिवार्य रूप से इसका मतलब है कि उसका राज्य है जहां सॉकेट आवेदन को बंद करने के लिए इंतजार कर रहा है ()

एक सॉकेट CLOSE_WAIT स्थिति में अनिश्चित काल तक हो सकता है जब तक कि अनुप्रयोग इसे बंद नहीं करता। दोषपूर्ण परिदृश्य लॉज़िस्क्रिप्ट रिसाव की तरह होगा, सर्वर को बंद नहीं किया जा रहा है () सॉकेट पर क्लोज़_वेट सॉकेट्स के ढेर के लिए अग्रणी

नोट: तकनीकी वेबसाइट से अंश ।

इसे पूरा करने के लिए आप 2 टूल का उपयोग कर सकते हैं।

ये उपकरण फिन-एसीके-आरएसटी एक्सचेंज का अनुकरण करके काम करते हैं जो टीसीपी कनेक्शन को पूरी तरह से बंद करने के लिए आवश्यक है।

किलसक्स एक फर्जी SYN पैकेट बनाकर फर्जी SeqNum के साथ काम करता है, जो रिमोट क्लाइंट IP / पोर्ट को स्पूफ करता है और सर्वर पर भेजता है। यह एक बच्चे की प्रक्रिया को कांटा देगा जो सर्वर प्रतिक्रिया पर कब्जा कर लेगा, एसीके पैकेट से 2 मैजिक मान निकालेगा और एक खराब आरएसटी पैकेट भेजने के लिए उनका उपयोग करेगा। फिर कनेक्शन बंद कर दिया जाएगा।

नोट: Killcx वेबसाइट से अंश ।

कटर का उपयोग करना

दिए गए दो आईपी / पोर्ट नंबर जोड़े के बीच विशिष्ट कनेक्शन को काटता है।

# cutter ip-address-1 port-1 ip-address-2 port-2
% cutter 200.1.2.3 22 10.10.0.45 32451

Killcx का उपयोग करना

रिमोट आईपी और पोर्ट के लिए कनेक्शन काट देता है।

# killcx remote-ip-address:port
% killcx 120.121.122.123:1234

साधन


लॉक फ़ाइल को हटाने से कोई प्रभाव नहीं पड़ा।
डेल

1
यह एक उत्पादन मशीन पर है, और दुर्भाग्य से इन दो उपकरणों में निर्भरताएं हैं जिन्हें मैं स्थापित नहीं कर सकता। मैंने /etc/init.d/networking पुनरारंभ करने का प्रयास किया और इसने कुछ भी नहीं किया। वास्तव में, मुझे अब यह समझने में अधिक दिलचस्पी है कि ऐसा क्यों हो सकता है (क्योंकि मुझे नहीं लगा कि नींद में बाधा उत्पन्न करने वाली प्रक्रियाएं SIGKILL को अनदेखा करने में सक्षम थीं) बजाय इसके कि मैं इस समस्या को कैसे ठीक कर सकता हूं।
डेल

नेटवर्क को फिर से शुरू करने का एक ही प्रभाव होगा, इसलिए I / O पर अवरुद्ध होना, अगर वास्तव में इस प्रक्रिया का इंतजार है, तो कहीं और निहित है।
स्लम

1

आप मूल प्रक्रिया को मारने की कोशिश कर सकते हैं। जाँच करने के लिए ps का प्रयोग करें:

ps xjf -C yum

फिर kill -9कोई भी अभिभावक प्रक्रिया।


मूल प्रक्रिया init (मेरे आउटपुट में 5 वां कॉलम) है।
डेल

1

यह स्ट्रेस के साथ प्रक्रिया को संलग्न करने के लायक हो सकता है यह देखने के लिए कि क्या यह वास्तव में निष्क्रिय है या आईओ ऑपरेशन पर अटक गया है। हो सकता है कि इस मुद्दे पर आगे कोई संकेत मिले।

strace -pPID

मैंने जो कुछ पढ़ा है, उसमें इस प्रक्रिया को रिबूट के अलावा मारने का कोई तरीका नहीं है। यदि प्रक्रिया किसी भी उल्लेखनीय सीपीयू समय का उपभोग नहीं कर रही है, तो यह सर्वर पर कोई नकारात्मक प्रभाव पैदा करने की संभावना नहीं है।


सुझाव के लिए धन्यवाद, लेकिन मूल प्रक्रिया init है (मेरे आउटपुट में 5 वां कॉलम देखें)।
डेल

अपना संशोधित उत्तर दें, स्ट्रेस प्रक्रिया में संलग्न हो जाता है लेकिन कुछ भी आउटपुट नहीं करता है।
डेल

1

यह हो सकता है कि यह एक बच्चे की प्रक्रिया के लिए इंतजार कर रहा है? मैं प्यार करता हूँ ps fauxक्योंकि यह आपको बताएगा कि क्या बाल प्रक्रियाएं हैं या नहीं, और यदि आपको मारने की आवश्यकता हो सकती है।


नहीं, इस प्रक्रिया में कोई बाल प्रक्रिया नहीं है।
डेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.