Kako ubiti proces v Linuxu

How Kill Process Linux



Vsak operacijski sistem Linux ima ukaz kill. Edini namen tega orodja je prekiniti ciljni proces. To je močno orodje, zaradi katerega je Linux precej vsestranski, zlasti na področjih strežnikov in podjetij, kjer lahko pride do velikih sprememb/posodobitev brez ponovnega zagona celotnega stroja. V tem članku bom pokazal, kako ubiti proces z uporabo ubiti , pkill in killall .

Ubijanje procesa

Za uničenje procesa bomo uporabili nekaj orodij: ubiti , pkill , in killall . Vsi delujejo v bistvu na enak način.







Ta orodja sama ne zaključijo procesa. Namesto tega pošljejo določen signal ciljnemu procesu ali skupinam procesov. Če niste določili nobenega posebnega signala, se SIGTERM pošlje kot privzeti signal. Vendar pa obstajajo številni podprti signali, na primer SIGKILL, SIGHUP itd.



Tu je osnovna ukazna struktura za ubiti , pkill in killall .



$ubiti <signal_or_options> <PID(s)>
$ pkill<signal_or_options> <ime_procesa>
$killall <možnost> <ime_procesa>

Kadar je le mogoče, je priporočljivo uporabiti ubiti .





Ubij , pkill in killall lokacije

Kill je privzeti ukaz za prekinitev procesa.



$ubiti -pomoč

Zažene se iz imenika /usr /bin.

$ki ubiti

Prednost je, da omogoča tudi dostop do pkill, še enega ukaza, podobnega kill, ki omogoča prekinitev procesa na podlagi njihovega imena.

$pkill-pomoč

$kipkill

Nekatere aplikacije izvajajo več procesov iste izvedljive datoteke. Če želite prekiniti več procesov z istim imenom, uporabite orodje killall.

$killall -pomoč

$ki killall

Navedite vse tekoče procese

Prva naloga je identificirati PID (identifikacijsko številko procesa) in/ali ime procesa, ki ga želite prekiniti. V tem primeru bom Firefox uporabil kot ciljni postopek za prekinitev. Zaženite naslednji ukaz, da prikažete vse tekoče procese v sistemu.

$ps -TO

Za večino nalog moramo poznati PID ciljnega procesa. Vendar je v določenih situacijah uporaba imena procesa bolj primerna.

Če poznate natančno ime ciljnega procesa, lahko neposredno pridobite PID z uporabo pidof .

$pidof <ime_procesa>

Še eno zanimivo orodje za pridobivanje informacij o ciljnem procesu je pgrep. Zasnovan je posebej za ta namen.

$pgrep<možnost> <ime_procesa>

Ubijajte signale

Zdaj pa poglejmo signale, ki jih podpirajo orodja za ubijanje. To je ogromen seznam. Seveda niso vsi potrebni za vsako situacijo. Pravzaprav večina situacij zahteva le nekaj signalov.

Najprej si oglejmo seznam podpor za ubijanje.

$ubiti -

Obstajata 2 načina za določitev signala, ki ga želite poslati. Uporabite lahko celotno ime signala ali njegovo enakovredno vrednost.

$ubiti-<signal> <PID>

Ali,

$ubiti-<signal_value> <PID>

Najbolj priljubljeni signali so SIGHUP (1), SIGKILL (9) in SIGTERM (15). Na splošno je SIGTERM privzeti in najvarnejši način za prekinitev ciljnega procesa.

V primeru pkill je podprti signal enak ubijanju. Vendar pa je v primeru killall število podprtih signalov in imena signalov različno.

$killall -

Ubijanje procesa

Za uničenje procesa potrebujemo PID tega ciljnega procesa. Ob predpostavki, da imate PID, zaženite naslednji ukaz, da ga ubijete.

$ubiti <možnost> <PID>

Tukaj bo kill poslal privzeti signal SIGTERM na PID (-e). Če želite prekiniti več procesov, omenite vse PID -je, ločene s presledkom.

$ubiti <možnost> <PID_1> <PID_2>

Določimo, kateri signal želite poslati cilju.

Želite prekiniti postopek samo z njegovim imenom? Uporabite pkill.

$pkill<možnost> <ime_procesa>

V nekaterih primerih ima lahko določena aplikacija preveč procesov. Vnos vseh teh PID je dolgotrajen in dolgočasen. V takih scenarijih bomo uporabili orodje killall. Precej podobno je ubiti, vendar deluje z imenom procesa.

$killall <možnost> <ime_procesa>

Na primer, pri zagonu Firefoxa zažene nekaj procesov. Če želite ubiti vse naenkrat, zaženite ta ukaz.

$killallfirefox

Želite prekiniti vse procese, ki se izvajajo pri določenem uporabniku? Killall lahko opravi delo, brez problema. Pri izvajanju tega programa bodite previdni, saj lahko poškoduje sistem in povzroči druge težave. Ne bo delovalo, če poskušate prekiniti procese, ki se izvajajo pod drugim uporabnikom z višjimi privilegiji.

$killall -u <uporabnik>

Konflikt dovoljenj

Lastnosti uporabniške hierarhije Linuxa veljajo tudi, ko boste ustavili aplikacijo. Uporabnik ne more zaključiti procesov, ki se izvajajo z višjimi privilegiji, samo procesi z enakimi/nižjimi privilegiji. Poleg tega uporabnik ne more manipulirati s procesi, ki se izvajajo pri različnih uporabnikih.

Na primer, razmislimo o ukazu yes. Če ga pokličete kot trenutnega uporabnika, ga lahko preprosto prekinete s pomočjo kill.

$ubiti da

Kaj pa če da je tekel pod koren ? Klic kill kot trenutni uporabnik ne bo deloval.

Podobno, če je proces tekel pod drugim uporabnikom, ga ne morete preklicati iz drugega uporabniškega računa.

Končne misli

V tem članku so bile prikazane le osnove in običajna uporaba teh ukazov. Ta orodja za ubijanje so sposobna več. Za poglobljeno poznavanje sposobnosti katerega koli orodja priporočam, da si ogledate man stran.

$človek ubiti

$človekpkill

Uživajte!