Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

As part of tunnel script I wan to remove/kill any existing tunnels

So far I managed to get to:

matt@HY731AA:~$ ps aux | grep "ssh -N lin1tunnels" | grep -v grep | awk '{print $2}' | xargs -0 kill -9 ERROR: garbage process ID "5321 5322 ".

It looks as if the output contains " although removing the xargs does not show ", is there a way to clean up output ready for xargs. Or maybe someone knows a better way to accomplish the above

share|improve this question

@John's suggestion of pkill is the cleaner way of doing this (if you have it), but just for the record: the problem is that you're using xarg's -0 flag (which tells it to look for null-delimited values), but sending newline-delimited values. Also, rather than using a second grep to remove the first one from your results, search for a pattern that won't match itself:

ps aux | grep "[s]sh -N lin1tunnels" | awk '{print $2}' | xargs kill -9
share|improve this answer
+1. nice. – Prince John Wesley Jun 29 '11 at 6:01


Use pkill:

 pkill -9 -f "ssh -N lin1tunnels"

Avoid sending SIGKILL signal to the specified process or process group. Read the Useless Use of Kill -9

share|improve this answer
Doesnt seem to work process still exists with both -9 and none – Matt Freeman Jun 29 '11 at 5:47
You need to add -f to search the full command with arguments, not just the command name. – glenn jackman Jun 29 '11 at 11:13
@glenn: yes. i missed that one.+1. – Prince John Wesley Jun 29 '11 at 11:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .