ksh script to check if certain process is running


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting ksh script to check if certain process is running
# 1  
Old 12-27-2014
ksh script to check if certain process is running

I have to kill the process "test" for a maintenance I do but want the script to check when it comes back up.

I can get what I want when I run this while loop:
while true;do ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//';sleep 60;done

but I want the script to do it for me and as soon as the process is found I would like for it to exit. Please advise.

---------- Post updated at 02:43 AM ---------- Previous update was at 12:57 AM ----------

Nevermind I was able to figure it out.

Code:
TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`

echo
echo
echo "\033[1;37 \033[1mAs soon as Test processes comes back up it will appear below:\033[0m\n"

until [[ -n $TESTSTATUS ]];do ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//';done

# 2  
Old 12-27-2014
Your loop will never finish as TESTSTATUS will not change its state as it's not reassigned.
This User Gave Thanks to RudiC For This Post:
# 3  
Old 12-27-2014
A simple "waitforit" script I use is
Code:
while [[ -z "${PIDS}" ]]; do
    sleep 30
    PIDS=$(pgrep "${*}")
done

ps -fp ${PIDS}

which is called as:
Code:
waitforit command

Just make sure pgrep can find the process.
# 4  
Old 12-29-2014
Ah yes you are correct. It just keeps going. How would I go about reassigning the variable?
# 5  
Old 12-29-2014
By changing:
Code:
TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`

echo
echo
echo "\033[1;37 \033[1mAs soon as Test processes comes back up it will appear below:\033[0m\n"

until [[ -n $TESTSTATUS ]];do ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//';done

to:
Code:
TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`

echo
echo
echo "\033[1;37 \033[1mAs soon as Test processes comes back up it will appear below:\033[0m\n"

until [[ -n $TESTSTATUS ]];do TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`;done

Note that this will eat up a LOT of CPU cycles until your condition is met. Other people trying to get work done on your system (including those trying to start the process you're looking for) might be a lot happier if you at least stick a one second delay in your loop:
Code:
TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`

echo
echo
echo "\033[1;37 \033[1mAs soon as Test processes comes back up it will appear below:\033[0m\n"

until [[ -n $TESTSTATUS ]];do sleep 1;TESTSTATUS=`ps -ef | grep test | grep -v grep | sed -e 's/^[ \t]*//'`;done

This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 12-29-2014
Thank you! You've done it again Don! Smilie
# 7  
Old 12-29-2014
The following is most efficient; works in Linux and Solaris
Code:
pid=`pgrep test` &&
while [ -d /proc/$pid ]
do
 sleep 1
done


Last edited by MadeInGermany; 12-29-2014 at 01:46 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to add conditional check of whether a process is running before doing rest of script?

Hi, I'm looking at doing a cron job for a script that could take a very short time to complete or a very long time to complete based on variable activity on a server. I don't want to do a weird schedule, but I don't want to be so aggressive that the process attempts to start before another... (14 Replies)
Discussion started by: nbsparks
14 Replies

2. UNIX for Dummies Questions & Answers

How a process can check if a particular process is running on different machine?

I have process1 running on one machine and generating some log file. Now another process which can be launched on any machine wants to know if process1 is running or not and also in case it is running it wants to stream the logs file generated by process1 on terminal from which process2 is... (2 Replies)
Discussion started by: saurabhnsit2001
2 Replies

3. Shell Programming and Scripting

Script in KSH to check if a process its up or down.

Hi all! Im working on a simple script in KSH (just started) to check if a process its up or down, but im kind of lost with the following error. Script: #!/usr/bin/ksh psup=$(ps -ef | grep sftp | egrep -v grep | wc -l) if ($psup > 0); then echo "Process SFTP running" else ... (6 Replies)
Discussion started by: ARSport
6 Replies

4. Shell Programming and Scripting

Simple Script to Check running Process

#!/bin/sh CHECK='ps aux | grep start.jar | grep -v grep | wc -l' if then /usr/local/jre-1.7.0/bin/java - jar start.jar & else fi Could anybody advise whats up with this code im trying to put this in as a cron job to check that solr search engine is running every 10secs and if... (10 Replies)
Discussion started by: will_123
10 Replies

5. Shell Programming and Scripting

Script to check running of process

Hi, Can anyone please tell me how to write a shell script to check whether a process if running or not.... if its still running then wait for sometime and if not then run the next query. Also, Under my one main script main.sh I have to run 2 scripts simutaneously which take some time to... (2 Replies)
Discussion started by: lovepujain
2 Replies

6. UNIX and Linux Applications

How to check if process is running?

Hi I would like to check if an instance of a script is already running. I've seen many different examples, but I haven't the slightest idea as to how to do this. Can you please help. Thank you. (5 Replies)
Discussion started by: ladyAnne
5 Replies

7. Shell Programming and Scripting

How to write an expect script to check if a process is running?

I'm new to expecting and i want to create a script to ssh to a device,check is a process is running and display that the process is running or not.This is what i have so far After executing this script i get an error. #!/usr/bin/expect set timeout -1 set ip "machine ip goes here" set... (5 Replies)
Discussion started by: icchi
5 Replies

8. Shell Programming and Scripting

script to check if process is running

How do I make a shell script to see if a certain process is running. The process shows up on ps aux as /usr/sbin/daemon eg: if /usr/sbin/daemon else #nothin basically i want to run the process if it isnt running/ has been stopped. Thanks. (2 Replies)
Discussion started by: daydreamer
2 Replies

9. UNIX for Advanced & Expert Users

how to check if a process is running in a server from shell script.

I want to write a unix shell script that will check if a process (say debu) is running in the server or not. If no , then send a mail to the corresponding person to start the process??? (2 Replies)
Discussion started by: debu
2 Replies

10. Shell Programming and Scripting

script to check for a particular process and alert if its not running

Hai Friends, I have to develop a script that checks for a particular process say x.exe once every day and report if its not running say through a blat mail. I need this to run in a given list of pc from a single point. Any suggestion of how to go abt this Thnx for any help (1 Reply)
Discussion started by: goks
1 Replies
Login or Register to Ask a Question