I have my .bashrc file setup with many aliases, you can see more here. One of them is to kill processes, but sometimes it's not useful for running processes with multiple instances.
My alias looks like:
alias fproces='ps x | grep ' |
So when I get a process or an app that I want to kill I can do the following:
$ fproces gedit 7892 ? S 0:00 gedit 7894 pts/1 R+ 0:00 grep gedit $ kill -9 7892 |
This is not that useful for applications/processes like Firefox:
$ fproces firefox 5994 ? S 0:00 /bin/sh /usr/bin/firefox 6006 ? S 0:00 /bin/sh /usr/lib/firefox/run-mozilla.sh /usr/lib/firefox/firefox-bin 6011 ? Sl 54:24 /usr/lib/firefox/firefox-bin 7898 pts/1 R+ 0:00 grep firefox $ kill -9 5994 6006 6011 |
So I came up with a little script that does the following:
$ finish.sh Enter app name firefox 5994 ? S 0:00 /bin/sh /usr/bin/firefox 6006 ? S 0:00 /bin/sh /usr/lib/firefox/run-mozilla.sh /usr/lib/firefox/firefox-bin 6011 ? Sl 54:38 /usr/lib/firefox/firefox-bin Do you want to kill all items? [y|n] |
The script lists all processes related to the app and kill it if you say “y”. In this example I typed in “firefox” when prompted for an app name.
Here is what the script looks like:
#!/bin/bash ## reads process name and assign it to var app echo "Enter app name" read app ## sets a minimum size for the var app. Without this, you could easily kill all running processes minim=`echo "$app" | wc -m` if [ "$minim" -lt "4" ] ; then echo "Please try again with an app name" exit 1 fi ## looks for the running process instances, lists it and asks if you want to kill all of them ps x | grep "$app" | grep -v 'grep' echo echo "Do you want to kill all items? [y|n] " ## reads the answer and acts if it's an “y” read resposta if [ "$resposta" = "y" ] ; then termina=`ps x | grep "$app" | grep -v 'grep' | awk '{print $1 ; }'` for i in `echo $termina` ; do kill -9 "$i" done fi |
Vic.
1 comment:
I have to admit, that script is simple and works beautifully. 'pkill' or 'killall' just wasn't cutting it for me.
THANKS!!!
Post a Comment