kill a process in bash

Bash

Bash Problem Overview


How do I kill a process which is running in bash - for example, suppose I open a file:

> $ gedit file.txt

is there any way within the command prompt to close it? This example is fairly trivial, since I could just close the window, but it seems to come up a bit, particularly when I mistype commands.

Also is there any way to escape an executable which is running? This probably has the same solution, but I thought I'd ask anyway.

Thanks

Bash Solutions


Solution 1 - Bash

You have a multiple options:

First, you can use kill. But you need the pid of your process, which you can get by using ps, pidof or pgrep.

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

kill <pid>

It is possible to kill a process by just knowing the name. Use pkill or killall.

pkill <name>
-or-
killall <name>

All commands send a signal to the process. If the process hung up, it might be neccessary to send a sigkill to the process (this is signal number 9, so the following examples do the same):

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

You can use this option with kill and killall, too.

Read this article about controlling processes to get more informations about processes in general.

Solution 2 - Bash

To interrupt it, you can try pressing ctrl c to send a SIGINT. If it doesn't stop it, you may try to kill it using kill -9 <pid>, which sends a SIGKILL. The latter can't be ignored/intercepted by the process itself (the one being killed).

To move the active process to background, you can press ctrl z. The process is sent to background and you get back to the shell prompt. Use the fg command to do the opposite.

Solution 3 - Bash

try kill -9 {processID}

To find the process ID you can use ps -ef | grep gedit

Solution 4 - Bash

Old post, but I just ran into a very similar problem. After some experimenting, I found that you can do this with a single command:

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

In OP's case, <process_name> would be "gedit file.txt".

Solution 5 - Bash

This one is violent use with caution :

pkill -9 -e -f processname 

If your process name is "sh" it will also kill "bash"

Solution 6 - Bash

You can use the command pkill to kill processes. If you want to "play around", you can use "pgrep", which works exactly the same but returns the process rather than killing it.

pkill has the -f parameter that allows you to match against the entire command. So for your example, you can: pkill -f "gedit file.txt"

Solution 7 - Bash

It is not clear to me what you mean by "escape an executable which is running", but ctrl-z will put a process into the background and return control to the command line. You can then use the fg command to bring the program back into the foreground.

Solution 8 - Bash

Please check "top" command then if your script or any are running please note '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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwyattView Question on Stackoverflow
Solution 1 - BashtanasciusView Answer on Stackoverflow
Solution 2 - BashjweyrichView Answer on Stackoverflow
Solution 3 - BashLiamView Answer on Stackoverflow
Solution 4 - BashIanView Answer on Stackoverflow
Solution 5 - BashYannuthView Answer on Stackoverflow
Solution 6 - BashAllenJBView Answer on Stackoverflow
Solution 7 - BashGreenMattView Answer on Stackoverflow
Solution 8 - BashganeshView Answer on Stackoverflow