Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/

Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

2011-03-12 - Confoo 2011 presentation
Slides are available from the commandlinefu presentation at Confoo 2011: http://presentations.codeinthehole.com/confoo2011/
2011-01-04 - Moderation now required for new commands
To try and put and end to the spamming, new commands require moderation before they will appear on the site.
2010-12-27 - Apologies for not banning the trolls sooner
Have been away from the interwebs over Christmas. Will be more vigilant henceforth.
2010-09-24 - OAuth and pagination problems fixed
Apologies for the delay in getting Twitter's OAuth supported. Annoying pagination gremlin also fixed.
Hide

Tags

Hide

Functions

search for and kill a process in one blow

Terminal - search for and kill a process in one blow
ps aux|grep -i [p]rocessname|awk '{ print $2 }'|xargs kill
2010-04-10 18:42:27
User: billcarroll
Functions: awk grep ps xargs
-5
search for and kill a process in one blow

Alternatives

There are 2 alternatives - vote for the best!

Terminal - Alternatives

Know a better way?

If you can do better, submit your command here.

What others think

pkill is better for that.

Comment by unixmonkey9257 237 weeks and 4 days ago

Better? You mean shorter? Care to share examples and explain? Seems like the thing to do if you are going to vote it down and all.

Comment by billcarroll 237 weeks and 4 days ago

I just use

killall <procname>
Comment by kaedenn 237 weeks and 4 days ago

FYI ... There are issues using killall with names over 15 characters, and "Killing by file name only works for executables (i.e., runnable programs) that are kept open during execution. Also, killall may not have the desired effect in some situations, including on some non-Linux systems, in which case kill provides a viable alternative. - http://www.linfo.org/killall.html

Comment by billcarroll 237 weeks and 4 days ago

That would be nice to have as an alias, does anyone know how to do that?

Comment by kodiak68 237 weeks and 4 days ago

The first comment is right, I also use pkill for this. It's very simple to use, for example:

pkill ssh-agent

Also it is fairly portable, at least it also exists on BSD and Solaris, while ps syntax isn't really portable.

By the way, there's a companion tool called pgrep that just lists the PID numbers.

Another alternative would be the "killall" tool, but its syntax and behaviour differs slightly between operating systems which is somewhat dangerous. Therefore I prefer pkill.

Comment by inof 237 weeks and 4 days ago

pkill is not portable, and neither is pgrep. I'm working on OSX and neither exists on a Mac.

I can't think of a nix where ps doesn't do the job this command requires. If you can I'd love to hear about it. While different vendors customize ps, it's always present and returning PIDs.

Comment by billcarroll 237 weeks and 3 days ago

Despite all of the voting down, nobody has managed to post a better or more portable command to "search for and kill a process in one blow".

pkill does not do it on all platforms and killall does not kill processes, only running applications.

Comment by billcarroll 237 weeks and 3 days ago

You think ps is portable? ps is the prime example for commands that are not portable. It's syntax is complete different between SysV and BSD-derived systems, and Linux has taken a bit from everywhere, which is even more confusing.

Try entering "ps wwaux" on a Solaris machine. It will respond with a usage error. (By the way, the third "w" is superfluous.)

pkill is definietly more portable than ps, at least it works the same way on Linux, Solaris and BSD systems. Even AIX and HP-UX have it in their current versions. I'm surprised that Mac OS X doesn't have it, as it's partly BSD-derived, but well, that's probably bad luck then.

Comment by inof 237 weeks and 3 days ago

You are incorrect on all three counts:

1. ps wwwaux will run on Solaris, and if you preface with sudo it will return more than the 80 char limit.

2. pkill is not more portable, it is less portable. ps is on every nix distribution, pkill is not.

3. the 3rd 'w' is not superfluous.

Comment by billcarroll 237 weeks and 3 days ago

For kodiak68, here is one way you can create an alias for the command:

http://www.theorionsky.com/2010/04/pkill-improved-the-mac-edition/

Comment by billcarroll 237 weeks and 3 days ago

I'm afraid it's you who is wrong.

1. If "ps wwwaux"works for you on Solaris, then you have /usr/ucb before /bin or /usr/bin in your $PATH, which is generally not recommended because of subtle side effects. All of this is explained in the ps(1) manual page on Solaris, so I suggest you read it.

2. A command is not portable just because it's present. For portability the usage of a tool is also important. Therefore ps is not very portable. As I said, ps is the prime example of portability problems between BSD and SysV systems.

3. The third "w" is superfluous. See the manual page. The first "w" changes the output width to 132 characters (the default is 80). The second one removes all output width limitations. The third "w" doesn't change anything. If your ps behaves differently, then that's just another proof for the portability problems of ps.

Comment by inof 237 weeks and 2 days ago

So, let me see if I hear you correctly. PS is on Solaris? Nice. Next, lets establish that you can't find a *nix distribution where ps does not return a PID in second position. Nice again. Third, let's establish that pkill is not on a number of *nixes. Again, you have done nothing but prove my points ... well, that and be acerbically unhelpful. Thanks :)

Comment by billcarroll 237 weeks and 2 days ago

inof ... to give credit where credit is due, I did discover how I got into the habit of using 'ps auxwww'. I picked it up from a friend who explains his use of it as: "on old solaris/vax etc systems 'www' made it 'really wide' ;-) i don't now if this is true anymore, but - habbit."

I notice that there are quite a few people still using a 3rd 'w' but I'll be damned if I can find a place listing it as necessary. I'm guessing there is a reason out there somewhere.

Also, in the context of the command I posted, using 'w' at all does not appear to be necessary. I'm going to change the command and remove 'www'.

So, thanks.

Comment by billcarroll 237 weeks and 2 days ago

Your point of view

You must be signed in to comment.

Related sites and podcasts