Vraag een proces doden in bash [dupliceren]


Deze vraag heeft hier al een antwoord:

Hoe kill ik een proces dat in bash wordt uitgevoerd, bijvoorbeeld, stel dat ik een bestand open:

$ gedit file.txt

is er een manier om de opdracht te sluiten binnen de opdrachtprompt? Dit voorbeeld is tamelijk triviaal, omdat ik het venster gewoon kan sluiten, maar het lijkt een beetje op te komen, vooral als ik opdrachten verkeerd typeer.

Is er ook een manier om te ontsnappen aan een uitvoerbaar bestand dat wordt uitgevoerd? Dit heeft waarschijnlijk dezelfde oplossing, maar ik dacht dat ik het toch zou vragen.

Bedankt


43
2018-05-05 16:22


oorsprong


antwoorden:


Om het te onderbreken, kunt u proberen op te drukken ctrl  c om een ​​SIGINT te verzenden. Als het niet stopt, kun je het proberen te doden met kill -9 <pid>, die een SIGKILL verzendt. Dit laatste kan niet worden genegeerd / onderschept door het proces zelf (degene die wordt gedood).

Als u het actieve proces naar de achtergrond wilt verplaatsen, drukt u op ctrl  z. Het proces wordt naar de achtergrond gestuurd en u keert terug naar de shell-prompt. Gebruik de fg opdracht om het tegenovergestelde te doen.


37
2018-05-05 16:36



Je hebt meerdere opties:

Ten eerste kunt u gebruiken doden. Maar je hebt de pid van je proces nodig, die je kunt krijgen door te gebruiken ps, pidof of pgrep.

ps -A  // to get the pid, can be combined with grep
-or-
pidof <name>
-or-
pgrep <name>

kill <pid>

Het is mogelijk om een ​​proces te doden door alleen de naam te kennen. Gebruik pkill of killall.

pkill <name>
-or-
killall <name>

Alle commando's sturen een signaal naar het proces. Als het proces is opgehangen, kan het nodig zijn om een ​​e-mail te verzenden SIGKILL naar het proces (dit is signaal nummer 9, dus de volgende voorbeelden doen hetzelfde):

pkill -9 <name>
pkill -SIGKILL <name>

U kunt deze optie gebruiken met kill en killallook.

Lees dit artikel over controlerende processen om meer informatie te krijgen over processen in het algemeen.


64
2018-05-05 16:24



proberen kill -9 {processID}

Om de proces-id te vinden die u kunt gebruiken ps -ef | grep gedit


8
2018-05-05 16:26



Oude post, maar ik kwam net een heel gelijkaardig probleem tegen. Na wat experimenteren, vond ik dat je dit met één enkele opdracht kunt doen:

kill $(ps aux | grep <process_name> | grep -v "grep" | cut -d " " -f2)

In het geval van OP <process_name> zou zijn "gedit file.txt".


4
2017-08-07 21:35



Dit is gewelddadig gebruik met de nodige voorzichtigheid:

pkill -9 -e -f processname 

Als je procesnaam "sh" is, zal het ook "bash" doden


4
2017-09-28 18:18



U kunt het commando pkill gebruiken om processen te beëindigen. Als je wilt "spelen", kun je "pgrep" gebruiken, wat precies hetzelfde werkt, maar het proces retourneert in plaats van het te doden.

pkill heeft de parameter -f waarmee je kunt vergelijken met de volledige opdracht. Dus voor uw voorbeeld kunt u: pkill -f "gedit file.txt"


1
2018-05-05 16:25



Het is mij niet duidelijk wat je bedoelt met "ontsnappen aan een uitvoerbaar bestand dat draait", maar ctrl-z zal een proces op de achtergrond zetten en controle teruggeven aan de opdrachtregel. U kunt dan de opdracht fg gebruiken om het programma weer op de voorgrond te zetten.


0
2018-05-05 16:28



Controleer het "top" commando en als uw script of wat dan ook draait, noteer dan 'PID'

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1384 root      20   0  514m  32m 2188 S  0.3  5.4  55:09.88 example
14490 root      20   0 15140 1216  920 R  0.3  0.2   0:00.02 example2



kill <you process ID>

Example : kill 1384

0
2017-12-04 12:05