Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Currently I use line like this in my sh script file:

kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'` 

But I wonder how to call it only if process (myServer here) is running?

share|improve this question

3 Answers 3

You could kill processes by name using pkill or killall, check their man pages.

share|improve this answer

try using:

sudo kill `pidof process_name`

where process_name is the name of the process you want to kill. What's great about this is that pidof will list the pid's of all processes matching the given name. Since kill accepts multiple pid's, it will kill of all of them in a single whim.

Let me know if this helps.

share|improve this answer
    
What if list is empty? (my main point was not to call kill at all if possible) –  myWallJSON Jan 31 '12 at 12:44
    
If the list is empty, kill will return an error code 1 and not kill anything. It would be the equivalent as trying to call kill with no arguments. You could add an if statement that first checks if pidof returns an empty list. If it does not return an empty list, call kill `pidof process_name. If it does return an empty list, skip the kill call. –  amandion Jan 31 '12 at 12:59

I would use:

ps x --no-header -o pid,cmd | awk '!/awk/&&/myServer/{print $1}' | xargs -r kill

The xargs -r tells to run kill only if there is input. The ps --no-header -eo pid,cmd gets the output into a better format for parsing.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.