How to kill running processes on GPUs for a specific program (e.g. python) in terminal? For example two processes are running with python in the top picture and kill them to see the bottom picture in nvidia-smi
6 Answers
The accepted answer doesn't work for me, probably because nvidia-smi
has different formats across different versions/hardware.
I'm using a much cleaner command:
nvidia-smi | grep 'python' | awk '{ print $3 }' | xargs -n1 kill -9
You can replace $3
in the awk expression to fit your nvidia-smi
output. It is the n-th column in which the PIDs occur.

- 1,497
- 1
- 15
- 22
-
2Same here, accepted answer didn't work. This one did. Kudos !! – Pramesh Bajracharya Nov 25 '19 at 09:18
-
2I needed to sudo kill `nvidia-smi | grep 'python' | awk '{ print $3 }' | sudo xargs -n1 kill -9` – Aaron Soellinger Dec 31 '19 at 10:52
-
hmm, this command gives me `kill: argument couldn't be read: '1-nan'` – MJimitater Jun 23 '20 at 23:12
-
1`kill -9
` works. use `sudo` wisely. – Prakash Vanapalli Feb 21 '21 at 04:44 -
4had to change to awk '{ print $5}' but this worked – misinglink Apr 02 '21 at 08:11
-
5for me, `nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9` worked. – Aaditya Ura Dec 06 '21 at 08:30
Use nvidia-smi
or top command to see processes running and to kill command:
sudo kill -9 PID

- 1,966
- 3
- 10
- 22

- 335
- 3
- 6
-
This answer is addressed as a comment in response to @oya163 under the accepted answer. – salehinejad Aug 09 '21 at 01:45
You can grep
"python" in the nvidia-smi
and then pass the PID
to
the kill -9
command, e.g.
sudo kill -9 $( nvidia-smi | grep 'python' | sed -n 's/|\s*[0-9]*\s*\([0-9]*\)\s*.*/\1/p' | sed '/^$/d')

- 1,308
- 7
- 14
- 21

- 7,258
- 3
- 18
- 26
-
-
@oya163 it should grab it using grep from nvidia-smi. No need to manually add it. – salehinejad Oct 16 '18 at 21:03
-
No I meant a user-specific PID? Because I don't want to and I can't kill other's PID. – oya163 Oct 17 '18 at 20:57
-
9
-
I guess the question is already answered when nvidia-smi shows processes occupying GPU mem. For me, even though nvidia-smi wasnt showing any processes, GPU memory was being used and I wanted to kill them.
The way to go in this case was to use the fuser command to find out the processes using the particular GPU device. In my case I wanted to kill all the processes using the GPU device 3. This can be done using the command :
sudo fuser -k /dev/nvidia3
You can use -ki to kill the processes interactively.

- 191
- 1
- 5
As one of other answers suggest you can use: (replace 5 with the column number where process id exists)
nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9
If you might have to use this a lot you can create an alias for the command: to do that do this you should edit ~/.bash_aliases
file:
nano ~/.bash_aliases
and add the following line to it and save the file:
alias killgpuprocess="nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9"
then (just needed this time):
source ~/.bashrc
Then if you run
killgpuprocess
it will kill the existing processes on GPU(s).

- 2,480
- 2
- 20
- 32
Keeping here as a reference. In case one wants to kill all running processes on the gpu, following command would work:
nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -n1 kill -9

- 4,242
- 3
- 29
- 58