Text 135, 230 rader
Skriven 2006-06-03 16:59:20 av Peter Knapper (3:772/1.10)
Kommentar till en text av Alan Hess
Ärende: Some questions
======================
Hi Alan,
AH> Whilst masticating on <Jun 01 06>, Peter Knapper (3:772/1.10)
AH> wrote to Nick Andre:
NA>> - Can I delay the start of my DOS-based BBS software on
NA>> bootup, ie. I use Ray
NA>> Gwinn's SIO/VMODEM product and I need to have my DOS
NA>> BBS *not* start until
NA>> VMODEM has booted up. Would something like HSTART solve
NA>> this problem or am I way off course here?
PK> It all comes down to HOW you start things up. I do NOT use the
PK> STARTUP Folder, I start everything using STARTUP.CMD and a little
PK> utility called SLEEP2, that allows me to set pauses of 1 to nn
PK> seconds between items in the file.
AH> Could you post a sample of your startup.cmd? *adh*
Its actually quite a maze of steps but I do it this way so I can retain control
and RESTART things if there are issues. The underlying logic is -
1. Provide a CLEAN environment for everything to run.
2. Provide a CLEAR seperation between real-time and "background" tasks.
3. Remove all resource contention by processing things ONE AT A TIME in a
clearly defined sequence of events.
4. Ensure you retain full control over all events.
Startup.Cmd handles all the Text mode stuff, and sequences things like the
Syslog Daemon. It uses a couple of utils -
TSTAMP2 Just outputs a text line with a date/timestamp of the event.
SLEEP2 Pauses for nn seconds...
The DNS is BIND, most items are available on Hobbes. The BBS machine also runs
a Syslog Daemon, a CRON, a DNS, a Web Server, a Time Server, etc...
From Startup.Cmd the Called files are -
KeepLog.Cmd This just "rotates" the Syslog files so that we dont
lose any records.
TcpStart.Cmd This is the standard OS/2 TCP/IP startup .CMD file.
Srexx.Cmd This is a simple REXX file that just preloads all the
REXX libraries that the BBS utilities use. It also
performs one other VERY IMPORTANT task, it PAUSES the
execution of Startup.CMD until the OS2 Desktop is
fully populated and ready for normal use. Any apps
that require PM to be ready will now run ok.NDC.Cmd
This is the Control .CMD file for the DNS (BIND).
So Startup.CMD just sets the system up, it doesn't actually start the BBS at
all. You get an option to abort at this point, plus a 10 second pause, before
the begining of StartUp2.Cmd.
StartUp2.Cmd is actually very simple, it just tidy's things up and prepares the
BBS for a clean restart by ensuring all BBS control files are correct. Then it
fires up the BBS tasks using BbsStart.Cmd.
BbsStart.Cmd This is the actual BBS stuff, it starts up -
1. The PSTN lines. It used to be 4 lines - 3 Binkley's,
+ 1 Maximus in WFC mode (now just 1 Binkley).
2. AUTOMAIL.CMD, a parallel "background" mail
processing task (see below).
3. BinkD. No real reason why this is sequenced with
the BBS, but it does allow me to control WHEN
it is running.
AUTOMAIL.CMD is the key to the system, its a 5k char, 200 line .CMD file that
uses SLEEP2 to sleep for a minute before it looks for more work (then sleeps
again). Automail calls 30+ other CMD files or programs. Once started it never
ends unless I force it to end or it runs into a critical error.
ALL BBS real-time events are processed as individual tasks (Binkley, Maximus,
BinkD, etc). Everythihg else, all Mail Tossing, all mail Packing, all Message
Base Compessing, all TIC processing, EVERYTHING that is not a "real-time" task
is handled by Automail step by step. This ensures that there is NEVER any clash
of resources. AUTOMAIL just runs until there is nothing left for it to do, then
it SLEEPS for 60 seconds and then looks for more work. Some tasks just take a
few seconds, some can take up to 5 minutes to complete (message base
compression once per week is probably the longest), its all sequenced by
AUTOMAIL. All real-time tasks never run these background events, they just
signal AUTOMAIL that it can be done now.
The main .CMD files are -
Startup.Cmd...
==================================================================
@Echo Off
Cls
Set ETC=C:\Mptn\Etc
C:
Cd \
Echo ***
Echo *** Record a restart...
Tstamp2 1 "=== System re-boot. ===" >>C:\Zzboot.log
Echo ***
Echo *** Saving/Rotating Syslog Files...
If Exist KeepLog.Cmd Call KeepLog.Cmd
Echo ***
Echo *** Now start up TCP/IP...
Call TcpStart.Cmd
C:
Cd \
Echo ***
Echo *** Startup the Syslog Daemon...
Start "y SysLogD" /B /C /WIN /MIN C:\Max\RunLog.Cmd
D:
Cd \Cron
Echo ***
Echo *** Startup CRON...
Start "y Cron" /B /C /WIN /MIN D:\Cron\Cron2.Exe
C:
Cd \Max
Echo ***
Echo *** Startup TimeD...
Start "y Time Server" /B /C /WIN /MIN C:\MAX\RUNTIME.CMD
C:
Cd \Apache2
Echo ***
Echo *** Startup Apache...
Start "y Apache" /B /C /WIN /MIN C:\APACHE2\APSTART.CMD
C:
Cd \
Echo ***
Echo *** Loading Rexx DLL's...
If Exist Srexx.Cmd Call Srexx.Cmd
Echo ***
Echo *** Pausing to ensure SyslogD is operational before DNS starts...
Sleep2 5
Echo ***
Echo *** Starting DNS (hopefully SyslogD is now running)...
Call NDC Start
Echo ***
Echo *** Force Networking to start and Login the default user...
Logon xxx /p:yyyr /r /s
Echo ***
Echo *** Pausing to allow time for OS/2 to Startup...
Echo *** Press A (Abort) or Ctrl-Break to stop the BBS from starting...
Echo *** Restart BBS startup with STARTUP2...
Sleep2 10
If ErrorLevel 1 Goto Waithere
If Exist Startup2.Cmd Startup2.Cmd
Exit
:Waithere
Echo *** Forced exit, type STARTUP2 to continue..
Echo ***
==================================================================
Startup2.Cmd...
==================================================================
@Echo Off
Echo *** Tidy up the flag files...
If Exist D:\Bbs\Active??.Bbs Del D:\Bbs\Active??.Bbs
If Exist D:\Bbs\QWK_BUSY.$$$ Del D:\Bbs\QWK_BUSY.$$$
If Exist D:\Bbs\Flag\In*.* Del D:\Bbs\Flag\In*.*
If Exist D:\Bbs\Flag\MailEnd Del D:\Bbs\Flag\MailEnd
If Exist D:\BinkD\FileNw.Bsy Del D:\BinkD\FileNw.Bsy
If Exist D:\BinkD\BinkDNw.Bsy Del D:\BinkD\BinkDNw.Bsy
If Exist D:\BinkD\BinkDGlo.Bsy Del D:\BinkD\BinkDGlo.Bsy
If Exist D:\BinkD\KcXfer.Bsy Del D:\BinkD\KcXfer.Bsy
For %%I in (D:\BBs\Outbound\*.Bsy) Do Del %%I
For %%I in (D:\BBs\Outbound\BtExit*.*) Do Del %%I
For %%I in (D:\BBs\Outbound.001\*.Bsy) Do Del %%I
D:
Cd \Bbs
Echo
Echo *** Press CTRL-C NOW to stop the BBS startup!
Sleep2 5
BbsStart
==================================================================
SRexx.Cmd...
==================================================================
/* Rexx file to load ALL Rexx functions and ensure PM is running
before proceeding.
*/
'@Echo Off'
/* Load standard Rexx functions. */
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs
/* Load the Rexx FTP interface. */
Call RxFuncAdd 'FtpLoadFuncs', 'RxFtp', 'FtpLoadFuncs'
Call FtpLoadFuncs 'Noprint'
/* Load the Rexx Sockets interface. */
Call RxFuncAdd 'SockLoadFuncs', 'rxSock', 'SockLoadFuncs'
Call SockLoadFuncs 'Noprint'
/* Load the RxExtras functions. */
Call RxFuncAdd 'RxExtra', 'RxExtras', 'RxExtra'
Call RxExtra 'Load'
/* Load Rexw Web Utilities. */
Call RxFuncAdd 'RexxwebLoadFuncs', 'REXXWEB', 'RexxwebLoadFuncs'
Call RexxwebLoadFuncs
/* Load Rexx Utilities (was YDBAUtil) */
Call RxFuncAdd 'Rxuinit', 'Rxu', 'Rxuinit'
Call Rxuinit
/* Wait here for the startup of PM and desktop is ready. */
Call SysWaitForShell 'Desktoppopulated'
==================================================================
There are many other .CMD files used in mail processing but they are just
details that are fairly obvious.
Sorry for the long post but some of the logic may not be apparent from just the
startup.cmd file.........;-)
Cheers.............pk.
--- Maximus/2 3.01
* Origin: Another Good Point About OS/2 (3:772/1.10)
|