Background tasks in a loop (bash)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Background tasks in a loop (bash)
# 1  
Old 03-24-2011
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 &.
Code:
FOLDSET=( 0 1 2 3 )

for FOLDSET in ${FOLDSET[@]}
do
   if [ $FOLDSET -lt 3 ]; then
     BACKGRD="&"
   else
     BACKGRD=""
   fi
   # start task $FOLDSET
   task1 -nogui -ni -p $PROJ \
      epochs=$EPOS  batches=$BATCH  n_threads=$THRD \
      arch=$ARCH  data_set=$DSET  fldTag=f$FOLDSET  $BACKGRD
done

I am truing to append & to the first three task (0,1,2), but not have & after the 4th. This will pause the script after task 4 and wait for it to finish before moving on. This is not working. I have tried & with and without the quotes with no difference. The code starts a four tasks, but in sequence instead of simultaneously.

Any suggestions, or am I going about this all wrong.

LMHmedchem

Last edited by LMHmedchem; 03-24-2011 at 09:48 PM..
# 2  
Old 03-24-2011
Code:
task1 -nogui -ni -p $PROJ \
      epochs=$EPOS  batches=$BATCH  n_threads=$THRD \
      arch=$ARCH  data_set=$DSET  fldTag=f$FOLDSET  $BACKGRD &

# 3  
Old 03-25-2011
Quote:
Originally Posted by Corona688
Code:
task1 -nogui -ni -p $PROJ \
      epochs=$EPOS  batches=$BATCH  n_threads=$THRD \
      arch=$ARCH  data_set=$DSET  fldTag=f$FOLDSET  $BACKGRD &

$BACKGRD has the value of "&" for the first three time through the loop, but apparently that doesn't work.

I can probably do this like ,
Code:
FOLDSET=( 0 1 2 3 )

for FOLDSET in ${FOLDSET[@]}
do
   if [ $FOLDSET -lt 3 ]; then
      # start the first three in the background
      task1 -nogui -ni -p $PROJ \
         epochs=$EPOS  batches=$BATCH  n_threads=$THRD \
         arch=$ARCH  data_set=$DSET  fldTag=f$FOLDSET &
   else
      # wait on the last one
      task1 -nogui -ni -p $PROJ \
          epochs=$EPOS  batches=$BATCH  n_threads=$THRD \
          arch=$ARCH  data_set=$DSET  fldTag=f$FOLDSET
   fi
done

unless there are other/better suggestions.

LMHmedchem
# 4  
Old 03-25-2011
Quote:
Originally Posted by LMHmedchem
$BACKGRD has the value of "&" for the first three time through the loop, but apparently that doesn't work.
Remove $BACKGROUND and put a real & there, then.
Quote:
unless there are other/better suggestions.
Put them all in the background, then use the wait builtin to wait for all your background processes to finish.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script parallel tasks and command to wait untill complete?

Hello, im having bash script with while *** command1 && command2 && command3 && done i want to ask how i can prevent overloading server, by waiting untill all commands complete? any low resources intensive command like "wait" - i dont know if exist? (2 Replies)
Discussion started by: postcd
2 Replies

2. Shell Programming and Scripting

While loop hangs in function running in background

Hello Everyone, I am writing a shell script to fetch log files from remote servers within a time range. It copies log files to local server, grep for date and then compares the time stamp of each log entry with the once specified. Below is the code. # Get log and Parsing function ... (1 Reply)
Discussion started by: kanagalamurali
1 Replies

3. UNIX for Dummies Questions & Answers

How to make entries background tasks in the table?

Hi am new to unix , when the background task is running how to put entry in the table and also if there is any issue how to stop the running task. can anyone help me... (1 Reply)
Discussion started by: Venkatesh1
1 Replies

4. Shell Programming and Scripting

Doing multiple tasks in a loop.

I am in the process of updating a folder of hundreds of recipe html files. I've already managed to modify a number of things in each file but I have run into something that's beyond my ability. I have a text file that I need to insert the contents into the html at a specific point. It creates... (0 Replies)
Discussion started by: Trapper
0 Replies

5. Shell Programming and Scripting

How to check background tasks status, if fail report

Hi, I have a requirement where I want to submit appx 100 jobs based on the files received. Assume today I received source file for 50 jobs, then I have submit a common script at 50 times. This common script will take appx 1-2 mins to finish. I can' complete my parent script untill all the... (1 Reply)
Discussion started by: meetvipin
1 Replies

6. Shell Programming and Scripting

kill PID running in background in for loop

Guys, can you help me in killing the process which is running in back ground under for loop I am not able to find the PID using ps -afx|grep <word in command I entered> (1 Reply)
Discussion started by: mohan_xunil
1 Replies

7. Shell Programming and Scripting

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... (12 Replies)
Discussion started by: jville
12 Replies

8. Shell Programming and Scripting

Repetitive Tasks: using if..then inside a loop

I thought I was getting pretty good with Bash but this problem is stumping me. Any suggestions would be greatly appreciated. I've written a firewall script that uses a lot of functions. The variables are read into the script from another .conf file earlier on in the code. Most of these... (2 Replies)
Discussion started by: garak
2 Replies

9. Shell Programming and Scripting

background problem in while loop

file 005: trap 'echo "\nInterrupcion recibida.Saliendo\n\n" ; exit 0 ' 2 9 15 while true do ./005.aux & done 005.aux: trap 'exit 0' 2 9 15 sleep 30 exit 0 The error ocurrs if i try to execute 005.aux in background. How could i resolve it? Thanks :cool: (7 Replies)
Discussion started by: Jariya
7 Replies
Login or Register to Ask a Question