kill a process if grep match is found


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting kill a process if grep match is found
# 1  
Old 11-16-2011
kill a process if grep match is found

Hi,

I need something unusual, I guess. I need to start a process, and if that process displays a specific error message, I need to kill that process and restart it.

Something like:
Code:
startprocess | grep -i "This is the specific error message" && kill $pidof(startprocess)

Explanation, I need to start the process, check if it echoes any messages and if any of them is the one that I'm waiting, I need to kill that process.

Restarting of the process I can do putting all this in a while loop or something.

Is this possible at all? Is there any easier way to accomplish the same thing?

Thanks for any help in advance.
# 2  
Old 11-16-2011
Code:
#!/bin/bash

rm -f /tmp/procfifo
mkfifo /tmp/procfifo



startprocess >/tmp/procfifo &
PID=$!

while read LINE
do
        if [[ "$LINE" == *PATTERN* ]]
        then
                kill "$PID"
                break
        fi
done < /tmp/procfifo



rm -f /tmp/procfifo

wait "$PID"
echo "Process returned $?"

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 11-16-2011
If you're shooting for a one-liner then this could work:

Code:
startprocess > /tmp/output && [ $(grep <error message> /tmp/outputfile) ] && pkill <process_name> || echo "No Error Occurred"

Just my one and half cents. Economy you know.

Good luck.
This User Gave Thanks to in2nix4life For This Post:
# 4  
Old 11-16-2011
You guys are great!!! Smilie))
The only thing I couldn't get to work is *pattern* (substring is needed), but I'll try to google for an example Smilie
Thanks alot
# 5  
Old 11-16-2011
*pattern* will work if you have a shell that supports it:

Code:
$ [[ "ABCDEFG" == *DEF* ]] && echo "DEF matches"
DEF matches

$ [[ "ABCDEFG" == *DJQ* ]] && echo "DJQ matches

$

If you don't, it would've been nice to know what shell you had an hour ago.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep everything between two pattern if match not found

I need to help to work this Print everything between 2 patterns if grep is not found the search word example Detroit orange cat bat rat apple sed -n "/Detroit,/apple/p" d |grep chicago output would be Detroit orange cat bat rat (1 Reply)
Discussion started by: jhonnyrip
1 Replies

2. Shell Programming and Scripting

Kill an specific process ID using the KILL and GREP commands

Good afternoon I need to KILL a process in a single command sentence, for example: kill -9 `ps -aef | grep 'CAL255.4ge' | grep -v grep | awk '{print $2}'` That sentence Kills the process ID corresponding to the program CAL255.4ge. However it is possible that the same program... (6 Replies)
Discussion started by: enriquegm82
6 Replies

3. UNIX for Dummies Questions & Answers

awk display the match and 2 lines after the match is found.

Hello, can someone help me how to find a word and 2 lines after it and then send the output to another file. For example, here is myfile1.txt. I want to search for "Error" and 2 lines below it and send it to myfile2.txt I tried with grep -A but it's not supported on my system. I tried with awk,... (4 Replies)
Discussion started by: eurouno
4 Replies

4. Shell Programming and Scripting

grep the process id and kill all the filtered process

Hi I want to write a shell script which can find the process id's of all the process and kill them eg: ps ax | grep rv_ 3015 ? S 0:00 /home/vivek/Desktop/rv_server 3020 ? S 0:00 /home/vivek/Desktop/rv_gps 3022 ? S 0:00 /home/vivek/Desktop/rv_show ... (7 Replies)
Discussion started by: vivek_naragund
7 Replies

5. UNIX for Advanced & Expert Users

How to prevent grep command from throwing a system trap if No match is found.

Hi How to prevent grep command from throwing a system trap(or returning error status) if No match is found in the specified file(s) ? Consider this simple shell script: #!/usr/bin/ksh trap 'STATUS=$?;set +x;echo;echo error $STATUS at line nb $LINENO executing :\ `sed -n... (2 Replies)
Discussion started by: cool.aquarian
2 Replies

6. Shell Programming and Scripting

Kill a process from a grep

Soz im a bit newbie... I want to do: ps -A | grep firefox | kill $1 it should kill the pid associated, but it doesnt work. $1 is the pid (if i do a awk {'print $1'} i get it ) , but kill doesnt take it as such... How can i do it? (3 Replies)
Discussion started by: ierpe
3 Replies

7. Linux

Kill a process without using kill command

I want to Kill a process without using kill command as i don't have privileges to kill the process. I know the pid and i am using Linux 2.6.9 OS. (6 Replies)
Discussion started by: sudhamacs
6 Replies

8. UNIX for Dummies Questions & Answers

Grep and display n lines after the match is found.

Hello, How do I use grep to find a pattern in a list of file and then display 5 lines after the pattern is matched Eg: I want to match the string GetPresentCode in all files in a folder and then see 4 lines following this match. I am not sure if grep is what should be used to achieve. Thanks!... (3 Replies)
Discussion started by: cv_pan
3 Replies

9. Programming

kill(0,-9) don't kill the process

Hi all i have simple c program , when i wish to kill the app im using kill(0,-9) , but it seams this command don't do any thing and the program. just ignore it . what im doing wrong here ? im using HP-UX ia64 Thanks (9 Replies)
Discussion started by: umen
9 Replies

10. UNIX for Advanced & Expert Users

When kill doesnt work, how to kill a process ?

Hi All, I am unable to kill a process using kill command. I am using HP-UX system. I have tried with kill -9 and i have root privilages. How can i terminate this daemon ? ? ? Regards, Vijay Hegde (3 Replies)
Discussion started by: VijayHegde
3 Replies
Login or Register to Ask a Question