184f33deaSJordan K. Hubbard[ this is really old mail that came to me in response to my 1986 posting 284f33deaSJordan K. Hubbard to usenet asking for feature suggestions before releasing the first 384f33deaSJordan K. Hubbard version of cron. it is presented here for its entertainment value. 484f33deaSJordan K. Hubbard --vix ] 584f33deaSJordan K. Hubbard 697d92980SPeter Wemm$FreeBSD$ 784f33deaSJordan K. Hubbard 884f33deaSJordan K. HubbardFrom ptsfa!lll-crg!ames!acornrc!bob Wed Dec 31 10:07:08 1986 984f33deaSJordan K. HubbardDate: Wed, 31 Dec 86 08:59:31 pst 1084f33deaSJordan K. HubbardFrom: lll-crg!ames!acornrc!bob (Bob Weissman) 1184f33deaSJordan K. HubbardTo: ptsfa!vixie!paul 1284f33deaSJordan K. HubbardStatus: RO 1384f33deaSJordan K. Hubbard 1484f33deaSJordan K. HubbardSure, here's a suggestion: I'd like to be able to run a program, say, 1584f33deaSJordan K. Hubbardevery two hours. Current cron requires me to write 1684f33deaSJordan K. Hubbard0,2,4,6,8,10,12,14,16,18,20,22 in the hours field. How about a notation 1784f33deaSJordan K. Hubbardto handle this more elegantly? 1884f33deaSJordan K. Hubbard 1984f33deaSJordan K. Hubbard<< Okay, I've allowed 0-22/2 as a means of handling this. 2084f33deaSJordan K. Hubbard The time specification for my cron is as follows: 2184f33deaSJordan K. Hubbard specification = range {"," range} 2284f33deaSJordan K. Hubbard range = (start "-" finish ["/" step]) | single-unit 2384f33deaSJordan K. Hubbard This allows "1,3,5-7", which the current cron doesn't (it won't 2484f33deaSJordan K. Hubbard do a range inside a list), and handles your specific need. >> 2584f33deaSJordan K. Hubbard 2684f33deaSJordan K. HubbardFrom drw@mit-eddie Wed Dec 31 18:25:27 1986 2784f33deaSJordan K. HubbardDate: Wed, 31 Dec 86 14:28:19 est 2884f33deaSJordan K. HubbardFrom: drw@mit-eddie (Dale Worley) 2984f33deaSJordan K. HubbardTo: mit-eddie!vixie!paul 3084f33deaSJordan K. HubbardStatus: RO 3184f33deaSJordan K. Hubbard 3284f33deaSJordan K. HubbardWe have a lot of lines in our crontab of the form 3384f33deaSJordan K. Hubbard 3484f33deaSJordan K. Hubbard 00 12 * * * su user < /usr/users/user/script.file 3584f33deaSJordan K. Hubbard 3684f33deaSJordan K. HubbardThis barfs (silently!) on our system (Dec Ultrix 1.2 == 4.2bsd) if 3784f33deaSJordan K. Hubbarduser's shell is csh. This, I am told, is because csh requires that 3884f33deaSJordan K. Hubbardthe environment be set up in certain ways, which cron doesn't do. 3984f33deaSJordan K. Hubbard(Actually, I believe, it is because /etc/rc, which runs cron, doesn't 4084f33deaSJordan K. Hubbardset up the environment enough for csh to run, and cron just inherits 4184f33deaSJordan K. Hubbardthe situation.) Anyway, the point is that if you find out what csh 4284f33deaSJordan K. Hubbardreally needs in its environment, you might want to set up cron to 4384f33deaSJordan K. Hubbardprovide some reasonable defaults (if it isn't supplied by cron's 4484f33deaSJordan K. Hubbardparent). Also, could you tell me what csh needs, if you find out, so 4584f33deaSJordan K. Hubbardwe can hack our /etc/rc? 4684f33deaSJordan K. Hubbard 4784f33deaSJordan K. Hubbard<< well, the environment IS a problem. processes that cron forks 4884f33deaSJordan K. Hubbard will inherit the environment of the person who ran the cron 4984f33deaSJordan K. Hubbard daemon... I plan to edit out such useless things as TERMCAP, 5084f33deaSJordan K. Hubbard TERM, and the like; supply correct values for HOME, USER, CWD, 5184f33deaSJordan K. Hubbard and whatever else comes to mind. I'll make sure csh works... >> 5284f33deaSJordan K. HubbardFrom ptsfa!ames!seismo!dgis!generous Thu Jan 1 07:33:17 1987 5384f33deaSJordan K. HubbardDate: Thu Jan 1 10:29:20 1987 5484f33deaSJordan K. HubbardFrom: ames!seismo!dgis!generous (Curtis Generous) 5584f33deaSJordan K. HubbardTo: nike!ptsfa!vixie!paul 5684f33deaSJordan K. HubbardStatus: RO 5784f33deaSJordan K. Hubbard 5884f33deaSJordan K. HubbardPaul: 5984f33deaSJordan K. Hubbard 6084f33deaSJordan K. HubbardOne of the limitations of the present versions of cron is the lack 6184f33deaSJordan K. Hubbardof the capability of specifying a way to execute a command every 6284f33deaSJordan K. Hubbardn units of time. 6384f33deaSJordan K. Hubbard 6484f33deaSJordan K. HubbardHere is a good example: 6584f33deaSJordan K. Hubbard 6684f33deaSJordan K. Hubbard# Present method to start up uucico 6784f33deaSJordan K. Hubbard02,12,22,32,42,52 * * * * exec /usr/lib/uucp/uucico -r1 6884f33deaSJordan K. Hubbard 6984f33deaSJordan K. Hubbard# New method ?? (the ':' here is just one possibility for syntax) 7084f33deaSJordan K. Hubbard02:10 * * * * exec /usr/lib/uucp/uucico -r1 7184f33deaSJordan K. Hubbard 7284f33deaSJordan K. HubbardThis method would prove very helpful for those programs that get started 7384f33deaSJordan K. Hubbardevery few minutes, making the entry long and not easily readable. The first 7484f33deaSJordan K. Hubbardnumber would specify the base time, and the second number the repetition 7584f33deaSJordan K. Hubbardinterval. 7684f33deaSJordan K. Hubbard 7784f33deaSJordan K. Hubbard<< Good idea, but bob@acornrc beat you to it. I used '/' instead of 7884f33deaSJordan K. Hubbard ':'. This is my personal preference, and seems intuitive when you 7984f33deaSJordan K. Hubbard think of the divide operator in C... Does anyone have a preference? >> 8084f33deaSJordan K. Hubbard 8184f33deaSJordan K. HubbardFrom ptsfa!lll-lcc!seismo!decuac!c3pe!c3engr!charles Thu Jan 1 17:04:24 1987 8284f33deaSJordan K. HubbardFrom: lll-lcc!seismo!c3pe!c3engr!charles (Charles Green) 8384f33deaSJordan K. HubbardTo: c3pe!decuac!dolqci!vrdxhq!seismo!lll-lcc!ptsfa!vixie!paul 8484f33deaSJordan K. HubbardDate: Thu Jan 1 19:22:47 1987 8584f33deaSJordan K. HubbardStatus: RO 8684f33deaSJordan K. Hubbard 8784f33deaSJordan K. HubbardWell, this isn't a compatible extension, but I have in times past wondered 8884f33deaSJordan K. Hubbardabout a facility to let you start a process at intervals of, say, 17 minutes, 8984f33deaSJordan K. Hubbardinstead of particular minutes out of each hour. 9084f33deaSJordan K. Hubbard 9184f33deaSJordan K. Hubbard<< This was a popular request! >> 9284f33deaSJordan K. Hubbard 9384f33deaSJordan K. HubbardFrom seismo!uwvax!astroatc!nicmad!norvax!mann Sun Jan 4 13:04:01 1987 9484f33deaSJordan K. HubbardDate: Fri, 2 Jan 87 09:23:53 cst 9584f33deaSJordan K. HubbardFrom: lll-lcc!seismo!uwvax!astroatc!nicmad!norvax!mann (Tom Mann) 9684f33deaSJordan K. HubbardTo: ptsfa!vixie!paul 9784f33deaSJordan K. HubbardStatus: RO 9884f33deaSJordan K. Hubbard 9984f33deaSJordan K. HubbardI'm not sure if it is in cron (either SysV or BSD ... if it is, I haven't 10084f33deaSJordan K. Hubbardfigured it out ) but a comment feature would SURE BE NICE!. 10184f33deaSJordan K. HubbardThere are times when I want to comment out an entry 10284f33deaSJordan K. Hubbardfor a period of time; it might also make it a lot more legible. 10384f33deaSJordan K. Hubbard 10484f33deaSJordan K. Hubbard<< My cron allows blank lines and standard #-type comments. I know 10584f33deaSJordan K. Hubbard that one BSD4.2 cron I've used had it. I don't know about SysV. >> 10684f33deaSJordan K. Hubbard 10784f33deaSJordan K. HubbardFrom ptsfa!hoptoad!hugh Mon Jan 5 10:26:46 1987 10884f33deaSJordan K. HubbardDate: Mon, 5 Jan 87 01:22:17 PST 10984f33deaSJordan K. HubbardFrom: hoptoad!hugh (Hugh Daniel) 11084f33deaSJordan K. HubbardTo: ptsfa!vixie!paul 11184f33deaSJordan K. HubbardStatus: RO 11284f33deaSJordan K. Hubbard 11384f33deaSJordan K. Hubbard Hi, I do have a BIG one that I would like. I want to log ALL output 11484f33deaSJordan K. Hubbardfrom command lines into a file for each line. Thus I might have a chance 11584f33deaSJordan K. Hubbardof finding out why my crontab entry did not work. 11684f33deaSJordan K. Hubbard This would seem to work best if done by cron, as it is now I have a google 11784f33deaSJordan K. Hubbardof shell scripts laying about just to put the error output where I can see 11884f33deaSJordan K. Hubbardit. 11984f33deaSJordan K. Hubbard 12084f33deaSJordan K. Hubbard<< My cron (and the SysV cron) will send mail to the owner of the 12184f33deaSJordan K. Hubbard particular crontab file if a command generates any output on stdout 12284f33deaSJordan K. Hubbard or stderr. This can be irritating, but if you write a script such 12384f33deaSJordan K. Hubbard that any output means a problem occurred, you can avoid most logfile 12484f33deaSJordan K. Hubbard needs, and not generate mail except in unforeseen circumstances. >> 12584f33deaSJordan K. Hubbard 12684f33deaSJordan K. HubbardFrom ptsfa!dual!ucbvax!ihnp4!anvil!es!Robert_Toxen Mon Jan 5 13:08:46 1987 12784f33deaSJordan K. HubbardFrom: dual!ucbvax!ihnp4!anvil!es!Robert_Toxen 12884f33deaSJordan K. HubbardDate: Fri, 2 Jan 87 14:25:29 EST 12984f33deaSJordan K. HubbardTo: anvil!ihnp4!ucbvax!dual!ptsfa!vixie!paul 13084f33deaSJordan K. HubbardStatus: RO 13184f33deaSJordan K. Hubbard 13284f33deaSJordan K. HubbardHere are some suggestions: 13384f33deaSJordan K. Hubbard1. Run it through the C preprocessor via "/lib/<whatever>". 13484f33deaSJordan K. Hubbard 13584f33deaSJordan K. Hubbard<< hmmm. this seems of limited utility, and if you really wanted 13684f33deaSJordan K. Hubbard to do it that way, you could do it yourself (since users can 13784f33deaSJordan K. Hubbard write to their own crontab files). I'll add '-' (read stdin) 13884f33deaSJordan K. Hubbard to the crontab installer program to facilitate this. >> 13984f33deaSJordan K. Hubbard 14084f33deaSJordan K. Hubbard2. Allow specifying every Nth day of week, i.e., every second Wednesday. 14184f33deaSJordan K. Hubbard I did this to calendar by separating the day of week (Wed=4, which one 14284f33deaSJordan K. Hubbard to start on and N with slashes). I took modulo the day of year as a 14384f33deaSJordan K. Hubbard starting point so that someone with a desk calendar documenting such 14484f33deaSJordan K. Hubbard things can easily determine the offset (second number). I did this 14584f33deaSJordan K. Hubbard while at SGI; alas I don't have a copy of the code. 14684f33deaSJordan K. Hubbard 14784f33deaSJordan K. Hubbard<< I can see how this could be useful, but I'm not sure how I'd 14884f33deaSJordan K. Hubbard implement it. Cron currently doesn't keep track of the last time 14984f33deaSJordan K. Hubbard a given command was run; whether the current Wednesday is the first 15084f33deaSJordan K. Hubbard or second since the command was last run would be pretty hard to 15184f33deaSJordan K. Hubbard figure out. I'd have to keep a database of commands and their 15284f33deaSJordan K. Hubbard execution around, and purge it when the crontab was overwritten. 15384f33deaSJordan K. Hubbard This is too much work for me, but if someone adds it, let me know. >> 15484f33deaSJordan K. Hubbard 15584f33deaSJordan K. HubbardFrom ptsfa!ames!seismo!cbmvax!devon!paul Tue Jan 6 05:50:17 1987 15684f33deaSJordan K. HubbardFrom: ames!seismo!cbmvax!devon!paul 15784f33deaSJordan K. HubbardTo: cbmvax!seismo!nike!ptsfa!vixie!paul 15884f33deaSJordan K. HubbardDate: Mon Jan 5 09:29:57 1987 15984f33deaSJordan K. HubbardStatus: RO 16084f33deaSJordan K. Hubbard 16184f33deaSJordan K. HubbardOne problem that has always plagued me with cron is the assumed ORing. 16284f33deaSJordan K. HubbardI'd like to see some type of ANDing implemented. I guess I can best 16384f33deaSJordan K. Hubbarddescribe this by example. Say I have the following line in my crontab 16484f33deaSJordan K. Hubbardfile: 16584f33deaSJordan K. Hubbard 16684f33deaSJordan K. Hubbard* * 4-31 * 1-6 /usr/bin/command 16784f33deaSJordan K. Hubbard 16884f33deaSJordan K. HubbardWhat this does is run 'command' on the 4th thru 31st days of the 16984f33deaSJordan K. Hubbardmonth, AND on Monday thru Saturday; which probably means running it 17084f33deaSJordan K. Hubbardevery day of the month (unless Sunday falls on days 1-3). This 17184f33deaSJordan K. Hubbardhappens because cron runs the command if the day-of-month OR the 17284f33deaSJordan K. Hubbardday-of-week is true. 17384f33deaSJordan K. Hubbard 17484f33deaSJordan K. HubbardWhat I'd like to happen with the above line is to run the command ONLY 17584f33deaSJordan K. Hubbardon Monday thru Saturday any time after the 3rd of the month, e.g. if 17684f33deaSJordan K. Hubbardthe day-of-month AND the day-of-week are true. 17784f33deaSJordan K. Hubbard 17884f33deaSJordan K. HubbardMy proposal to you is to implement some special chars for the first 17984f33deaSJordan K. Hubbardfive fields. Examples: 18084f33deaSJordan K. Hubbard 18184f33deaSJordan K. Hubbard* * !1-3 * 1-6 /usr/bin/command 18284f33deaSJordan K. Hubbard 18384f33deaSJordan K. Hubbard(run command Mon-Sat, but NOT [!] on the first 3 days of the month) 18484f33deaSJordan K. Hubbard 18584f33deaSJordan K. Hubbard* * &4-31 * &1-6 /usr/bin/command 18684f33deaSJordan K. Hubbard 18784f33deaSJordan K. Hubbard(run command if day-of-month AND day-of-week are true) 18884f33deaSJordan K. Hubbard 1893df5ecacSUlrich SpörleinGet the picture? This would be compatible with existing versions of 19084f33deaSJordan K. Hubbardcron (which wouldn't currently be using any special characters, so 19184f33deaSJordan K. Hubbardthat old crontabs would be handled correctly). 19284f33deaSJordan K. Hubbard 19384f33deaSJordan K. Hubbard<< This message made me aware of the actual boolean expression involved 19484f33deaSJordan K. Hubbard in a crontab entry. I'd assumed that it was 19584f33deaSJordan K. Hubbard (minute && hour && DoM && month && DoW) 19684f33deaSJordan K. Hubbard But it's really 19784f33deaSJordan K. Hubbard (minute && hour && month && (DoM || DoW)) 19884f33deaSJordan K. Hubbard 19984f33deaSJordan K. Hubbard I can see some value in changing this, but with a fixed order of 20084f33deaSJordan K. Hubbard fields, operators get to be kindof unary, which && and || really 20184f33deaSJordan K. Hubbard aren't. If someone has an idea on a syntax that allows useful 20284f33deaSJordan K. Hubbard variations to the standard (&& && && (||)) default, please suggest. >> 20384f33deaSJordan K. Hubbard 20484f33deaSJordan K. HubbardFrom bobkat!pedz Tue Jan 6 20:02:10 1987 20584f33deaSJordan K. HubbardFrom: pedz@bobkat.UUCP (Pedz Thing) 20684f33deaSJordan K. HubbardDate: 2 Jan 87 17:34:44 GMT 20784f33deaSJordan K. HubbardStatus: RO 20884f33deaSJordan K. Hubbard 20984f33deaSJordan K. HubbardLog files! It would be nice to be able to specify a log for cron 21084f33deaSJordan K. Hubbarditself and also a log for each program's stdout and stderr to go to. 21184f33deaSJordan K. HubbardThe latter can of course be done with > and 2> but it would be nice if 21284f33deaSJordan K. Hubbardthere could be a single line with some sort of pattern like 21384f33deaSJordan K. Hubbard`> /usr/spool/log/%' and the command would be substituted for the %. 21484f33deaSJordan K. HubbardAnother thing which would be nice is to be able to specify which shell 21584f33deaSJordan K. Hubbardto call to give the command to. 21684f33deaSJordan K. Hubbard 21784f33deaSJordan K. Hubbard<< Log files are done with mail. The '%' idea could be useful if 21884f33deaSJordan K. Hubbard a different character were used (% is special to cron, see man 21984f33deaSJordan K. Hubbard page); a different directory would have to be chosen, since each 22084f33deaSJordan K. Hubbard user has their own crontab file; and something intelligent would 22184f33deaSJordan K. Hubbard have to be done in the file naming, since the first word of the 22284f33deaSJordan K. Hubbard command might be ambiguous (with other commands). In short, it's 22384f33deaSJordan K. Hubbard too much work. Sorry. >> 22484f33deaSJordan K. Hubbard 22584f33deaSJordan K. HubbardFrom guy%gorodish@sun Tue Jan 6 20:03:13 1987 22684f33deaSJordan K. HubbardFrom: guy%gorodish@sun (Guy Harris) 22784f33deaSJordan K. HubbardMessage-ID: <10944@sun.uucp> 22884f33deaSJordan K. HubbardDate: 5 Jan 87 12:09:09 GMT 22984f33deaSJordan K. HubbardReferences: <429@vixie.UUCP> <359@bobkat.UUCP> 23084f33deaSJordan K. HubbardSender: news@sun.uucp 23184f33deaSJordan K. HubbardStatus: RO 23284f33deaSJordan K. Hubbard 23384f33deaSJordan K. Hubbard> Another thing which would be nice is to be able to specify which shell 23484f33deaSJordan K. Hubbard> to call to give the command to. 23584f33deaSJordan K. Hubbard 23684f33deaSJordan K. HubbardWell, the obvious choice would be the user's shell, but this wouldn't work 23784f33deaSJordan K. Hubbardfor accounts like "uucico". 23884f33deaSJordan K. Hubbard 23984f33deaSJordan K. Hubbard<< I use the owning user's shell, and to handle "uucico" I check a 24084f33deaSJordan K. Hubbard list of "acceptable shells" (currently compiled in, does anybody 24184f33deaSJordan K. Hubbard mind?), substituting a default (compiled in) shell if the user's 24284f33deaSJordan K. Hubbard shell isn't on the list. 24384f33deaSJordan K. Hubbard 24484f33deaSJordan K. Hubbard BTW, "compiled in" means that it's in a .h file, easily changed 24584f33deaSJordan K. Hubbard during installation, but requiring recompilation to modify. You 24684f33deaSJordan K. Hubbard don't have to go digging through the code to find it... >> 24784f33deaSJordan K. Hubbard 24884f33deaSJordan K. HubbardFrom qantel!hplabs!ucbvax!mwm@violet.berkeley.edu Tue Jan 6 21:24:48 1987 24984f33deaSJordan K. HubbardTo: hplabs!qantel!vixie!paul (Paul Vixie Esq) 25084f33deaSJordan K. HubbardDate: 04 Jan 87 00:42:35 PST (Sun) 25184f33deaSJordan K. HubbardFrom: Mike Meyer <mwm@violet.berkeley.edu> 25284f33deaSJordan K. HubbardStatus: RO 25384f33deaSJordan K. Hubbard 25484f33deaSJordan K. Hubbard<<[Discussion of RMS/FSF, and mwm's GNU Cron deleted]>> 25584f33deaSJordan K. Hubbard 25684f33deaSJordan K. HubbardOh, yeah - here are the extensions on my cron: 25784f33deaSJordan K. Hubbard 25884f33deaSJordan K. Hubbard1) Sunday is both day 0 and day 7, so it complies with both SysV and 25984f33deaSJordan K. HubbardBSD cron. 26084f33deaSJordan K. Hubbard 26184f33deaSJordan K. Hubbard<< Good idea. I did it too, thanks for informing me. >> 26284f33deaSJordan K. Hubbard 26384f33deaSJordan K. Hubbard2) At is integrated into the cron. Instead of atrun to scan the 26484f33deaSJordan K. Hubbard/usr/spool/at directory, at files are put into the /usr/lib/cron 26584f33deaSJordan K. Hubbarddirectory along with users cron files, and cron fabricates a line from 26684f33deaSJordan K. Hubbarda crontab file to run them. This is considered a major win by all who 26784f33deaSJordan K. Hubbarduse it. 26884f33deaSJordan K. Hubbard 26984f33deaSJordan K. Hubbard<< I don't use 'at', and my cron doesn't do anything with it. To run 27084f33deaSJordan K. Hubbard 'at', I use 'atrun' the same way the current BSD cron does. My 27184f33deaSJordan K. Hubbard crontab files are in /usr/spool/cron/crontabs, in the SysV 27284f33deaSJordan K. Hubbard tradition -- not in /usr/lib/cron. This is a configuration 27384f33deaSJordan K. Hubbard parameter, of course. >> 27484f33deaSJordan K. Hubbard 27584f33deaSJordan K. HubbardThere are two known restrictions: 27684f33deaSJordan K. Hubbard 27784f33deaSJordan K. Hubbard1) I don't support any of the SysV security hooks. I don't have a use 27884f33deaSJordan K. Hubbardfor them, and RMS didn't like the idea at all :-). 27984f33deaSJordan K. Hubbard 28084f33deaSJordan K. Hubbard<< This means cron.allow and cron.deny. I plan to support them, as 28184f33deaSJordan K. Hubbard they've been quite helpful at various HPUX sites I've administered. >> 28284f33deaSJordan K. Hubbard 28384f33deaSJordan K. Hubbard2) Cron expects to be able to create files with names longer than 14 28484f33deaSJordan K. Hubbardcharacters, which makes it hard to run on SysV. At least one person 28584f33deaSJordan K. Hubbardwas working on a port, but I don't know how it's going. That might 28684f33deaSJordan K. Hubbardmake for a good reason for releasing yours, right there. 28784f33deaSJordan K. Hubbard 28884f33deaSJordan K. Hubbard<< If someone has SysV (with the 14-character limit), they probably 28984f33deaSJordan K. Hubbard won't want my cron, since it doesn't add much to the standard 29084f33deaSJordan K. Hubbard version (which they may have support for). My cron is not currently 29184f33deaSJordan K. Hubbard portable to non-BSD systems, since it relies on interval timers (I 29284f33deaSJordan K. Hubbard needed to sleep for intervals more granular than seconds alone would 29384f33deaSJordan K. Hubbard allow). The port would be trivial, and I will do it if a lot of 29484f33deaSJordan K. Hubbard people ask for it... >> 29584f33deaSJordan K. Hubbard 29684f33deaSJordan K. HubbardOh, yeah - I'm going to see about getting this cron integrated into 29784f33deaSJordan K. Hubbardthe next 4BSD release. 29884f33deaSJordan K. Hubbard 29984f33deaSJordan K. Hubbard<< How does one go about this? I have a few nifty gadgets I'd like 30084f33deaSJordan K. Hubbard to contribute, this cron being one of them... >> 30184f33deaSJordan K. Hubbard 30284f33deaSJordan K. Hubbard<<[more FSF/GNU discussion deleted]>> 30384f33deaSJordan K. Hubbard 30484f33deaSJordan K. HubbardFrom qantel!hplabs!ames!ut-sally!ut-ngp!melpad!bigtex!james Tue Jan 6 21:24:57 1987 30584f33deaSJordan K. HubbardPosted-Date: Fri, 2 Jan 87 19:26:16 est 30684f33deaSJordan K. HubbardDate: Fri, 2 Jan 87 19:26:16 est 30784f33deaSJordan K. HubbardFrom: hplabs!ames!ut-sally!ut-ngp!bigtex!james 30884f33deaSJordan K. HubbardTo: vixie!paul 30984f33deaSJordan K. HubbardStatus: RO 31084f33deaSJordan K. Hubbard 31184f33deaSJordan K. HubbardYes!!! There are several critical failures in System V cron... 31284f33deaSJordan K. Hubbard 31384f33deaSJordan K. Hubbard1. Pass all variables in cron's environment into the environment of things 31484f33deaSJordan K. Hubbard cron starts up, or at least into the crontab entries started up (at jobs 31584f33deaSJordan K. Hubbard will inherit the environment of the user). If nothing else it is critically 31684f33deaSJordan K. Hubbard important that the TZ variable be passed on. PATH should be passed on too. 31784f33deaSJordan K. Hubbard Basically, passing environment values allows one to design a standard 31884f33deaSJordan K. Hubbard environment with TZ and PATH and have that run by everything. If anyone 31984f33deaSJordan K. Hubbard tells you this is no big deal, consider what happens when uucico is 32084f33deaSJordan K. Hubbard started by cron in CA to make a long distance phone link... Unless the 32184f33deaSJordan K. Hubbard administrator is really on his/her toes, calls scheduled at 5pm will really 32284f33deaSJordan K. Hubbard go at two in the afternoon, needlessly incurring huge phone bills, all 32384f33deaSJordan K. Hubbard because System V refuses to pass the TZ from its environment down. There 32484f33deaSJordan K. Hubbard are work arounds, but only putting it in cron will really work. This is 32584f33deaSJordan K. Hubbard not a security hole. 32684f33deaSJordan K. Hubbard 32784f33deaSJordan K. Hubbard<< delete TERM and TERMCAP; modify HOME, USER, and CWD; pass TZ and 32884f33deaSJordan K. Hubbard PATH through undisturbed. any other requests out there? 32984f33deaSJordan K. Hubbard 33084f33deaSJordan K. Hubbard BSD doesn't have this problem -- TZ is passed right on through if 33184f33deaSJordan K. Hubbard you define it in the shell before starting my cron daemon. However, 33284f33deaSJordan K. Hubbard the BSD I'm running this on doesn't need TZ to be defined anyway... 33384f33deaSJordan K. Hubbard The default in the kernel has been just fine so far... But just the 33484f33deaSJordan K. Hubbard same, if/when I port to SysV (I guess I really should), I'll make 33584f33deaSJordan K. Hubbard sure this works right. 33684f33deaSJordan K. Hubbard 33784f33deaSJordan K. Hubbard I guess I've been spoiled. HPUX is SysV-based, and I never had a 33884f33deaSJordan K. Hubbard problem with cron and TZ when I used it. >> 33984f33deaSJordan K. Hubbard 34084f33deaSJordan K. Hubbard2. A way to avoid logging stuff in /usr/lib/cron/log. I have a cron entry 34184f33deaSJordan K. Hubbard run uudemon.hr every 10 minutes. This is 144 times/day. Each run generates 34284f33deaSJordan K. Hubbard three lines of text, for a total of 432 lines of text I don't want to see. 34384f33deaSJordan K. Hubbard Obviously this should be optional, but it would be nice if there were a 34484f33deaSJordan K. Hubbard way to flag an entry so that it wasn't logged at all unless there was an 34584f33deaSJordan K. Hubbard error. 34684f33deaSJordan K. Hubbard 34784f33deaSJordan K. Hubbard<< I don't know nothin' 'bout no /usr/lib/cron/log. What is this file? 34884f33deaSJordan K. Hubbard I don't see any reason to create log entries, given the mail-the- 34984f33deaSJordan K. Hubbard output behaviour. Opinions, anyone? >> 35084f33deaSJordan K. Hubbard 35184f33deaSJordan K. HubbardI will come up with other ideas no doubt, but I can always implement them 35284f33deaSJordan K. Hubbardmyself. 35384f33deaSJordan K. Hubbard 35484f33deaSJordan K. Hubbard<< That's what I like about PD software. Please send me the diffs! >> 35584f33deaSJordan K. Hubbard 35684f33deaSJordan K. HubbardThe other problem you have is making sure you can run standard 35784f33deaSJordan K. Hubbardcrontabs. I would suggest something like this: if the command part of the 35884f33deaSJordan K. Hubbardentry starts with an unescaped -, then flags and options follow immediately 35984f33deaSJordan K. Hubbardthereafter. As in: 36084f33deaSJordan K. Hubbard 36184f33deaSJordan K. Hubbard2,12,22,32,42,52 * * * * -q /usr/lib/uucp/uudemon.hr 36284f33deaSJordan K. Hubbard 36384f33deaSJordan K. HubbardThis could mean do not log the uudemon.hr run unless there is a problem of 36484f33deaSJordan K. Hubbardsome kind. This is probably safe as not many filenames start with "-", and 36584f33deaSJordan K. Hubbardthose that do are already a problem for people. 36684f33deaSJordan K. Hubbard 36784f33deaSJordan K. Hubbard<< Since I don't plan on supporting /usr/lib/cron/log in ANY form unless 36884f33deaSJordan K. Hubbard many people request it, I won't be needing -q as you've defined it. 36984f33deaSJordan K. Hubbard I could use something like this to avoid sending mail on errors, for 37084f33deaSJordan K. Hubbard the occasional script that you don't want to bullet-proof. 37184f33deaSJordan K. Hubbard 37284f33deaSJordan K. Hubbard The compatibility issue is CRITICAL. The 4.3BSD crontab format is 37384f33deaSJordan K. Hubbard a crime against the whole philosophy of Unix(TM), in my opinion. >> 37484f33deaSJordan K. Hubbard 37584f33deaSJordan K. HubbardOne other minor thing to consider is the ulimit: can different users get 37684f33deaSJordan K. Hubbarddifferent ulimits for their crontab entries? 37784f33deaSJordan K. Hubbard 37884f33deaSJordan K. Hubbard<< Boy I'm ignorant today. What's a ulimit, and what should I do with 37984f33deaSJordan K. Hubbard it in a crontab? Suggestions, enlightenment, etc ?? >> 38084f33deaSJordan K. Hubbard 38184f33deaSJordan K. HubbardFrom qantel!lll-crg!ames!uw-beaver!uw-nsr!john Tue Jan 6 23:32:44 1987 38284f33deaSJordan K. HubbardDate: Thu, 1 Jan 87 10:53:05 pst 38384f33deaSJordan K. HubbardFrom: lll-crg!ames!uw-beaver!uw-nsr!john (John Sambrook 5-7433) 38484f33deaSJordan K. HubbardTo: vixie!paul 38584f33deaSJordan K. HubbardStatus: RO 38684f33deaSJordan K. Hubbard 38784f33deaSJordan K. HubbardHow about not hardwiring the default environment that cron builds for its 38884f33deaSJordan K. Hubbardchildren in the cron program itself? Our cron does this and it's the pits 38984f33deaSJordan K. Hubbardbecause we are TZ=PST8PDT not TZ=EST5EDT ! 39084f33deaSJordan K. Hubbard 39184f33deaSJordan K. Hubbard<< yeachk. I assure you, I will not hardwire the TZ! >> 39284f33deaSJordan K. HubbardFrom ptsfa!well!dv Fri Jan 9 04:01:50 1987 39384f33deaSJordan K. HubbardDate: Thu, 8 Jan 87 23:50:40 pst 39484f33deaSJordan K. HubbardFrom: well!dv (David W. Vezie) 39584f33deaSJordan K. HubbardTo: ptsfa!vixie!paul 39684f33deaSJordan K. HubbardStatus: RO 39784f33deaSJordan K. Hubbard 39884f33deaSJordan K. Hubbard6, have a special notation called 'H' which would expand to weekends 39984f33deaSJordan K. Hubbard and holidays (you'd have to keep a database somewhere of real 40084f33deaSJordan K. Hubbard holidays), and also 'W' for workdays (neither weekend or holiday). 40184f33deaSJordan K. Hubbard 40284f33deaSJordan K. Hubbard<< Too much work. There should be a standard way to define and 40384f33deaSJordan K. Hubbard detect holidays under Unix(TM); if there were, I'd use it. As 40484f33deaSJordan K. Hubbard it is, I'll leave this for someone else to add. 40584f33deaSJordan K. Hubbard 40684f33deaSJordan K. Hubbard I can see the usefulness; it just doesn't quite seem worth it. >> 40784f33deaSJordan K. HubbardFrom qantel!gatech!akgua!blnt1!jat Wed Jan 14 20:00:40 1987 40884f33deaSJordan K. HubbardDate: Tue, 13 Jan 87 16:39:38 EST 40984f33deaSJordan K. HubbardFrom: gatech!akgua!blnt1!jat 41084f33deaSJordan K. HubbardStatus: RO 41184f33deaSJordan K. Hubbard 41284f33deaSJordan K. Hubbard1) Add some way to tell cron to reread the files, say kill -1 <pid> 41384f33deaSJordan K. Hubbard 41484f33deaSJordan K. Hubbard<< whenever the 'crontab' program is run and updates a crontab file, 41584f33deaSJordan K. Hubbard a file /usr/spool/cron/POKECRON is created; next time the cron 41684f33deaSJordan K. Hubbard daemon wakes up, it sees it, and re-reads the crontab files. 41784f33deaSJordan K. Hubbard 41884f33deaSJordan K. Hubbard I thought of handling the signal; even implemented it. Then this 41984f33deaSJordan K. Hubbard clever idea hit me and I ripped it all out and added a single 42084f33deaSJordan K. Hubbard IF-statement to handle the POKECRON file. >> 42184f33deaSJordan K. Hubbard 42284f33deaSJordan K. Hubbard2) Have some kind of retry time so that if a command fails, cron will try to 42384f33deaSJordan K. Hubbard execute it again after a certain period. This is useful if you have some 42484f33deaSJordan K. Hubbard type of cleanup program that can run at the scheduled time for some reason 42584f33deaSJordan K. Hubbard (such as locked device, unmounted filesystem, etc). 42684f33deaSJordan K. Hubbard 42784f33deaSJordan K. Hubbard<< Hmmm, sounds useful. I could do this by submitting an 'at' job... 42884f33deaSJordan K. Hubbard I'll think about it. >> 42984f33deaSJordan K. HubbardFrom ptsfa!dual!ucbvax!ihnp4!mtuxo!ender Sat Jan 3 16:54:00 1987 43084f33deaSJordan K. HubbardFrom: dual!ucbvax!ihnp4!mtuxo!ender 43184f33deaSJordan K. HubbardDate: Sat, 3 Jan 87 14:05:13 PST 43284f33deaSJordan K. HubbardTo: ucbvax!dual!ptsfa!vixie!paul 43384f33deaSJordan K. HubbardStatus: RO 43484f33deaSJordan K. Hubbard 43584f33deaSJordan K. HubbardIt would be nice if nonprivileged users can setup personal crontab files 43684f33deaSJordan K. Hubbard(~/.cronrc, say) and be able to run personal jobs at regular intervals. 43784f33deaSJordan K. Hubbard 43884f33deaSJordan K. Hubbard<< this is done, but in the SysV style: the 'crontab' program installs 43984f33deaSJordan K. Hubbard a new crontab file for the executing user (can be overridden by root 44084f33deaSJordan K. Hubbard for setup of uucp and news). the advantage of this is that (1) when 44184f33deaSJordan K. Hubbard a crontab is changed, the daemon can be informed automatically; and 44284f33deaSJordan K. Hubbard (2) the file can be syntax-checked before installation. >> 44384f33deaSJordan K. HubbardFrom ptsfa!ames!seismo!ihnp4!lcc!richard Fri Jan 16 04:47:33 1987 44484f33deaSJordan K. HubbardDate: Fri, 16 Jan 87 07:44:57 EST 44584f33deaSJordan K. HubbardTo: nike!ptsfa!vixie!paul 44684f33deaSJordan K. HubbardStatus: RO 44784f33deaSJordan K. Hubbard 44884f33deaSJordan K. HubbardThe System V cron is nice, but it has a few annoying features. One is that 44984f33deaSJordan K. Hubbardits mail files will say that the previous message is the output of "one of your 450*3b31bf26SGordon Berglingcron commands." I wish it would say WHICH cron command. 45184f33deaSJordan K. Hubbard 45284f33deaSJordan K. Hubbard<< Done. Also which shell, which user (useful when the mail gets 45384f33deaSJordan K. Hubbard forwarded), which home directory, and other useful crud. >> 45484f33deaSJordan K. Hubbard 45584f33deaSJordan K. HubbardAnother problem is with timezones. It is necessary to specify TZ=PST8PDT (or 45684f33deaSJordan K. Hubbardwhatever) when you invoke cron (from inittab, or /etc/rc) and it is also 45784f33deaSJordan K. Hubbardnecessary to add TZ=PST8PDT to each crontab line which might need it. Cron 45884f33deaSJordan K. Hubbardshould automatically export its idea of the "TZ" to each invoked command, and 45984f33deaSJordan K. Hubbardit should be possible to put a line in the crontab file which overrides that 46084f33deaSJordan K. Hubbardfor every command in the file (e.g., most users are on EST, so cron is run 46184f33deaSJordan K. Hubbardwith TZ=EST5EDT; but one user is usually on PST and wants all of his cron 46284f33deaSJordan K. Hubbardcommands to run with TZ=PST8PDT). This might be extended to allow any 46384f33deaSJordan K. Hubbardenvironment variable to be specified once for the whole crontab file (e.g., 46484f33deaSJordan K. HubbardPATH). 46584f33deaSJordan K. Hubbard 46684f33deaSJordan K. Hubbard<< Well, since I run the user's shell, you could put this into .cshrc. 46784f33deaSJordan K. Hubbard generic environment-variable setting could be useful, though. Since 46884f33deaSJordan K. Hubbard I have to modify the environment anyway, I'll consider this. >> 46984f33deaSJordan K. Hubbard 47084f33deaSJordan K. HubbardA log file might be a nice idea, but the System V cron log is too verbose. 47184f33deaSJordan K. HubbardI seem to remember that cron keeps it open, too; so you can't even have 47284f33deaSJordan K. Hubbardsomething go and periodically clean it out. 47384f33deaSJordan K. Hubbard 47484f33deaSJordan K. Hubbard<< I don't do /usr/lib/cron/log. I wasn't aware of this file until I 47584f33deaSJordan K. Hubbard got all these suggestions. Do people want this file? Tell me! >> 476