Hoe een proces in Linux te doden

How Kill Process Linux



Elk Linux-besturingssysteem wordt geleverd met het kill-commando. Het enige doel van deze tool is om een ​​doelproces te beëindigen. Het is een krachtige tool die Linux behoorlijk veelzijdig maakt, vooral op server- en bedrijfsterreinen waar een grote wijziging/update van kracht kan worden zonder de hele machine opnieuw te hoeven opstarten. In dit artikel laat ik zien hoe je een proces kunt beëindigen met behulp van doden , pkill en killall .

Een proces doden

Voor het doden van een proces gebruiken we een handvol tools: doden , pkill , en killall . Ze werken allemaal in principe op dezelfde manier.







Deze tools beëindigen het proces zelf niet. In plaats daarvan sturen ze een aangewezen signaal naar het doelproces of procesgroepen. Als u geen specifiek signaal hebt opgegeven, wordt SIGTERM als standaardsignaal verzonden. Er zijn echter een aantal ondersteunde signalen, bijvoorbeeld SIGKILL, SIGHUP etc.



Hier is de basisopdrachtstructuur voor: doden , pkill en killall .



$doden <signaal_of_opties> <PID(s)>
$ pkill<signaal_of_opties> <proces naam>
$killall <optie> <proces naam>

Waar mogelijk wordt aanbevolen om doden .





Doden , pkill en killall locaties

Kill is de standaardopdracht voor het beëindigen van een proces.



$doden --helpen

Het wordt uitgevoerd vanuit de map /usr/bin.

$die doden

Het voordeel is dat het ook toegang geeft tot pkill, een ander commando dat lijkt op kill en waarmee het proces kan worden beëindigd op basis van hun naam.

$pkill--helpen

$diepkill

Sommige apps voeren meerdere processen van hetzelfde uitvoerbare bestand uit. Als je een aantal processen met dezelfde naam wilt beëindigen, gebruik dan de tool killall.

$killall --helpen

$die killall

Alle lopende processen weergeven

De allereerste taak is het identificeren van de PID (procesidentificatienummer) en/of de procesnaam die u wilt beëindigen. Voor dit voorbeeld zal ik Firefox gebruiken als het doelproces om te beëindigen. Voer de volgende opdracht uit om alle actieve processen op het systeem weer te geven.

$ps -TOT

Voor de meeste taken moeten we de PID van het doelproces weten. In bepaalde situaties is het gebruik van de procesnaam echter meer geschikt.

Als u de exacte naam van het doelproces kent, kunt u de PID direct verkrijgen met pidof .

$pidof <proces naam>

Een ander interessant hulpmiddel om de informatie over het doelproces te verkrijgen, is pgrep. Het is speciaal ontworpen voor het doel.

$pgrep<optie> <proces naam>

Kill signalen

Laten we nu eens kijken naar de signalen die de kill-tools ondersteunen. Het is een enorme lijst. Natuurlijk zijn ze niet allemaal nodig voor elke situatie. In feite vereisen de meeste situaties slechts een handvol signalen.

Laten we eerst eens kijken naar de lijst die kill ondersteunt.

$doden -de

Er zijn 2 manieren om te bepalen welk signaal je wilt versturen. U kunt de volledige signaalnaam of de equivalente waarde gebruiken.

$doden-<signaal> <PID>

Of,

$doden-<signaalwaarde> <PID>

De meest populaire signalen zijn SIGHUP (1), SIGKILL (9) en SIGTERM (15). Over het algemeen is SIGTERM de standaard en veiligste manier om een ​​doelproces te beëindigen.

In het geval van pkill is het ondersteunde signaal hetzelfde als kill. In het geval van killall zijn het aantal ondersteunde signalen en de signaalnamen echter verschillend.

$killall -de

Een proces doden

Om een ​​proces te doden, hebben we de PID van dat doelproces nodig. Ervan uitgaande dat u de PID hebt, voert u de volgende opdracht uit om deze te doden.

$doden <optie> <PID>

Hier zal kill het standaardsignaal SIGTERM naar de PID('s) sturen. Als u meerdere processen wilt beëindigen, vermeld dan alle PID's gescheiden door spatie.

$doden <optie> <PID_1> <PID_2>

Laten we specificeren welk signaal u naar het doel wilt sturen.

Wilt u een proces beëindigen met alleen de naam? Gebruik pkill.

$pkill<optie> <proces naam>

In sommige gevallen kan een bepaalde toepassing te veel processen hebben. Het typen van al die PID's is tijdrovend en vermoeiend. In dergelijke scenario's gebruiken we de killall-tool. Het lijkt veel op doden, maar het werkt met de procesnaam.

$killall <optie> <proces naam>

Wanneer Firefox bijvoorbeeld wordt uitgevoerd, start het een handvol processen. Voer deze opdracht uit om ze allemaal tegelijk te doden.

$killallfirefox

Wilt u alle processen beëindigen die onder een bepaalde gebruiker worden uitgevoerd? Killall kan het werk doen, geen probleem. Wees voorzichtig bij het uitvoeren van deze, omdat dit het systeem kan afbreken en andere problemen kan veroorzaken. Het werkt niet als u processen probeert te beëindigen die worden uitgevoerd onder een andere gebruiker met hogere rechten.

$killall -u <gebruiker>

Toestemmingsconflict

De inherente kenmerken van de Linux-gebruikershiërarchie zijn ook van toepassing wanneer u op het punt staat een toepassing te beëindigen. Een gebruiker kan geen processen beëindigen die met hogere bevoegdheden worden uitgevoerd, alleen processen met gelijke/lagere bevoegdheden. Bovendien kan een gebruiker geen processen manipuleren die onder verschillende gebruikers worden uitgevoerd.

Laten we bijvoorbeeld eens kijken naar de opdracht yes. Als het wordt aangeroepen als de huidige gebruiker, kan het eenvoudig worden beëindigd met behulp van kill.

$doden Ja

Nu, wat als? Ja liep onder wortel ? Kill aanroepen omdat de huidige gebruiker niet werkt.

Evenzo, als een proces onder een andere gebruiker werd uitgevoerd, kunt u het niet beëindigen vanuit een ander gebruikersaccount.

Laatste gedachten

In dit artikel werden alleen de basisprincipes en het algemene gebruik van deze opdrachten getoond. Deze kill-tools zijn tot meer in staat. Om diepgaande kennis te hebben van de mogelijkheden van een tool, raad ik aan om de man-pagina te bekijken.

$Mens doden

$Menspkill

Genieten van!