Answers:
kill -9
( සිග්කිල් ) සෑම විටම ක්රියා කරයි, එම ක්රියාවලිය විනාශ කිරීමට ඔබට අවසර තිබේ නම්. මූලික වශයෙන් එක්කෝ ක්රියාවලිය ඔබ විසින් ආරම්භ කළ යුතු අතර එය සෙට්වුඩ් හෝ සෙට්ජිඩ් නොවිය යුතුය, නැතහොත් ඔබ මූල විය යුතුය. එක් ව්යතිරේකයක් ඇත: මූලයට පවා PID 1 ( init
ක්රියාවලිය) වෙත මාරාන්තික සං signal ාවක් යැවිය නොහැක .
කෙසේ වෙතත් වහාමkill -9
වැඩ කිරීමට සහතික නොවේ . සිග්කිල් ඇතුළු සියලුම සං als ා අසමමුහුර්තව ලබා දෙනු ලැබේ: කර්නලය ඒවා ලබා දීමට කාලය ගතවනු ඇත. සාමාන්යයෙන්, සං signal ාවක් ලබා දීම සඳහා මයික්රෝ තත්පර කිහිපයක් ගත වේ, ඉලක්කයට කාල පෙත්තක් ලබා ගැනීමට ගතවන කාලය. කෙසේ වෙතත්, ඉලක්කය සං signal ාව අවහිර කර ඇත්නම්, ඉලක්කය එය අවහිර කරන තෙක් සං signal ාව පෝලිම් ගැසෙනු ඇත.
සාමාන්යයෙන්, ක්රියාවලි වලට SIGKILL අවහිර කළ නොහැක. නමුත් කර්නල් කේතයට පද්ධති ඇමතුම් ඇමතූ විට කර්නල් කේතය ක්රියාත්මක කළ හැකිය . පද්ධති ඇමතුමට බාධා කරන විට කර්නල් කේතය සියලු සං als ා අවහිර කරයි, එමඟින් කර්නලයේ කොතැනක හෝ නරක ලෙස සැකසූ දත්ත ව්යුහයක් ඇති වේ, නැතහොත් වඩාත් සාමාන්යයෙන් සමහර කර්නල් ආක්රමණ උල්ලං being නය වේ. එබැවින් (දෝෂයක් හෝ වැරදි නිර්මාණයක් හේතුවෙන්) පද්ධතියක් දින නියමයක් නොමැතිව අවහිර වුවහොත්, ක්රියාවලිය kill ාතනය කිරීමට way ලදායී ක්රමයක් නොතිබිය හැකිය. (නමුත්, එම ක්රියාවලිය ඇත එය මෙතෙක් පද්ධතිය ඇමතුමක් සම්පූර්ණ නම් ඝාතනය කළ.)
පද්ධති ඇමතුමක අවහිර වූ ක්රියාවලියක් අඛණ්ඩ නින්දේ ය . මෙම ps
හෝ top
විධාන ඇත (බොහෝ unices මත) රාජ්ය එය පෙන්විය D
(මුලින් "සඳහා ඈ isk", මම හිතන්නේ).
දිගු අවිච්චින්න නින්ද පිළිබඳ සම්භාව්ය නඩුව ගැන ගොනු ප්රවේශ ක්රියාවලිය වේ NFS සේවාදායකය ප්රතිචාර දක්වන්නේ නැහැ විට, නවීන ක්රියාත්මක කිරීම් වල අඛණ්ඩ නින්දක් පැනවීමට නැඹුරු නොවේ (උදා: ලිනක්ස් යටතේ, intr
සවිකිරීමේ විකල්පය මඟින් සං F ාවක් මඟින් එන්එෆ්එස් ගොනු ප්රවේශයට බාධා කිරීමට ඉඩ ලබා දේ).
සමහර විට හෝ ප්රතිදානයේ සලකුණු කර ඇති ඇතුළත් කිරීම් Z
(හෝ H
ලිනක්ස් යටතේ, වෙනස කුමක්දැයි මම නොදනිමි) ඔබට දැක ගත හැකිය . මේවා තාක්ෂණිකව ක්රියාවලි නොවේ, ඒවා සොම්බි ක්රියාවලි වන අතර ඒවා ක්රියාවලි වගුවේ ඇතුළත් කිරීමකට වඩා වැඩි දෙයක් නොවේ. එමඟින් දරුවාගේ මරණය පිළිබඳව දෙමාපිය ක්රියාවලියට දැනුම් දිය හැකිය. දෙමාපිය ක්රියාවලිය අවධානය යොමු කළ විට (හෝ මිය ගිය විට) ඔවුන් ඉවත්ව යනු ඇත .ps
top
man 5 nfs
: " කර්නල් 2.6.25 න් පසු intr
/ nointr
සවිකිරීමේ විකල්පය ඉවත් කරනු ලැබේ. මෙම කර්නල් වල ඉතිරිව ඇති එන්එෆ්එස් මෙහෙයුමට බාධා කළ හැක්කේ සිග්කිල්ට පමණි. නිශ්චිතව දක්වා තිබේ නම්, පැරණි කර්නල් සමඟ පසුපසට ගැළපුම ලබා දීම සඳහා මෙම සවිකිරීමේ විකල්පය නොසලකා හරිනු ලැබේ."
sshfs
ක්රියාවලිය විනාශ කළ හැකිය (එසේම වෙනත් ඕනෑම FUSE ගොනු පද්ධතියක් සමඟ: ඔබට සෑම විටම බලහත්කාරයෙන් ඉවත් කළ හැකිය).
යම්කිසි ක්රියාවලියක් පවතින අතර ඒවා නිසා මරා දැමිය නොහැක:
top
එය Z සංඥා ඇතtop
එය ඩී මගින් සලකුනු කරයිඔබට උමතු ක්රියාවලියක් තිබිය හැකි බව පෙනේ. මෙය හානිකර නොවේ: පිල්ලියක් ක්රියාවලියක් පරිභෝජනය කරන එකම සම්පත ක්රියාවලි වගුවේ ඇතුළත් කිරීමකි. දෙමව්පියන්ගේ ක්රියාවලිය මිය ගිය විට හෝ තම දරුවාගේ මරණයට ප්රතික්රියා කරන විට එය පහව යනු ඇත.
top
පහත දැක්වෙන විධානය භාවිතා කිරීමෙන් හෝ ක්රියාවලිය පිල්ලියක් දැයි ඔබට දැක ගත හැකිය :
ps aux | awk '$8=="Z" {print $2}'
ps
. සියළුම යුනිසෙස්වල ක්රියාත්මක කිරීමත් සමඟ අවශ්ය ක්ෂේත්රය සැමවිටම 8 වන ස්ථානය බවට සහතික විය හැක්කේ කාටද ps
?
ඕනෑම හෝඩුවාවක් සඳහා ඔබගේ /var/log/kern.log
සහ /var/log/dmesg
(හෝ සමාන) පරීක්ෂා කරන්න . මගේ අත්දැකීම් අනුව මෙය මට සිදුවී ඇත්තේ එන්එෆ්එස් සවිකිරීමේ ජාල සම්බන්ධතාවය හදිසියේම පහත වැටුණු විට හෝ උපාංග ධාවකයක් බිඳ වැටුණු විට පමණි. දෘ drive තැටියක් ද කඩා වැටුණොත් එය සිදුවිය හැකි බව මම විශ්වාස කරමි.
lsof
ක්රියාවලිය විවෘත කර ඇති උපාංග ගොනු මොනවාදැයි බැලීමට ඔබට භාවිතා කළ හැකිය.
kill -9
මිනිත්තු 60 ක් බලා සිටීමෙන් පසුව පවා වැඩ කළේ නැත. එකම විසඳුම වූයේ නැවත ආරම්භ කිරීමයි.
@ මැකීජ්ගේ සහ @ ගිලෙස්ගේ පිළිතුර ඔබේ ගැටලුව විසඳන්නේ නැත්නම්, ඔබ එම ක්රියාවලිය හඳුනා නොගන්නේ නම් (ඔබේ ඩිස්ට්රෝ සමඟ එය කුමක්දැයි විමසීමෙන් පිළිතුරු නොලැබේ). Rootkit ගේ සහ ඔබ කර තියෙනවා ඕනෑම ලක්ෂණ සඳහා පරීක්ෂා කරන්න අයත් . ක්රියාවලිය killing ාතනය කිරීමෙන් ඔබව වළක්වා ගැනීමට රූට්කිට් හැකියාවට වඩා වැඩි ය. ඇත්ත වශයෙන්ම බොහෝ අය ඔබව දැකීමෙන් වලක්වා ගත හැකිය. නමුත් කුඩා වැඩසටහන් 1 ක් වෙනස් කිරීමට ඔවුන් අමතක කළහොත් ඒවා හඳුනාගත හැකිය (උදා: ඒවා වෙනස් කරන ලදි top
, නමුත් නොවේ htop
). බොහෝ දුරට මෙය එසේ නොවන නමුත් කණගාටු වීමට වඩා ආරක්ෂිතයි.
මරන්න යන්නෙන් අදහස් කරන්නේ සං .ාවක් යැවීමයි. ඔබට යැවිය හැකි බහු සං als ා ඇත. kill -9 විශේෂ සං .ාවකි.
සං signal ාවක් යැවීමේදී යෙදුම එය සමඟ කටයුතු කරයි. එසේ නොවේ නම් කර්නලය ඒ සමඟ කටයුතු කරයි. එවිට ඔබට ඔබේ යෙදුමේ සං signal ාවක් කොටු කළ හැකිය.
නමුත් මම කිව්වා kill ාතනය -9 විශේෂයි කියලා. යෙදුමට එය නොලැබීම විශේෂත්වයකි. එය කෙලින්ම කර්නලය වෙතට යන අතර එමඟින් පළමු අවස්ථාවෙහිදී යෙදුම සැබවින්ම විනාශ කරයි. වෙනත් වචන වලින් කිවහොත් එය මිය යයි
kill -15 මඟින් SIGNM සං signal ාව යවන අතර එය SIGNAL TERMINATE යන්නෙන් අදහස් වේ. යෙදුමක් වසා දැමීමට කාලය බව පැවසීමට මෙය මිත්රශීලී ක්රමයයි. නමුත් යෙදුම ප්රතිචාර නොදක්වන්නේ නම් kill ාතනය -9 එය මරා දමයි.
kill ාතනය -9 ක්රියා නොකරන්නේ නම් එයින් අදහස් වන්නේ ඔබේ කර්නලය අබලන් වී ඇති බවයි. නැවත පණගැන්වීම පිළිවෙලට ඇත. එය කවදාවත් සිදු වූ බව මට මතක නැත.
පළමුව, එහි සොම්බි ක්රියාවලියක් තිබේදැයි පරීක්ෂා කරන්න (එය ඉතා හැකි ය):
ps -Al
ඔබ එවැනි දෙයක් දකිනු ඇත:
0 Z 1000 24589 1 0 80 0 - 0 exit ? 00:00:00 soffice.bin <defunct>
(වම් පස ඇති "Z" සටහන් කරන්න)
5 වන තීරුව 1 නොවේ නම්, එයින් අදහස් වන්නේ එයට මව් ක්රියාවලියක් ඇති බවයි. එම මව් ක්රියාවලි හැඳුනුම්පත මරා දැමීමට උත්සාහ කරන්න .
එහි PPID = 1 නම්, එය මරන්න එපා !! , වෙනත් උපාංග හෝ ක්රියාවලි එයට සම්බන්ධ විය හැකි යැයි සිතන්න.
උදාහරණයක් ලෙස, ඔබ සවිකර ඇති උපාංගයක් හෝ සම්බා භාවිතා කරන්නේ නම්, එය ඉවත් කිරීමට උත්සාහ කරන්න. එමඟින් සොම්බි ක්රියාවලිය මුදා හැරිය හැක.
සටහන : ps -Al
(හෝ top
) “Z” වෙනුවට “D” පෙන්වන්නේ නම්, එය දුරස්ථ සවිකිරීමට (NFS වැනි) සම්බන්ධ විය හැකිය. මගේ අත්දැකීම් අනුව, නැවත පණ ගැන්වීම එහි යෑමට ඇති එකම ක්රමයයි, නමුත් ඔබට එම නඩුව ආවරණය කරන අනෙක් පිළිතුරු වඩාත් විස්තරාත්මකව පරීක්ෂා කළ හැකිය.
ps -ef | grep N
එහිදී N
එම PPID ප්රශ්නය වේ. පොදුවේ ගත් කල මෙය හොඳ අදහසක් වන අතර, උපසිරැසි හඳුන්වාදීමෙන් පසු (2012 දී), සහ බොහෝ විට ඔබ systemd භාවිතා කරන බෙදාහැරීමක් භාවිතා කරන්නේ නම්.
අනෙක් අය සඳහන් කර ඇති පරිදි, අඛණ්ඩ නින්දේ ක්රියාවලියක් වහාම මරා දැමිය නොහැක (හෝ, සමහර අවස්ථාවලදී). මෙම ගැටළුව විසඳීම සඳහා තවත් ක්රියාදාම තත්වයක් වන TASK_KILLABLE එකතු කර ඇති බව සඳහන් කිරීම වටී, විශේෂයෙන් එන්එෆ්එස් මත ක්රියාවලිය බලා සිටින පොදු අවස්ථාව. Http://lwn.net/Articles/288056/ බලන්න
අවාසනාවට මම විශ්වාස කරන්නේ නැහැ මෙය කර්නලයේ කොතැනකවත් භාවිතා වන නමුත් එන්එෆ්එස්.
ls
ප්රවේශ වීමේ ක්රියාවලියක් sshfs
killing ාතනය කිරීමේ ගැටළු මට තිබුණි . එවැනි තත්වයන් වළක්වා ගැනීම සඳහා අනාගතයේදී මට භාවිතා කළ හැකි FUSE හෝ sshf සඳහා විසඳුමක් තිබේද? 2.6.30 කර්නලය
මට ටිකක් බැලීමට උදව් කළ කුඩා පිටපතක් සාදන ලදී!
ලබා දී ඇති නමක් ඇති ඕනෑම ක්රියාවලියක් එහි මාවතේ මරා දැමීමට ඔබට එය භාවිතා කළ හැකිය (මේ පිළිබඳව අවධානය යොමු කරන්න !!) නැතහොත් “-u පරිශීලක නාමය” පරාමිතිය භාවිතා කර යම් පරිශීලකයෙකුගේ ඕනෑම ක්රියාවලියක් kill ාතනය කළ හැකිය.
#!/bin/bash
if [ "$1" == "-u" ] ; then\n
PID=`grep "$2" /etc/passwd | cut -d ":" -f3`
processes=`ps aux | grep "$PID" | egrep -v "PID|ps \-au|killbyname|grep" | awk '{ print $2}'`
echo "############# Killing all processes of user: $2 ############################"
else
echo "############# Killing processes by name: $1 ############################"
processes=`ps aux | grep "$1" | egrep -v "killbyname|grep" | awk '{ print $2}' `
fi
for process in $processes ; do
# "command" stores the entire commandline of the process that will be killed
#it may be useful to show it but in some cases it is counter-productive
#command=`ps aux | grep $process | egrep -v "grep" | awk '{ print $2 }'`
echo "Killing process: $process"
echo ""
kill -9 $process
done
ස්ට්රේස් කිසිවක් පෙන්වන්නේ දැයි පරීක්ෂා කරන්න
strace -p <PID>
gdb සමඟ ක්රියාවලියට ඇමිණීමට උත්සාහ කරන්න
gdb <path to binary> <PID>
ක්රියාවලිය ඔබට ඉවත් කළ හැකි, කර්නල් මොඩියුලය ඉවත් කිරීමට හෝ භෞතිකව විසන්ධි කිරීමට / ඉවත් කිරීමට හැකි උපාංගයක් සමඟ අන්තර්ක්රියා කරන්නේ නම් ... එය උත්සාහ කරන්න.
මට මේ වගේ කාරණයක් තිබුණා. මම මේ සමඟ ආරම්භ කළ බව වැඩ සටහන strace
හා සමග බාධා Ctrl
+ C
. එය අවසන් වූයේ T
(සොයාගත් හෝ නැවැත්වූ) තත්වයක ය. එය හරියටම සිදුවූයේ කෙසේදැයි මම නොදනිමි, නමුත් එය මරා දැමිය නොහැක SIGKILL
.
දිගු කතාව කෙටියෙන්, මම එය මරා දැමීමට සමත් විය gdb
:
gdb -p <PID>
> kill
Kill the program being debugged? (y or n) y
> quit
ගිලෙස්ගේ පිළිතුරෙන් ලද හෝඩුවාවක් මත පදනම්ව, මට <defunct>
පද්ධති සම්පත් භාවිතා කරන “පීඑස්” හි ඉහළින් “ඉසෙඩ්” ලෙස සලකුණු කරන ලද ක්රියාවලියක් තිබුණි , එයට වරායක් පවා විවෘතව තිබු අතර එය සවන් දෙන අතර ඔබට එම වරායට සම්බන්ධ විය හැකිය. මෙය සිදු කළේ එය ක්රියාත්මක කිරීමෙන් පසුවය kill -9
. එහි මවුපියන් "1" (එනම් init
) එබැවින් න්යායාත්මකව එය නැවත නැවත අතුරුදහන් විය යුතුය. නමුත් එය එසේ නොවීය, එය දුවන්නේ නැත, සහ "මැරෙන්නේ නැත"
ඉතින් මගේ කාරණයේදී එය පිල්ලියක් නමුත් තවමත් සම්පත් පරිභෝජනය කරයි ... FWIW.
එය ඕනෑම සංඛ්යාවක් විසින් killable නොවේ kill -9
ගේ
එහි මවුපියන් වූ init
නමුත් එය නෙළා නොගනු ලැබීය (පිරිසිදු කිරීම). එනම් init
එය දුක්බර ළමා විය.
ගැටළුව විසඳීම සඳහා නැවත පණගැන්වීම අවශ්ය නොවීය. නැවත පණගැන්වීම ගැටළුව වටා "ක්රියා කිරීමට" ඉඩ තිබුනද / එය වේගයෙන් වසා දැමීමට හේතු විය. කරුණාවන්ත නොවේ, එය තවමත් කළ හැකි විය.
එය සොම්බි ක්රියාවලියකට අයත් LISTEN වරායක් විය (සහ CLOSE_WAIT තත්ත්වය වැනි තවත් වරායන් කිහිපයක් localhost සමඟ localhost සම්බන්ධ කර ඇත). එය තවමත් සම්බන්ධතා පවා පිළිගත්තේය. පිල්ලියක් ලෙස පවා. වරාය පිරිසිදු කිරීම සඳහා එය තවම පැමිණ නැති බව මම අනුමාන කරමි. එනමුත් ඒවා පිළිගැනීමට අවස්ථාවක් නොතිබුණද, එන සම්බන්ධතා ටීසීපී සවන්දීමේ වරායේ පිටුපසට එකතු කර ඇත.
ඉහත බොහෝ දේ අන්තර් ජාලයන්හි විවිධ ස්ථානවල “කළ නොහැකි” යැයි ප්රකාශ කර ඇත.
මා තුළ අභ්යන්තර නූල් ඇති බව පෙනේ, එය "පද්ධති ඇමතුමක්" (මෙම අවස්ථාවේදී ioctl) ක්රියාත්මක කරමින් නැවත පැමිණීමට පැය කිහිපයක් ගත විය (මෙය අපේක්ෂිත හැසිරීමයි). පෙනෙන විදිහට පද්ධතියට එම ක්රියාවලිය “සියල්ලම” විනාශ කළ නොහැක ioctl
, එය ඇමතුමෙන් ආපසු එන තුරු , එය කර්නල් ඉඩමට ඇතුළු වන බව අනුමාන කරන්න. පැය කිහිපයකට පසු එය නැවත පැමිණ, දේවල් පිරිසිදු කර සොකට් සියල්ලම ස්වයංක්රීයව වසා දමා ඇත. එය මරණීය දණ්ඩනය සඳහා ගතවන කාලයයි! කර්නලය එය මරා දැමීමට ඉවසීමෙන් බලා සිටියේය.
එබැවින් OP ට පිළිතුරු දීමට, සමහර විට ඔබට බලා සිටීමට සිදු වේ. දිගු කාලයක්. එවිට kill ාතනය අවසානයේ සිදුවනු ඇත.
කර්නල් සන්ත්රාසය (එනම් කර්නල් දෝෂය) තිබේදැයි බැලීමට dmesg පරීක්ෂා කරන්න.