Com matar un procés a Linux

How Kill Process Linux



Tots els sistemes operatius Linux inclouen l'ordre kill. L'únic propòsit d'aquesta eina és finalitzar un procés objectiu. És una potent eina que fa que Linux sigui força versàtil, especialment en camps de servidor i empresa, on un canvi / actualització important pot tenir efecte sense reiniciar tota la màquina. En aquest article, mostraré com es pot acabar amb un procés mitjançant matar , pkill i killall .

Matar un procés

Per matar un procés, utilitzarem un grapat d’eines: matar , pkill , i killall . Tots ells funcionen bàsicament de la mateixa manera.







Aquestes eines no acaben el procés per si mateixes. En el seu lloc, envien un senyal designat al procés o grups de processos de destinació. Si no heu especificat cap senyal específic, SIGTERM s'envia com a senyal predeterminat. No obstant això, hi ha una sèrie de senyals compatibles, per exemple, SIGKILL, SIGHUP, etc.



Aquí teniu l’estructura bàsica d’ordres per a matar , pkill i killall .



$matar <senyal_o_opcions> <PID(s)>
$ pkill<senyal_o_opcions> <nom_procés>
$killall <opció> <nom_procés>

Sempre que sigui possible, es recomana utilitzar-lo matar .





Mata , pkill i killall ubicacions

Kill és l'ordre per defecte per finalitzar un procés.



$matar --ajudar

S’executa des del directori / usr / bin.

$quin matar

L’avantatge és que també permet accedir a pkill, una altra ordre similar a kill que permet finalitzar el procés en funció del seu nom.

$pkill--ajudar

$quinpkill

Algunes aplicacions executen diversos processos del mateix executable. Si voleu finalitzar diversos processos amb el mateix nom, utilitzeu l'eina killall.

$killall --ajudar

$quin killall

Enumerant tots els processos en execució

La primera tasca és identificar el PID (número d’identificació del procés) i / o el nom del procés que voleu finalitzar. Per a aquest exemple, utilitzaré Firefox com a procés de destinació per finalitzar. Executeu l'ordre següent per llistar tots els processos en execució del sistema.

$ps -A

Per a la majoria de les tasques, hem de conèixer el PID del procés objectiu. No obstant això, en determinades situacions, és més adequat utilitzar el nom del procés.

Si coneixeu el nom exacte del procés de destinació, podeu obtenir directament el PID mitjançant pidof .

$pidof <nom_procés>

Una altra eina interessant per obtenir informació sobre el procés objectiu és pgrep. Està dissenyat específicament per a aquest propòsit.

$pgrep<opció> <nom_procés>

Mata senyals

Ara fem una ullada als senyals que admeten les eines de matar. És una llista enorme. Per descomptat, no tots són necessaris per a cada situació. De fet, la majoria de les situacions només requereixen un grapat de senyals.

En primer lloc, fem una ullada a la llista de suports que permet eliminar.

$matar -la

Hi ha dues maneres de definir quin senyal voleu enviar. Podeu utilitzar el nom complet del senyal o el seu valor equivalent.

$matar-<senyal> <PID>

O,

$matar-<valor_sinal> <PID>

Els senyals més populars són SIGHUP (1), SIGKILL (9) i SIGTERM (15). En general, SIGTERM és la forma per defecte i més segura de finalitzar un procés de destinació.

En el cas de pkill, el senyal admès és el mateix que kill. No obstant això, en el cas de killall, el nombre de senyals compatibles i els noms dels senyals són diferents.

$killall -la

Matar un procés

Per matar un procés, necessitem el PID d’aquest procés objectiu. Suposant que teniu el PID, executeu l'ordre següent per matar-lo.

$matar <opció> <PID>

Aquí, kill enviarà el senyal predeterminat SIGTERM als PID. Si voleu finalitzar diversos processos, mencioneu tots els PID separats per espai.

$matar <opció> <PID_1> <PID_2>

Especifiquem quin senyal voleu enviar a l'objectiu.

Voleu finalitzar un procés només amb el seu nom? Utilitzeu pkill.

$pkill<opció> <nom_procés>

En alguns casos, una aplicació concreta pot tenir massa processos en execució. Escriure tots aquests PID requereix molt de temps i és fatigós. En aquests casos, utilitzarem l'eina killall. És bastant similar a kill, però funciona amb el nom del procés.

$killall <opció> <nom_procés>

Per exemple, quan s’executa Firefox, inicia un grapat de processos. Per matar-los tots alhora, executeu aquesta ordre.

$killallfirefox

Voleu finalitzar tots els processos que s’estan executant amb un determinat usuari? Killall pot fer la feina, sense cap problema. Aneu amb compte en executar-lo, ja que pot deteriorar el sistema i crear altres problemes. No funcionarà si intenteu finalitzar els processos que s’executen amb un usuari diferent amb privilegis més elevats.

$killall -u <usuari>

Conflicte de permisos

Les característiques inherents a la jerarquia d’usuaris de Linux també s’apliquen quan esteu a punt de finalitzar una aplicació. Un usuari no pot finalitzar els processos que s’executen amb privilegis superiors, només els processos amb privilegis iguals / inferiors. A més, un usuari no pot manipular processos que s’executen amb usuaris diferents.

Per exemple, considerem l’ordre yes. Si es coneix com a usuari actual, es pot acabar fàcilment amb kill.

$matar

Ara, què passa si corria per sota arrel ? No es pot trucar a kill perquè l'usuari actual no funciona.

De la mateixa manera, si s’executava un procés sota un altre usuari, no el podeu finalitzar des d’un altre compte d’usuari.

Pensaments finals

En aquest article, només es mostraven els conceptes bàsics i l’ús comú d’aquestes ordres. Aquestes eines de matar són capaces de més que això. Per tenir un coneixement profund de les habilitats de qualsevol eina, us recomano que consulteu la pàgina de manual.

$home matar

$homepkill

Gaudeix-ne!