background processing in BASH


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting background processing in BASH
# 1  
Old 04-27-2009
background processing in BASH

I have script 3 scripts 1 parent (p1) and 2 children child1 and child2

I have script 3 scripts
1 parent
2 children
child1
child2

In the code below the 2 child processes fire almost Instantaneously in

the background, Is that possible to know the status of pass/fail of each
process "as it happens" ?

In the present scenario although Child2 failed first ( exit 1 ) the status is not displayed until Child1 is complete.

I would really apprecitate your help.


Mother Process:
--------------------------------------


#!/bin/bash

echo -e " Parent continued process 1"
echo -e " Parent continued process 2"
echo -e " ** Kicking off a child process C1** "
./child1 &
t1=$!
echo -e " Parent continued process 3"
echo -e " Parent continued process 4"
echo -e " ** Kicking off a child process C2** "
./child2 &
t2=$!

wait $t1
if [ $? -ne 0 ]
then
echo " Child Process C1 failed !!! "
fi

wait $t2
if [ $? -ne 0 ]
then
echo " Child Process C2 failed !!! "
fi

exit 0

-------------------------------------

Child1
------
#!/bin/bash
echo -e " in child process 1 "
sleep 2
echo -e " in child process 2 "
sleep 2
echo -e " in child process 3 "
sleep 7
exit 0 # success


Child2
------
#!/bin/bash
echo -e " in child process 4"
echo -e " in child process 5"
echo -e " in child process 6"
exit 1 # failed


Thanks,
SSR.Smilie
# 2  
Old 04-27-2009
PHP Return results from child processes

Why not create a file, pipe the child process output to the file, and read the results FROM the file after the child exits? The basic technique is ancient, easy, and portable over many operating systems.
# 3  
Old 04-27-2009
is there a way besides that ?
# 4  
Old 04-27-2009
Other ways

This is bash we are talking about, there are ALWAYS other ways!

One might be to write a pipe for each child process, let the child feed its pipe, and let the parent read them. This is WAY overkill for your example, and there are opportunities for failure, but I have used it successfully. Google for examples.

You might consider defining the child processes as functions instead of scripts, then you do not have the extra I/O.
# 5  
Old 04-27-2009
this is just a prototype here, but in real world these are different scripts which are running. How feasible is it to be defined as a function ?
# 6  
Old 04-27-2009
Functions

That depends upon what the final scripts will hold and use, how much data end/or environment they need to have in common with the parent, etc. If they are short and simple extensions of what you already have then they make good functions. If they are extensive or do many things, you may be better off leaving them scripts.

Is there some reason that you do not want to use files? I have used the technique for recursive scripts that ran dozens of copies for very short periods of time to gather lots of information very quickly: it works!
# 7  
Old 04-28-2009
The only problem I see with using files is I have to add lines to the child scripts to write a status to a log which my main process keeps reading.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Help] Bash script that runs in the background and checks for mails...

Hello! I have got a homework. The bash script runs in the background and checks the user's mailbox and when the user gets a new mail a popup window appears with some text and information about the sender (from who and when).I have no idea how to start, any help would be appreciated! Thank you:) (1 Reply)
Discussion started by: capo2ndfret
1 Replies

2. Shell Programming and Scripting

Plink (processing multiple commands) using Bash

I'm completely brand new to bash scripting (migrating from Windows batch file scripting). I'm currently trying to write a bash script that will automatically reset "error-disabled" Cisco switch ports. Please forgive the very crude and inefficient script I have so far (shown below). It is... (10 Replies)
Discussion started by: MKANET
10 Replies

3. Shell Programming and Scripting

Parallel processing in bash?

Hi Say I am interested in processing a big data set over shell, and each process individually takes a long time, but many such processes can be pipe-lined, is there a way to do this automatically or efficiently in shell? For example consider pinging a list addresses upto 5 times each. Of... (5 Replies)
Discussion started by: jamie_123
5 Replies

4. Shell Programming and Scripting

Suppress a background message in Bash

I'm having trouble with part of this bash script in Linux where I respawn a new instance of script and kill the old one to prevent forking (Yes, I know 'exec' will not fork but this needs to be interactive) When the old instance is kill it pops up "Terminated!" in the middle of the new instance... (7 Replies)
Discussion started by: Azrael
7 Replies

5. Shell Programming and Scripting

BASH - Handling background processes - distributed processing

NOTE: I am using BASH and Solaris 10 for this. Currently in the process of building a script that has a main "watcher" daemon that reads a configuration file and starts background processes based on it's global configuration. It is basically an infinite loop of configuration reading. Some of the... (4 Replies)
Discussion started by: dcarrion87
4 Replies

6. Shell Programming and Scripting

Background tasks in a loop (bash)

I am trying to use a loop to start tasks 0-3, running 0,1,2 in the background with &. FOLDSET=( 0 1 2 3 ) for FOLDSET in ${FOLDSET} do if ; then BACKGRD="&" else BACKGRD="" fi # start task $FOLDSET task1 -nogui -ni -p $PROJ \ epochs=$EPOS ... (3 Replies)
Discussion started by: LMHmedchem
3 Replies

7. Programming

Unix Shell background processing

So I made my own unix shell, but i want to make a background process when using the & appended to the end, so far most of the commands seem to work (except cd, but thats another story) right now here is what I have got. Im thinking maybe I shouldn't be using switch and maybe switch it to... (27 Replies)
Discussion started by: Mercfh
27 Replies

8. Shell Programming and Scripting

bash tee and background threads

Running centos 2.6, I have a bash script in which I'd like to run a number of background threads in parallel, tee'ing the results of the entire script to one file, while tee'ing the result of each background thread to another. Here's what I'm doing, where the number of csv files control the... (1 Reply)
Discussion started by: heatlamp
1 Replies

9. Linux

background processing in BASH

I have script 3 scripts 1 parent 2 children child1 child2 In the code below the 2 child processes fire almost Instantaneously in the background, Is that possible to know the status of pass/fail of each process "as it happens" ? In the present scenario although Child2... (5 Replies)
Discussion started by: jville
5 Replies

10. Solaris

Best practice to run bash script in background

nohup /bin/bassh $HOME/scripts/test.sh > $HOME/log/test.log 2>&1 & nohup $HOME/scripts/test.sh > $HOME/log/test.log 2>&1 & Which is the good practice to run a script in background of above two ? does the first one will have any overhead on the system ? our system is SunOS 5.10... (2 Replies)
Discussion started by: mmasals
2 Replies
Login or Register to Ask a Question