Xref: utzoo comp.protocols.tcp-ip.domains:356 comp.unix.wizards:23532 Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!samsung!munnari.oz.au!metro!cluster!necisa!boyd From: boyd@necisa.ho.necisa.oz (Boyd Roberts) Newsgroups: comp.protocols.tcp-ip.domains,comp.unix.wizards Subject: Re: Monitoring your nameserver Message-ID: <1831@necisa.ho.necisa.oz> Date: 20 Aug 90 04:37:35 GMT References: <9008141525.AA27754@sci.ccny.cuny.edu> <7769@gollum.twg.com> Organization: NEC Information Systems Australia Pty. Ltd. Lines: 71 In article <7769@gollum.twg.com> david@twg.com (David S. Herron) writes: > >This process will somehow take a list of processes to watch after. >It will be the parent of all those processes, so that it will be notified >of them dieing .. It will have a number of actions it can do when >the process dies, like wait awhile before starting a new copy, start >one immediately, start one under some condition, etc. > It's been done already. Back in '83 or so Tim Long% at Sydney Uni Comp Sci rewrote init so it was far more flexible as a general purpose daemon controller. He had a file /etc/procs with entries like this: tty-console /etc/login@ peb1200 /dev/console netd-basser40 /usr/spool/ACSnet/_lib/NNdaemon -I basser40 skulk /etc/skulk The first field was a handle for the process and the other fields were the program to run and its arguments. All daemons were started by init and a naming convention was used so that a group of related processes could be controlled easily. There was no concept of init `state'. But you could interrogate init and ask it what was going on. To interrogate it you used a program called `toinit': toinit The commands were (from what I can remember): start - start it stop - SIGTERM it and don't restart it kill - SIGTERM then SIGKILL curtail - don't restart it when it dies status - tell me what the state of world is scanprocs - re-read /etc/procs and incorporate any changes The regular expressions were matched against the first /etc/procs field (the handle for the process) and the appropriate action was taken on any of the matches. There were special entries in /etc/procs for a single user shell on the console for boot & shutdown. Startup was just a script that had the appropriate mounts and then a large `toinit start ...'. Shutdown was just a `toinit stop tty-.* ...' and then some magic (I forget) to get a single user shell on the console (these machines were 32V VAX 11/780's). There were some bugs, but we fixed them and hacked in some more magic for auto-reboots. The `magic' was usually just a `rc' like script that did the right things and then told init to start the appropriate stuff. With this approach you could control a _single_ entry, unlike the ghastly mess that is System V's /etc/inittab. The IPC between `toinit' and `init' was a bit messy, but with a mounted process stream implementation (was this ever done John?) it can be done really cleanly. Boyd Roberts boyd@necisa.ho.necisa.oz.au ``When the going gets wierd, the weird turn pro...'' ------- % Bruce Ellis, Piers Lauder, John Mackin, Chris Maltby and myself added mods and bug fixes over the years. @ getty/login were re-written into /etc/login. /bin/login was unlinked.