|
|
1.1 ! root 1: .TH ASD 8 ! 2: .CT 1 sa_auto ! 3: .SH NAME ! 4: asd \- automatic software distribution ! 5: .SH SYNOPSIS ! 6: .B /usr/lib/asd/cdaemon ! 7: .br ! 8: .B /usr/lib/asd/dkinstall ! 9: .br ! 10: .B /usr/lib/asd/mkspool ! 11: .br ! 12: .B /usr/lib/asd/rmlocks ! 13: .br ! 14: .B /usr/lib/asd/udaemon ! 15: .SH DESCRIPTION ! 16: These programs constitute the innards of the ! 17: automatic software distribution system ! 18: invoked by ! 19: .IR ship (8). ! 20: .PP ! 21: .I Mkspool ! 22: creates an ! 23: .SM ASD ! 24: spool directory for its invoker (if necessary), ! 25: puts a file named ! 26: .F dummy ! 27: in the directory to prevent ! 28: .I cdaemon ! 29: from deleting it, ! 30: and prints the directory's name. ! 31: .PP ! 32: .I Udaemon ! 33: examines its invoker's ! 34: .SM ASD ! 35: spool directory in lexical order ! 36: for things to do. ! 37: To forestall multiple daemons, it first makes an empty file named ! 38: .BI L. pid ! 39: in the spool directory ! 40: and tries to link to it a file ! 41: .FR lock . ! 42: If the link fails, ! 43: .BI L. pid ! 44: is removed and ! 45: .I udaemon ! 46: exits. ! 47: .PP ! 48: Shipping instructions ! 49: appear in pairs of files with ! 50: .B .s ! 51: and ! 52: .B .d ! 53: suffixes. ! 54: .I Udaemon ! 55: examines each status ! 56: .RB ( .s ) ! 57: file for destination names and ! 58: places a network call ! 59: to send the corresponding data ! 60: .RB ( .d ) ! 61: file to ! 62: .I dkinstall ! 63: at each destination. ! 64: .I Dkinstall ! 65: verifies the data ! 66: and gives it to ! 67: .IR inspkg , ! 68: see ! 69: .IR mkpkg (8). ! 70: .PP ! 71: A status file contains ! 72: zero or more entries, ! 73: each of which has one or more lines. ! 74: The first line of an entry is a ! 75: network address, ! 76: with default network ! 77: .B dk ! 78: and default service ! 79: .BR asd , ! 80: possibly followed by a blank and a failure report. ! 81: An entry with destination ! 82: .L # ! 83: is a comment and is ignored. ! 84: Lines after the first begin with ! 85: a tab, ! 86: and contain output generated by the entry. ! 87: If an entry has output, ! 88: it is considered complete ! 89: and will be processed no further. ! 90: .PP ! 91: .I Udaemon ! 92: scans each status file once, ! 93: and attempts to send the corresponding data file to the destination ! 94: for each incomplete entry. ! 95: If the attempt fails, ! 96: a failure report is appended to the entry, ! 97: and it remains incomplete. ! 98: If the attempt succeeds, ! 99: or the failure is severe, ! 100: an error message ! 101: or output from ! 102: .I dkinstall ! 103: is appended to the entry, ! 104: which makes the entry complete. ! 105: If an entry is completed successfully ! 106: but there are no output lines, ! 107: the entry is deleted. ! 108: .PP ! 109: Each instance of ! 110: .I udaemon ! 111: remembers which network addresses failed with non-severe errors; ! 112: entries with the same address in later status files ! 113: are given failure status `deferred for sequence.' ! 114: .PP ! 115: If at least one additional entry was completed, ! 116: .I udaemon ! 117: sends the new status file to the owner by ! 118: .IR mail (1) ! 119: after the whole file has been scanned. ! 120: If no incomplete entries remain, ! 121: both status and data files are removed. ! 122: .PP ! 123: .I Cdaemon ! 124: examines every subdirectory of ! 125: .FR /usr/spool/asd , ! 126: deletes empty directories and, impersonating the owner, ! 127: invokes ! 128: .I udaemon ! 129: for nonempty directories. ! 130: .I Cdaemon ! 131: should be run regularly by ! 132: .IR cron (8) ! 133: with super-user permissions. ! 134: .PP ! 135: .IR Rmlocks ! 136: removes all lock files in ! 137: subdirectories of ! 138: .FR /usr/spool/asd . ! 139: It should be called from ! 140: .IR rc (8). ! 141: .PP ! 142: Entries in an ! 143: .SM ASD ! 144: spool directory may be made without regard to locks ! 145: provided that everything is done in the right ! 146: sequence: ! 147: (1) call ! 148: .IR mkspool ; ! 149: (2) create the data file; ! 150: (3) create the status file under a temporary name; ! 151: (4) rename the status file to end with ! 152: .BR .s ; ! 153: (5) remove the ! 154: .F dummy ! 155: file, if present; and ! 156: (6) call ! 157: .IR udaemon . ! 158: .PP ! 159: Because ! 160: .I mail ! 161: will not send an empty file, ! 162: a status file must have a comment entry if ! 163: acknowledgment is desired after a ! 164: successful ! 165: .I udaemon ! 166: run. ! 167: .SH FILES ! 168: .BI /usr/spool/asd/ "userid " ! 169: user's ! 170: .SM ASD ! 171: spool directory ! 172: .SH SEE ALSO ! 173: .IR mkpkg (8), ! 174: .IR ship (8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.