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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to add conditional check of whether a process is running before doing rest of script?
# 8  
Old 09-16-2013
Quote:
Originally Posted by nbsparks
So, can I still pipe (>>) after a process run in background?
That is not a pipe, that's a file redirection. | is a pipe.

And yes,
Code:
# Automatically append stdout to this file
exec 1>>/home/mcmaps/scripts/overviewer.log

That opens the file once in advance and attaches it to stdout, so you don't need to reopen-append the same file 17 times in a row later.

Anything you run inherits the same set of open files as the shell you're running. This is why they all print to the same screen. Change the shell's own "screen" (i.e. standard output, stdout, or file descriptor #1) into a file, and they'll all write to that file.
This User Gave Thanks to Corona688 For This Post:
# 9  
Old 09-16-2013
Wow... Thank you so much. I have a ton of reading to do now to benefit from all that you have taught me today.
# 10  
Old 09-17-2013
Two comments
1.
In order to recover from a system crash the pidfile should reside in a file system that is emty or emptied at system boot.
2.
Collecting output from a background process can become garbled, especially if mixed with another stream like the foreground echo at the end.
# 11  
Old 09-17-2013
Quote:
Originally Posted by MadeInGermany
Two comments
1.
In order to recover from a system crash the pidfile should reside in a file system that is emty or emptied at system boot.
The program logic doesn't just blindly check if the file exists, it checks if it exists and is valid.

Quote:
2.
Collecting output from a background process can become garbled, especially if mixed with another stream like the foreground echo at the end.
It will not become garbled here due to printing before the process exists and after it quits and nowhere inbetween.
# 12  
Old 09-17-2013
1.
a different process can run with that PID...
Maybe the ps $PID is safe enough on earth but not on a mars mission.
# 13  
Old 09-21-2013
Hi everyone,

So the thread so far has left me confused. So I kept digging. If found some code and modified it to this:
Code:
if ps -u mcmaps | grep 'overviewer.py'
then
     echo Running
else
     echo Not Running
fi

So far, this works. The "overviewer.py" is only run from the mcmaps user. And when it is currently running, the script above reports "Running." When it's not running, it accurately states, "Not Running" (so far).

So, would this work? What are the dangers of this?

Here is what I would do for the final script (if people say it would be safe enough):
Code:
if ps -u mcmaps | grep 'overviewer.py'
then
     echo overviewer.py is already running.
else
     overviewer.py --verbose --quiet --processes 1 --config=/home/mcmaps/servers/bukkitpvt/overviewer.conf 
fi

The idea here is that I run the script as a cron job every 30 minutes. And most of the time, it completes in 10 minutes or less. But if there were a lot of changes for the overviewer.py to work on, the script could take 30+ minutes. In which case, I want the script to exit out and wait for the next scheduled cron job event to run rather than trying to run two instances over overviewer.py.

Am I on the right track? Is this way of doing it flawed?
# 14  
Old 09-23-2013
That's another way to do it.
The ps command lists many processes, but with-u mcmaps the overhead is small.
There might be the problem that ps cuts the overviewer.py to say overview. Run the ps command on the command line to find out!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Web Development

Javascript to check field is empty then execute rest of script

I have found this bit of code that nearly does what I want. Basically 3 input fields, I want to copy t2 to t3 as it's typed but only if t1 contains data AND t3 is empty: <input type="text" id="t1" /> <input type="text" id="t2" /> <input type="text" id="t3" /> <script> var t2 =... (4 Replies)
Discussion started by: barrydocks
4 Replies

2. Shell Programming and Scripting

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/^*//';sleep 60;done but I want the script to do it for me and as soon as... (6 Replies)
Discussion started by: seekryts15
6 Replies

3. 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

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. Programming

How do I check if a process is running in C

How to I check if a process is running in C? I'm trying to use ps aux |grep "process name" but failing in doing that. How do I do that? Thanks, (1 Reply)
Discussion started by: cprogdude
1 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