If your system has
pidof, use that. Otherwise, the customary solution is to run
grep on a
ps listing of your processes, and use that to find the PID to pass to
kill. However, a naive attempt will have the problem that it will find itself in the process listing, and commit suicide instead of kill the intended target. The proper workaround for that is to use a regular expression which does not directly match itself as the search string.
Unfortunately, the options and output format of
ps varies from one system to another. The following works for me on a recent version of Ubuntu.
Code:
ps t | awk '$5 ~ /^[t]estscript/ { print $1 }' | xargs -r kill
The use of
[t] instead of just a plain
t is the workaround for the "script will kill itself" problem. The use of
xargs -r prevents
kill from being run at all if there are no matches (there would only be a warning message about running
kill with no arguments, so that is not a very fatal problem).
The option t and the field numbers $1 and $5 might need to be changed for your system. If you google for a similar solution for your particular platform, look out for the problems outlined above. For stylistic reasons, a single
awk script should be preferred over what is affectionately called
Useless Use of Grep.