Changes to autoson after printing of 1.3 manual ----------------------------------------------- Version 1.3.1: 1. auadd, aumod, and aulook have a new switch -sort that takes a string argument. This specifies the order of sorting when writing the queue. The meaning of the characters in the string: e = entrynumber s = state p = priority (not applied to CURR entries) h = runninghost (CURR, SICK and LOST entries) c = command name y = stopped d = schedtime T = timestamp # = cycle Each character can be preceded by '+' (redundant) or '-' (sort in reverse order). The default is the same as before: -sort s-pe 2. aumod, auzap and aulook have a new switch -byhosts whose argument is a hostgroup. Example: auzap -ent 20:30 -byhost =sunos,@fast . Only entries in states CURR, SICK and LOST are unaffected. For these entries, only those whose runninghost is in the named hostgroup are chosen. If -byhosts is present, -entry is optional. The case of special hostgroups like =alpha needs explanation. Except for =all, these can only be interpretted correctly on the current machine. The rule is that both =xxx and ~=xxx are taken to match every remote machine. In the case of auzap, the value of -byhosts is sent to the remote machine and interpretted there, so the correct overall behaviour is obtained. For aulook and aumod, more entries than intended may be selected. For this reason, use of special groups in this case is not recommended. 3. For interprettation of the hostgroup @altrsh, the special hostgroups =xxx and their complements ~=xxx are both taken as empty. The only exception is =all. 4. A bug that could cause stderr output to vanish has been fixed. Moral of the story: Do not assume that the fileno's for stdin, stdout, and stderr are always 0, 1, 2! (Beyond that, I think it found a bug in Solaris 2.4.) Version 1.3.2: 5. A bug that could cause one sequence to starve another in single-user mode has been fixed. Thanks to Gunnar Brinkmann for noticing the incorrect behaviour. Version 1.3.3: 6. The default output for aulook has been changed. It will now write "cyc=1" for entries forming part of non-trivial sequences. The only exception is when you have a sequence going backwards to 1; then the last entry will not show "cyc=1" becuase there is no record left of the rest of the sequence. Maybe I will fix that in a later version. Technically (see the manual) the %# format item uses the first format if cycle=oldlimit=1, and the second otherwise. 7. Checking for lost entries was improved, hopefully to fix some problems in multiuser mode. Version 1.3.4: 8. Use of the -byhosts switch now forces the focus on entries in state CURR, LOST or ORPH. Version 1.3.5: 9. aulook -sh incorrectly suppressed the attribute maximum if it was 1, but it was supposed to suppress the default 0. Version 1.3.6: 10. System IRIX64 added: ^ = S ^^ = sgi64 aurun exectables are different, others probably compatible Special host groups: =sgi32 matches only IRIX =sgi64 matches only IRIX64 =sgi matches either 11. New feature for killing jobs instead of suspending them. There is a new yawn time class KILLJOB that can arbitrarily overlap other time classes. Attributes have an attribute "killjob", values in {0,1,2}. When an entry is being executed under the yawn protocol, decision to have a "stop event" is made on the basis of classes ALWAYS, MAYBE, CONSOLE and NEVER, exactly as before. The actual nature of a stop event depends on the the class KILLJOB and the killjob attribute of the entry, as follows. killjob=0 or not time class KILLJOB : send SIGSTOP signal killjob=1 and time class KILLJOB: mark for requeuing and send SIGKJOB killjob=2 and time class KILLJOB: send SIGKJOB signal "mark for requeuing" means that when it actually dies it is put back into state PEND rather than being deleted. "SIGKJOB" is defined in audefaults.h (distributed as SIGKILL). KJOB and SIGKJOB are also acceptable as -signal arguments for auzap. Setting killjob attribute: -kill 0 (same as -nokill) -kill 1 -kill 2 Format for aulook output: %Z||kill=%d| F1 for 0, F2 for >0. This is added after %y to the default formats. [Note: see #21 below.] 12. YAWNDIR (defined in audefaults.h) may now contain macros. The useful macros are: ^ ^^ @ @@ ~ As usual, you can prevent substitution using \@ etc. (Advance notice: a future version will have a single file for all yawn information. This will permit easy specification of different behaviour according to hostgroup memberships.) 13. aurun* now writes the reason for not running anything every time the reason changes. 14. Entries now have an attribute localmaximum, giving a limit on how many jobs in the same sequence or stream can run on the same host. There are switches -localmaximum # and -nolocalmaximum. For example -max 5 -local 1 specifies that at most 5 can run at the same time but not more than 1 per machine. For both maximum and localmaximum, 0 and values over 9999 are taken to mean no limit. Format item: %M|| lmax=%d| F1 if 0, F2 if not. %M is now added after %m in all default formats. 15. It is no longer necessary to edit the makefile for each system, except to change 'cc' to something else. Instead the script auconfig writes files aumake.cc, aumake.lint and aumake.ld that contain switches. To change them, edit auconfig. Version 1.3.7: 16. Changes have been made to multiuser mode to fix a problem on SGI machines (failure to look up current directory). From now on, all the executables should be installed setuid-root for multiuser mode. Single-user mode is unaffected. 17. The script auconfig now begins #!/bin/sh . 18. A bug allowing entries to run during the intersection of NEVER and KILLJOB time classes has been fixed. 19. The archive file (like autoson137.tar) now has filenames which lie in a subdirectory; for example the file "makefile" is now "autoson137/makefile". This is a standard approach. 20. The Solaris version has -L added to aumake.ld. 21. The meaning of the killjob attribute was changed and extended. This replaces the table in #13 above: 0 : send SIGSTOP signal 1 : send SIGKJOB signal and requeue 2 : send SIGKJOB signal and requeue with schedtime updated as if the entry was just submitted 3 : send SIGKJOB signal For multiuser mode, a minimum allowed value of killjob for non-supervisors can be compiled in. 22. On Linux version 1, a long sleep (4 seconds) is added to compensate for the incorrect file synchronization. This does not make a new version. For mixtures of Linux 1 and Linux 2, compile on Linux 1. Note also that load monitoring does not work on Linux 1 -- you will get a message about /proc/loadavg. 23. Removed "set -e" from startaurun_multiuser, and added -e to the ps command for Solaris 2. Version 1.3.8: 24. Fixes for Redhat Linux 6.0: continuous permissions for file access, unbuffered /dev/loadavg. Version 1.3.10: 25. New switch -stopped / -nostopped for aulook and auzap. It restricts the specified entries in CURR to those which are stopped or not. Version 1.3.11: 26. Slight improvement to file locking mechanism. Version 1.4.0: 27. Added Solaris 2 on x86 processors. The internal names are SYS_PCSOLARIS and HOSTPCSOL. HOSTSOLARIS is also set. The user-level information is: Value of ^ : p Value of ^^ : pcsolaris Hostgroups : =solaris =pcsolaris Version 1.4.1: 28. Added a new default method of updating the queue file in an attempt to foil the efforts of NFS to screw up consistency. Now the modified queue is written to a (aurun-specific) new file. The new file is renam()-ed to the queue file. Then the queue file is repeated stat-ed until it has the correct inode number. It is not yet clear if this will work. See the option MOVEQUEUE in audefaults.h. 29. Renumbering the queue is now completely safe, with the exception that prerequistises given as ranges may not be renumbered properly. A warning is given in that case. 30. auzap -requeue on an orphaned entry now puts it into PEND state. 31. The qualifiers -hosts and -byhost allow an argument =this which refers to the current host. It is translated immediately, not stored in the queuefile like that. 32. Rainer Orth (Bielefeld) sent some changes for getloadav.c. Now there is no need for separate 32-bit and 64-bit executables for SGI macines. However, the distinction is still available in the values of ^, ^^ and the special hostgroups =sgi32 and =sgi64. Also, root privilege is no longer required for load average monitoring on Solaris 2 machines. Version 1.4.2: 33. Added MacOSX version. Only tested on 10.2.4 so far. The internal names are SYS_MACOSX and HOSTMACOSX. The user-level information is: Value of ^ : m Value of ^^ : maxosx Hostgroups : =macosx Version 1.4.3: 34. Fixed amazing call to strcmp() with one argument NULL. How could this have escaped detection for years? Maybe older C libraries were forgiving. Version 1.4.4: 35. Use function prototypes everywhere, minor cleanups 36. Replace the old creaking getdate() with curl_getdate() from curl-7.12.1. This is used to decode values of the -after switch. Version 1.4.5: 37. Update the aurun log file access and modification times about every 5 minutes. This can be used to check if aurun is running. To disable this feature (not tested on many OSs) set TICKLETIME to 0 in audefualts.h. 38. Increase the maximum number of queue entries from 500 to 2000. This is MAXENTRIES in autoson.h. There is no actual limit, but space requirements are proportional to MAXENTRIES so don't go overboard on this. Version 1.4.6: 39. Fix a bug that caused a hang on MacOSX 10.5.