[Solved] Looking for script running before I run script again


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [Solved] Looking for script running before I run script again
# 1  
Old 04-25-2012
[Solved] Looking for script running before I run script again

Good afternoon!

I have a script in cron that runs every ten minutes. Normally it only takes a minute or so to complete. However there are times when the amount of data it is looking at is large, and it has taken 20 minutes.

So I want for it to look for the script before it starts.

I was going to put something like this in the beginning"

Code:
ps -ef | grep "stats.sh" | grep -v "grep"

And if it found a process, then it will just exit. Otherwise, it will continue on like normal. My thought process is that this runs every ten minutes and if there is something going on that is causing it take longer than 10 minutes (or really 7 or 8) then they won't all stack up running at the same time.

It is on the tip of my brain, but I can't seem to find it.

I was thinking of doing this,

Code:
ps -ef | grep "stats.sh" | grep -v "grep" > /var/tmp/stats.tmp
namedtmp=/var/tmp/stats.tmp
if [ -s $namedtmp ]
then
exit
else
then continue on with script
fi

What do you think? Any suggestions?

This is causing a problem, because at one time it took up all of the CPU and memory and nobody could log in via SSH even.
# 2  
Old 04-25-2012
Code:
pidfile=/var/tmp/stats.pid

# exit if another is running
[ -e "$pidfile" ] && exit

# create pid file
echo $$ >"$pidfile"

# delete pid file on exit (may have to do this definitely depending on shell)
trap "rm $pidfile" EXIT

These 2 Users Gave Thanks to neutronscott For This Post:
# 3  
Old 04-25-2012
or if you have 'fuser' - there're many ways to skin that proverbial 'cat':
Code:
#!/bin/ksh

myPID="$$"
echo "My pid->[${myPID}]"
FUSERout=$(${FUSER} $0 2>/dev/null)
echo "fuser ->[${FUSERout}]"
numProc=$(echo "${FUSERout}" | nawk '{print NF}')
if [ "${numProc}" -gt 1 ]; then
   echo "[$0]: is ALREADY running - bailing..."
   exit
fi

....
here goes the rest of your script

# 4  
Old 04-25-2012
I use something very my like neutronscott's solution myself.

It can be worth adding a check for "stale" pidfiles left around after a reboot, or kill of the process. Something like this:

Code:
if [ -e "$pidfile" ]
then
    [ -d /proc/$(cat "$pidfile") ] && exit
    echo "Removing stale pidfile: $pidfile"
    rm -f "$pidfile"
fi

# 5  
Old 04-25-2012
Quote:
Originally Posted by Chubler_XL
I use something very my like neutronscott's solution myself.

It can be worth adding a check for "stale" pidfiles left around after a reboot, or kill of the process. Something like this:

Code:
if [ -e "$pidfile" ]
then
    [ -d /proc/$(cat "$pidfile") ] && exit
    echo "Removing stale pidfile: $pidfile"
    rm -f "$pidfile"
fi

That's also a good idea, but a more portable (read: non-linux) approach would be with kill -0 $(cat "$pidfile") && exit.
# 6  
Old 04-26-2012
Quote:
Originally Posted by neutronscott
Code:
pidfile=/var/tmp/stats.pid

# exit if another is running
[ -e "$pidfile" ] && exit

# create pid file
echo $$ >"$pidfile"

# delete pid file on exit (may have to do this definitely depending on shell)
trap "rm $pidfile" EXIT

Thanks Scott! That is working like I had hoped.
# 7  
Old 04-26-2012
try this at begning of the script


Code:
p_count=`ps -ef | grep process.sh | grep -v "grep" | wc -l`
if test $p_count -le 1
then

your script

else
echo "Script is Already Running with Another User,Please try after some time"


it will work
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] Running a R script with in a shell script

Hi, I do have an R script named KO.R. Basically reads thousands of files, whose name has a pattern that differs at a portion of the file name, List.txt. Row_file1_mile.txt Row_file2_mile.txt Row_file3_mile.txt ... ... Row_file1000_mile.txt Below is a portion of my Rscript that reads... (4 Replies)
Discussion started by: Kanja
4 Replies

2. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

3. Shell Programming and Scripting

[Solved] The SCRIPT command - Can we see the log file of a running session?

Hello. This is my situation. script .anything ls -l . ---How can I see the content of .anything using (i.e) cat .anything? If not possible can someone suggest a sequence to simulate a console-recorder to "observ" from a RUNNING script session? Thanks Paolo Please use code tags... (3 Replies)
Discussion started by: paolfili
3 Replies

4. UNIX for Dummies Questions & Answers

[Solved] How to Check if a script is running?

Hi All, I am new to Unix... Can you please let me know how we can check if a script is running or not on Solaris box? (4 Replies)
Discussion started by: Rahul466
4 Replies

5. Shell Programming and Scripting

run shell script under nohup directly [solved]

Hi, i am not able to run the loop in nohup directly. nohup 'for i in $(seq 10); do echo $i;./mscript.sh $i; done' can some one help me how to run this directly in nohup? ---------- Post updated 03-15-12 at 12:20 AM ---------- Previous update was 03-14-12 at 11:59 PM ---------- From... (0 Replies)
Discussion started by: johninweb
0 Replies

6. Shell Programming and Scripting

Run perl command in script[solved]

Hi all, When I put the Perl command in a script, I got error. system("perl -pi -e 's@words@words@g' myFile"); The error is: Unrecognized character \x8A; marked by <-- HERE after دت مد�<-- HERE near column 15 at -e line 1. Thanks in advance. ---------- Post updated at 06:30 AM... (0 Replies)
Discussion started by: Lham
0 Replies

7. Shell Programming and Scripting

[Solved] Help with running ps -e | less on nano script editor

p { margin-bottom: 0.08in; } This is just a portion of a script I'm writing on Linux nano script editor. When I run the script I get stuck on the ps -e | less command portion of the script:wall:. It displays all the process running but it does not allow me to move to the next line on the script.... (2 Replies)
Discussion started by: SANA4SPA
2 Replies

8. Shell Programming and Scripting

Script not running properly when run from Crontab

Hi I am a novice Linux/Perl user and am struggling to overcome what I am sure is a simple problem. I am using a perl program to create a shell script daily containing between 10 and 30 "at -f" commands for the same day. Then I change the file attributes to allow the file to be executed. When... (2 Replies)
Discussion started by: simoncjones
2 Replies

9. Shell Programming and Scripting

Running script that sends an html formatted email fails when its run as cronjob

Hi Im very new at working with unix and this problem I simply can not understand. I know there are a lot of threads about problems with shell scripts behaving differently when run from a terminal and from a cronjob. I have tried everything(almost) but I still havent cracked this problem. Im... (15 Replies)
Discussion started by: Nightowl
15 Replies
Login or Register to Ask a Question