Cover V01, I02
Article
Listing 1
Listing 2
Listing 3
Listing 4

jul92.tar


Listing 1

1: #
2: # bgrun.sh/bgrun2.sh (linked):
3: #   Run a process in the background.
4: #
5: # Written by Leor Zolman, 7/90
6: #
7: # Formal usage:
8: #   bgrun.sh outfile [ -l lockfile ]
9: #   bgrun2.sh outfile [ -l lockfile ] 2>errorfile
10: #
11: # Takes script to be executed from standard input.
12: #   bgrun.sh: stdout and stderr written to outfile.
13: #   bgrun2.sh: stdout written to outfile, stderr passed (to errorfile)
14: #
15: # If BGTEST environment variable is "Y", creates the script file in
16: # the current directory for debugging and does not remove it after execution.
17: #
18: # example:
19: #
20: #   bgrun.sh /tmp/output <<END
21: #       echo this is a test of background processing
22: #       l
23: #       echo this is the end.
24: #   END
25: #
26: # WARNING!!!!! Remember to escape special characters ( $, `) that


27: #              must be interpreted in the background scripts!
28: #
29:
30: if [ "$BGTEST" = Y ]; then
31:     debug=Y
32: else
33:     debug=N
34: fi
35:
36: if [ $# -ne 1 -a $# -ne 3 ]; then       # check for proper usage
37:     echo usage: $0 outfile  [-l lockfile]
38:     exit
39: fi
40:
41: trap "rm $script; exit 1" 1 2 3 9 14 15
42:
43: if [ $debug = Y ]; then
44:     script=script                       # debug script in current directory
45: else
46:     script=`tmpname bg`                 # place script in /tmp diretory
47: fi
48:
49: if [ $# -eq 3 ]; then
50:     case $2 in
51:       -l|-L)
52:         echo "trap \"rm $script; rm $3; exit 1\" 1 2 3 9 14 15" >$script;;
53:       *)
54:         echo "usage: $0 outfile  [-l lockfile]"
55:         exit 1;;
56:     esac
57: else
58:     echo "trap \"rm $script; exit 1\" 1 2 3 9 14 15" >$script
59: fi
60:
61: cat >>$script                           # copy std input into the script file
62:
63: [ $debug = N ] && cat >>$script <<-END  # and append a "selfdestruct" to
64:     rm $script                          # remove the script after execution
65: END
66: chmod +x $script                        # make the script executable
67:
68: [ -f $1 ] && rm $1                      # erase old output file, if any
69:
70: cat </dev/null >$1                      # ensure output file is writeable
71: chmod 666 $1                            # (i.e., erasable) by everyone, to
72:                                         # allow public output files
73:
74: unset redirerr
75: [ $0 = bgrun.sh ] && redirerr="2>&1"    # If bgrun.sh, direct stderr to stdout
76: nohup $script >>$1 $redirerr &          # execute script (immune to hangup)