Sponsored Content
Full Discussion: Achive "NOT RUN PARALLEL"
Top Forums Shell Programming and Scripting Achive "NOT RUN PARALLEL" Post 302880948 by Don Cragun on Wednesday 25th of December 2013 12:47:15 AM
Old 12-25-2013
You could write a script that will run the other SB, SA, SC, and SD guaranteeing that SA completes before SC and SD start, allowing SB, SC, and SD to run in parallel, and guaranteeing that only one copy of the script runs at a time without modifying SA, SB, SC, or SD. One way to do this is:
Code:
#!/bin/ksh
# The following cd command must specify an absolute pathname to run it from cron.
cd '/directory/where/this/script/should/run'
IAm=${0##*/}
Lock="$IAm.lock"
set -C  # Generate error if redirection target exists.
# Create lock file, if it does not exist...
if ! date "+$IAm started %x at %X with PID $$" > "$Lock"
then    # Exit if the lock file already existed...
        printf "%s: Error: Another copy of this script is already running.\n" \
                "$IAm" >&2
        cat "$Lock" >&2
        exit 1
fi
trap 'rm -f "$Lock"' 0    # Set trap to remove the lock file on exit.
set +C
./SB&           # Start SB
./SA&           # Start SA
SApid=$!        # Get pid of SA
wait $SApid     # wait for SA to finish
./SC& ./SD&     # Start SC and SD
wait            # wait for SB, SC, and SD to finish

Note that when started by cron, your environment will not be initialized as it would be if you had logged in and started it from your shell. If SA, SB, SC, and SD need to have any environment variables set, you will need to set those variables in the start of this script before they are invoked.

This script exits if another copy of the script is still running. If you want it to enter an idle loop until the prior script completes, you can replace the if, then, else with a while, do, done and the exit with a sleep.

This script was tested with both ksh and bash. The way it sets $IAm will not work with an original Bourne shell. (There may also be other standard features used by this script that the Bourne shell does not support.)
This User Gave Thanks to Don Cragun For This Post:
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Run away "bootpgw" & "inetd"

Hello All. I'm get the following messages posted to the /var/adm/syslog file ever second and not sure on how to stop the process. May 14 15:50:52 a3360 bootpgw: version 2.3.5 May 14 15:50:52 a3360 inetd: /etc/bootpgw exit 0x1 As said about this gets logged every second only thing that... (4 Replies)
Discussion started by: cfaiman
4 Replies

2. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

3. Shell Programming and Scripting

catalina.sh : need combination from "start" and "run"

heya, can someone help me with following problem. i am not sure how far you know the catalina.sh script from tomcat. when i start my tomcat with "catalina.sh run" then the startup-process-output will be printed out on the console, but the tomcat process is started in current shell/session, so... (1 Reply)
Discussion started by: Filly
1 Replies

4. UNIX for Dummies Questions & Answers

Slow printing / CUPS - process "parallel" high cpu

Hello. I have a slackware system running cups with an HP laserJet 2100 connected via parallel port in ECP mode. Print jobs are working. Very slowly. 15K test print out of cups takes about 2 minutes to complete. When the printout is on the way to the printer, the process "parallel" uses... (0 Replies)
Discussion started by: agentrnge
0 Replies

5. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

6. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

7. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

8. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

9. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies
RUN-PARTS(8)						      System Manager's Manual						      RUN-PARTS(8)

NAME
run-parts - run scripts or programs in a directory SYNOPSIS
run-parts [--test] [--verbose] [--report] [--lsbsysinit] [--regex=RE] [--umask=umask] [--arg=argument] [--exit-on-error] [--help] [--ver- sion] [--list] [--reverse] [--] DIRECTORY run-parts -V DESCRIPTION
run-parts runs all the executable files named within constraints described below, found in directory directory. Other files and directo- ries are silently ignored. If neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of ASCII upper- and lower-case let- ters, ASCII digits, ASCII underscores, and ASCII minus-hyphens. If the --lsbsysinit option is given, then the names must not end in .dpkg-old or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong to one or more of the following namespaces: the LANANA-assigned namespace (^[a-z0-9]+$); the LSB hierarchical and reserved namespaces (^_?([a-z0-9_.]+-)+[a-z0-9]+$); and the Debian cron script namespace (^[a-zA-Z0-9_-]+$). If the --regex option is given, the names must match the custom extended regular expression specified as that option's argument. Files are run in the lexical sort order (according to the C/POSIX locale character collation rules) of their names unless the --reverse option is given, in which case they are run in the opposite order. OPTIONS
--test print the names of the scripts which would be run, but don't actually run them. --list print the names of the all matching files (not limited to executables), but don't actually run them. This option cannot be used with --test. -v, --verbose print the name of each script to stderr before running. --report similar to --verbose, but only prints the name of scripts which produce output. The script's name is printed to whichever of stdout or stderr the script first produces output on. --reverse reverse the scripts' execution order. --exit-on-error exit as soon as a script returns with a non-zero exit code. --lsbsysinit use LSB namespaces instead of classical behavior. --new-session run each script in a separate process session. If you use this option, killing run-parts will not kill the currently running script, it will run until completion. --regex=RE validate filenames against custom extended regular expression RE. See the EXAMPLES section for an example. -u, --umask=umask sets the umask to umask before running the scripts. umask should be specified in octal. By default the umask is set to 022. -a, --arg=argument pass argument to the scripts. Use --arg once for each argument you want passed. -- specifies that this is the end of the options. Any filename after -- will be not be interpreted as an option even if it starts with a hyphen. -h, --help display usage information and exit. -V, --version display version and copyright and exit. EXAMPLES
Print the names of all files in /etc that start with `p' and end with `d': run-parts --list --regex '^p.*d$' /etc COPYRIGHT
Copyright (C) 1994 Ian Jackson. Copyright (C) 1996 Jeff Noxon. Copyright (C) 1996, 1997, 1998 Guy Maor Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Clint Adams run-parts is free software; see the GNU General Public License version 2 or later for copying conditions. There is no warranty. Debian 27 Jun 2012 RUN-PARTS(8)
All times are GMT -4. The time now is 10:23 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy