Re: Running multiple processes using trap and kill -s

2005-06-26 Thread Sammo
Here is the script:

#!/bin/bash
# multiple-processes.sh: Run multiple processes on an SMP box.

# Script written by Vernia Damiano.
# Used with permission.

#  Must call script with at least one integer parameter
#+ (number of concurrent processes).
#  All other parameters are passed through to the processes started.


INDICE=8# Total number of process to start
TEMPO=5 # Maximum sleep time per process
E_BADARGS=65# No arg(s) passed to script.

if [ $# -eq 0 ] # Check for at least one argument passed to script.
then
  echo "Usage: `basename $0` number_of_processes [passed params]"
  exit $E_BADARGS
fi

NUMPROC=$1  # Number of concurrent process
shift
PARAMETRI=( "$@" )  # Parameters of each process

function avvia() {
local temp
local index
temp=$RANDOM
index=$1
shift
let "temp %= $TEMPO"
let "temp += 1"
echo "Starting $index Time:$temp" "$@"
sleep ${temp}
echo "Ending $index"
kill -s SIGRTMIN $$
}

function parti() {
if [ $INDICE -gt 0 ] ; then
avvia $INDICE "[EMAIL PROTECTED]" &
let "INDICE--"
else
trap : SIGRTMIN
fi
}

trap parti SIGRTMIN

while [ "$NUMPROC" -gt 0 ]; do
parti;
let "NUMPROC--"
done

wait
trap - SIGRTMIN

exit $?

: < wrote:
> 2.05b.0(1)-release
> 
> I seem to be having problems with one of the examples in the Advanced
> Bash Scripting Guide [1]. The script is supposed to start a specified
> number of processes, and when each process finishes, it sends a trap
> signal, which starts a new process. I think the script is correct, but
> it's not working as expected.
> 
> This is what is happening: The first process that finishes sends a
> trap signal to $$, and a new process is started (as expected). But
> when subsequent processes try to send the trap signal, they can't find
> the process. Also, seems that the "wait" command is only waiting until
> the first process finishes, instead of waiting for all of them to
> finish.
> 
> Well, here is the output:
> 
> $ ./multiple-processes.sh 3
> Starting 8 Time:3
> Starting 7 Time:1
> Starting 6 Time:4
> Ending 7
> Starting 5 Time:4
> 
> $ Ending 8
> ./multiple-processes.sh: line 37: kill: (3944) - No such process
> Ending 6
> ./multiple-processes.sh: line 37: kill: (3944) - No such process
> Ending 5
> ./multiple-processes.sh: line 37: kill: (3944) - No such process
> 
> Please, can somebody help?!
> 
> References:
> 
> [1] Example 29-8. Running multiple processes (on an SMP box),
> http://www.tldp.org/LDP/abs/html/debugging.html#MULTIPLEPROC
>


___
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash


Running multiple processes using trap and kill -s

2005-06-26 Thread Sammo
2.05b.0(1)-release

I seem to be having problems with one of the examples in the Advanced
Bash Scripting Guide [1]. The script is supposed to start a specified
number of processes, and when each process finishes, it sends a trap
signal, which starts a new process. I think the script is correct, but
it's not working as expected.

This is what is happening: The first process that finishes sends a
trap signal to $$, and a new process is started (as expected). But
when subsequent processes try to send the trap signal, they can't find
the process. Also, seems that the "wait" command is only waiting until
the first process finishes, instead of waiting for all of them to
finish.

Well, here is the output:

$ ./multiple-processes.sh 3
Starting 8 Time:3
Starting 7 Time:1
Starting 6 Time:4
Ending 7
Starting 5 Time:4

$ Ending 8
./multiple-processes.sh: line 37: kill: (3944) - No such process
Ending 6
./multiple-processes.sh: line 37: kill: (3944) - No such process
Ending 5
./multiple-processes.sh: line 37: kill: (3944) - No such process 

Please, can somebody help?!

References:

[1] Example 29-8. Running multiple processes (on an SMP box),
http://www.tldp.org/LDP/abs/html/debugging.html#MULTIPLEPROC


___
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash