Sponsored Content
Top Forums Shell Programming and Scripting Help with shell script handling processes Post 302967608 by Don Cragun on Thursday 25th of February 2016 02:43:29 PM
Old 02-25-2016
Quote:
Originally Posted by JackyShane_36
Thanks everyone, but I was looking for something easier. With some more dragging around I found the best way to do it without too much complexity.

Adding the code below for reference.

Code:
 
#!/bin/bash
FILE2=/usr/local/app/command_file.log
while read line; do
command=$(echo $line)
# The variable "command" is never used.  Why define it?
log=$(echo $line | awk -F'"' '{$0=$2}1')
count=$(ps aux | grep -i "tscV6Connector" | grep -v "grep" | wc -l)
# Change: grep -i "tscV6Connector" | grep -v "grep"
# in the pipeline above to: grep -i "[t]scV6Connector"
# and your script will run faster.
instance=$(echo $line | awk -F'"' '{$0=$4}1')
if [ $count -le 6 ];
then 
    echo "Running command for "$log" with name starting with "$instance"...."
    nohup "additional_command_parameters" > /usr/local/app/log/"$log"/"$log_$instance".log &
    sleep 10    #Sleep time for the extraction process.
# The variable "log_" has not been defined.  Should the output above be
# redirected to:  /usr/local/app/log/"$log/${log}_$instance.log"
    now1=$(date +'%d/%m/%Y %X');
    echo -e "*** TSO *** "$now1": Started extraction for MAGIC object type "$log" with name starting "$instance" process PID = "$!""
else 
    now2=$(date +'%d/%m/%Y %X');
    echo -e "*** TSO *** "$now2": Total MQL extraction process reached "$count"....\n*** TSO *** "$now2": waiting for previous process PID "$!" to complete"
    wait $!;    #Main wait statement when count >=7. Once wait is over, run the next command after wait.
    nohup "additional_command_parameters" > /usr/local/app/log/"$log"/"$log_$instance".log &
# See note above about ${log}_ versus $log_.
    sleep 10;    #Sleep time for the last MQL which was waiting before log files.
    now=$(date +'%d/%m/%Y %X');
# In the line above you define the variable "now".
# In the line below you use the undefined variable "now3".
    echo -e "*** TSO *** "$now3": Started extraction for MAGIC object type "$log" with name starting "$instance" process PID = "$!"\n*** TSO *** "$now3": Total number of extraction MQLs on DB are = "$count"\n"
fi
done < $FILE2

This way when 7th process is trying to start, it waits until 6th is completed and so on .....
Not necessarily. You wait for the last background job you started to finish, but it might have already completed before you counted the number of running jobs. So you could have 7 jobs running concurrently instead of 6. Should we assume that for what you are doing the difference between running 6 or 7 jobs at once doesn't really matter?
Quote:
A simple logic, works well enough Smilie Smilie Smilie

Experts are welcome to comment.

BR/
JS
Please note the comments I have added to you code in red above. Maybe you will find them useful.

You might also want to consider changing:
Code:
log=$(echo $line | awk -F'"' '{$0=$2}1')
instance=$(echo $line | awk -F'"' '{$0=$4}1')

to:
Code:
IFS='"' read -r junk log junk instance junk <<-EOF
        $line
EOF

to get rid of two invocations of awk for every line read from your input file.
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

signal handling in shell script

Hi can any please tell me is it possible to catch the signal in a shell script like we do in C. if yes please give me some idea or a link. (4 Replies)
Discussion started by: Raom
4 Replies

2. Shell Programming and Scripting

Shell script creating too many processes.

I have a shell script that I am running every 60 seconds, but it is creating this process to the point that it is causing the server to perfrom poorly. Below is my script, what can I change to prevent this? while true do java -classpath .....( all my classes here) >/dev/null 2>&1 ... (3 Replies)
Discussion started by: Miller_K
3 Replies

3. Shell Programming and Scripting

Shell script file handling

Hi ! /bin/sh set logdir1 "logDir/local/logname" #write the filename into a file echo $logdir1 >> logname.txt how do i exec the above echo command (1 Reply)
Discussion started by: nathgopi214
1 Replies

4. Shell Programming and Scripting

shell script for getting pid of spawn processes from shell

Hi, I am new this forum. I request you peoples help in understanding and finding some solution to my problem. Here it goes: I need to perform this set of actions by writing a shell script. I need to read a config file for the bunch of processes to execute. I need to fecth the pid of... (4 Replies)
Discussion started by: sachin4sachi
4 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

Help with Handling multiple argument in shell script

Hi i have written a shell script that takes only single ip address from the user and calculates its latency and reliability, can you please tell me that what should be done if i want that user should enter 100 or 1000 ip address (5 Replies)
Discussion started by: Preeti_17
5 Replies

7. Shell Programming and Scripting

Shell script executed from Informatica ETL tool is spawning 2 processes for one script

Hi, I am having a shell script which has a while loop as shown below. while do sleep 60 done I am executing this script from Informatica ETL tool command task from where we can execute UNIX commands/scripts. When i do that, i am seeing 2 processes getting started for one script... (2 Replies)
Discussion started by: chekusi
2 Replies

8. Solaris

Script on Solaris spawning 2 processes for one shell script execution

Hi, I am having a shell script on Solaris 10 which has a while loop as shown below. #!/usr/bin/ksh # while do sleep 60 done Name of the shell script is coldcentric.sh. I executed script /DATAWAREHOUSE/LOAD/Scripts/coldcentric.sh from a command task in Informatica worklow as... (3 Replies)
Discussion started by: chekusi
3 Replies

9. Shell Programming and Scripting

Wait for one processes to complete in a shell script

Let's say I start process A.sh, then start process B.sh. I call both of them in my C.sh How can I make sure that B starts its execution only after A.sh finishes. I have to do this in loop.Execution time of A.sh may vary everytime. It is a parameterized script. (17 Replies)
Discussion started by: rafa_fed2
17 Replies

10. Shell Programming and Scripting

Issue handling single quoted argument in shell script.

Below is my script that works fine and prints the desired output: #!/bin/ksh echo "$1" | while IFS= read -r dirpath do echo "DIRR_PATH:$dirpath" install_dir=$install_dir" "$dirpath done echo "Desired Output:$install_dir" Output: ./loopissue.sh... (10 Replies)
Discussion started by: mohtashims
10 Replies
All times are GMT -4. The time now is 09:21 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy