killall valgrind
will kill all valgrind
processes regardless of arguments. If you want to kill only processes whose command line is exactly valgrind --tool=lackey ./testcases/kernel/syscalls/waitpid/waitpid03
, you can use pkill
:
pkill -xf 'valgrind --tool=lackey ./testcases/kernel/syscalls/waitpid/waitpid03'
Like killall
, pkill
is on every non-embedded (and some embedded) Linux installations, and it's more powerful and often more reliable (but for some reason less well-known). The companion utility pgrep
is identical except that it lists the PIDs instead of killing.
Another utility you may be interested in is fuser
: fuser testcases/kernel/syscalls/waitpid/waitpid03
lists the processes that have the specified file open, and fuser -k
would send a signal to these processes. When you're not trying to send a signal, lsof
is a more powerful alternative to fuser
(shows more stuff, has more filters).
-9
is a last resort. You should use-SIGTERM
,-SIGINT
or-SIGQUIT
first to give the application a chance to do cleanup and exit gracefully.