Kill process by pid file

Linux

Linux Problem Overview


I try to kill a process by pid file:

kill -9 $(cat /var/run/myProcess.pid)

The pid file contains the process number. However executing the kill gives me no stdout and the processes is still alive. But this works:

kill -9 PID

What is wrong with the first kill command? Does it fail to extract the PID from the file?

Example content of pid file:

5424

and

kill -9 5424

works.

Linux Solutions


Solution 1 - Linux

I believe you are experiencing this because your default shell is dash (the debian almquist shell), but you are using bash syntax. You can specify bash in the shebang line with something like,

#!/usr/bin/env bash

Or, you could use the dash and bash compatible back-tick expression suggested by admdrew in the comments

kill -9 `cat /var/run/myProcess.pid`

Regardless, you can't rely on /bin/sh to be bash.

Solution 2 - Linux

In some situations, the more compact:

pkill -F /var/run/myProcess.pid

is the way to go. I've had trouble with the varieties:

kill $(cat /var/run/myProcess.pid)
# Or
kill `cat /var/run/myProcess.pid`

when I had to put the command into something else which might parse it using different rules, like Monit does for its start/stop commands.

Solution 3 - Linux

cat /var/run/myProcess.pid | sudo xargs kill -9

Solution 4 - Linux

There is very simple method.

fuser -k /path/filename

example lets say you wanna kill apt lock file in linux.

sudo fuser -k /var/lib/dpkg/lock

and it will kill the process that holds the file.

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
QuestionUpCatView Question on Stackoverflow
Solution 1 - LinuxElliott FrischView Answer on Stackoverflow
Solution 2 - LinuxjeteonView Answer on Stackoverflow
Solution 3 - Linuxehsan houshmandView Answer on Stackoverflow
Solution 4 - LinuxRy VanView Answer on Stackoverflow