Shell script to -9 kill based on name
Solution 1
You can use your shell to do this task for you:
kill -9 $(pidof middleman)
The shell executes the command pidof middleman
first. The output of pidof(8) is the process id. So the shell substitutes the pidof
-command with the process id and executes kill -9 18845
(or whatever the correct process id is).
Solution 2
There is an even simpler solution than the one of qbi: killall
let's you kill processes by name, and you can specify signals.
killall -9 middleman
See man killall
for more information and extra options (there are quite a few).
As the name suggests, this does send the signal to all processes named middleman
. But that's not different from other ways (like pkill
). Furthermore, pkill -9 middleman
will target processes whose name match but do not equal middleman
, such as middleman2
, as well.
Solution 3
The other answers are entirely correct, but I might as well add a third option so all are documented here. You can also use:
pkill -9 middleman
See man pkill
for more information and extra options.
It doesn't really matter which of these methods you use. They will all work. But knowing the options if useful if you want to modify the behaviour in some way, since the corresponding man pages show what other matching options are available.
Solution 4
pkill -9 -f middleman
The -f
option makes it match the complete command line, rather than only the process name.
Note that -9
should be a last resort signal, not something to use routinely.
Solution 5
Just for fun, I'd like to add a more manual, old school way
kill -9 `ps aux | grep middleman | awk '{print $2}'`
Related videos on Youtube
mreq
Updated on September 18, 2022Comments
-
mreq over 1 year
Is there a way (perhaps a script) how to automate this process:
petr@sova:~$ ps -ef | grep middleman petr 18445 2312 1 12:06 pts/2 00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman petr 18581 13621 0 12:08 pts/0 00:00:00 grep --color=auto middleman petr@sova:~$ kill -9 18445
Unfortunately,
pkill
is too weak as I have to go with-9
option onkill
.-
OrangeDog over 11 yearsYou can use
-9
withpkill
too... -
Eliah Kagan over 11 yearsIn my opinion, it's more elegant and proper to use
-KILL
than-9
. What number corresponds to what signal is implementation-dependent.SIGKILL
happens to be9
on Linux i386 and Linux amd64, but not necessarily everywhere. (More info here.) -
Andrea Corbellini over 11 years@EliahKagan: while I like to use
-KILL
too (because it makes code more readable), it should be noted thatSIGKILL = 9
is specified by POSIX, so-9
is pretty portable nowadays (and does not depend on kernels or architectures).
-
-
Andrea Corbellini over 11 years
killall
for the win! -
mreq over 11 yearsStrange, doesn't work here. Nor does
middleman*
-
Anish over 11 yearsAh. Looking more closely, it seems likely that you're wanting to kill a ruby interpreter, rather than a process really called
middleman
. This is where the differences in how exactlypkill
,killall
,pidof
andgrep
match processes really start to matter! -
slipset over 11 years@gerhard, thanks for the edit, couldn't find the back ticks on my iPad. grep -v is a good idea...
-
Tobias Kienzler over 11 yearskill all middlemen? oh dear...
-
cwd over 9 yearsthanks! I really like the ability to match the
complete command line
-
Aaron Franke over 7 yearsWhat's the difference between this and
kill -9 $(pgrep middleman)
?