Cron/2

Version: 
1.41
Release date: 
Tuesday, 31 January, 1995

License:

Interface:

UNIX cron clone. Cron/2 is able to communicate with Syslogd/2.

This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. See below for download link(s).

You can install the prerequisites with rpm running the following string in a command line:

yum install emxrt RXU

Online documentation:

Following ones are the download links for manual installation:

Cron/2 (1/9/2024, Anton Monroe) Readme/What's new
A third generation of the Cron.cmd daemon started by Jeroen Hoppenbrouwers and improved by Paul Ratcliffe. This version fixes a few bugs, is more Unix-like, and adds support for ranges, lists, step values, and names of days and months. The Cron daemon can be paused for a given number of minutes, running the delayed jobs when it resumes. Comes with a startup script that lets you start, stop, query, pause, and resume the Cron daemon from the command line. ------------------------------------------------------------- Cron.cmd is the Cron daemon that runs scheduled jobs. It is normally launched by typing StartCron.cmd START You can stop the daemon with StartCron.cmd STOP Any customizing you might want to do can be done by editing the Setup section at the beginning of StartCron.cmd. In most cases you will not need to do even that. The usual configuration is Unix-like. If you have a %Unixroot variable, Cron.cmd will read a crontab file at %etc\crontab or %unixroot\etc\crontab, log messages to %unixroot\var\log\<logfile>, and create a PID file at %unixroot\var\run\cron.pid. If you do not have a Unixroot, everything will be in the same directory as StartCron.cmd. There are a couple of things I added for my own convenience. If a directory called \var\run\init\ exists, Cron.cmd will use that for its PID file instead of \var\run\; and if a directory \var\log\cron\ exists, it will be used for log file(s) instead of \var\log\. To see the available commands and current configuration, type StartCron.cmd HELP Normally the Cron.cmd daemon is a detached session. For testing you can type StartCron.cmd START -foreground which will run it in a VIO window with logging to the screen. Cron.cmd will start a new log file at the beginning of each month. The files will have names like "cron-2024-08-Aug.log". To change that, you will need to edit the Setup section of StartCron.cmd where it says renamelog = 'month' the other choices are renamelog = 'day' renamelog = 'never' For the format of the crontab file, see the comments in the example crontab included here. It provides most but not all of the features of Unix cron. Bug reports and suggestions are welcome. Anton Monroe
 www.hobbesarchive.com/Hobbes/pub/os2/util/schedule/CronCmd_3.zip  local copy
Cron (3/10/2003, Jeroen Hoppenbrouwers, Paul Ratcliffe) Readme/What's new
Simple but efficient and functional UNIX Cron clone for OS/2 ============================================================ This program got written in a hurry since the available Cron clones for OS/2 didn't do what I needed: dispatch jobs in the background while running *invisibly* on my system. What is Cron? ------------- Cron (the name is a UNIX relic) is a process that gets started when your machine boots and never stops until you shutdown. During its life, it checks the contents of a certain disk file every minute (you can easily change the timing granularity e.g. to 5 minutes). If it finds that the current time and date are matched by an entry in the file, Cron starts up the process also named in the file. This sounds boring but in practice, Cron is the most handy tool for repetitive background scheduling I ever encountered. Controlling Cron: the CRONTAB file ---------------------------------- The CRONTAB file (UNIX relic again) contains the control lines for Cron. Each line contains six elements: m h d m w command The first five elements are time and date patterns. A star '*' here means "always fits". So, if you want to run a certain program each day at noon, you enter 0 12 * * * command in the CRONTAB file. This line means: "if Cron detects that the current time and date equal zero minutes, 12 hours, any day-of-the-month, any month-of-the-year, and any day-of-the-week, it starts 'command'". In the same way, you can specify e.g. a backup program that runs on Mondays at 01:00 hours: 0 1 * * 1 command (1 = Monday, 7 = Sunday etc.). To be more flexible, Cron also accepts multiple values. A simple driver for a cuckoo clock program might contain: 0,30 * * * * command to fire up 'command' at each full and half hour. Ranges are also possible; to have the cuckoo keep its mouth shut during the night, you enter: 0,30 8-20 * * * command and you can combine both individual values and ranges as in 0,30 0,8-20 * * 1-5 command Comments can also be entered into the CRONTAB file; just start them with a # (in fact, Cron treats everything as a comment if it does not start with a number). Starting Cron ------------- Here the difficulty starts. The available Crons for OS/2 had to be started in a session of their own, because of the way in which they started the processes in the CRONTAB file. Running a program in a session however: A) Gives you an icon and an entry in the Window List B) Asks you to close the window at system shutdown C) Costs you more (memory) resources A) and B) especially troubled me. I wanted Cron to run completely invisibly, and to die without making trouble. This is only possible if you detach a program under OS/2 instead of start it. Unfortunately, detached programs cannot 'start' other programs (DosStartSession) and the available Crons did exactly this. To start CRON, type "detach cron". That's it. You get the PID of Cron back and could use that for a KILL command later on. Running Cron directly from a command prompt by just typing "cron" works as well and now you can follow Cron's output messages. Ctrl-C ends Cron. The CRONTAB file is located in the same directory as CRON.CMD If you want Cron to start up at each boot (the way it is intended to be run), be careful. You cannot just put Cron into your CONFIG.SYS file (with a "RUN=" command), since Cron uses some REXX functions that cannot be used if PM is not running. Don't ask me why; it just happened to be this way. So you either have to run Cron from your STARTUP.CMD file or from your Startup folder. In STARTUP.CMD, just add "detach cron". In your Startup folder, create a Program Object or shadow CRON.CMD to do the same. Personally I prefer the STARTUP.CMD file. You can log Cron activities and errors by making use of the OS/2 stdout and stderr redirection capabilities. Do something like: detach cron > cron.log 2> cron.err and you get two files usually with meaningful output. General ------- Cron was written in surprisingly few lines of REXX, OS/2's command script interpreter/compiler. Therefore the program is the source. You can modify everything you like. On my system, Cron's activities are barely noticeable (one flick of the disk, no CPU spike on PULSE). Instead of using SysSleep (a RexxUtil function) I could have used my self-written SLEEP program (five lines of C code) that would have enabled Cron to be started from the CONFIG.SYS. I didn't because SLEEP is not part of any standard distribution and I wanted to be as general as possible. Jeroen Hoppenbrouwers (hoppie@kub.nl) Infolab, Tilburg University The Netherlands
 hobbes.nmsu.edu/download/pub/os2/util/schedule/cron.zip  local copy
Cron/2 v. 1.41 (8/3/2001, Detlef Graef) Readme/What's new
CRON/2 Client/server-based timed program execution version 1.41 A program by Bob Hood Copyright (C) 1993-1994 Bob Hood CRON/2 is a copyrighted program. You may use CRON/2 in any environment for any purpose. You may not sell CRON/2, nor charge a fee for CRON/2 except where a nomimal charge would be applicable for electronically transferring CRON/2 any selected medium. Program and documentation Copyright (C) 1993-1994 Bob Hood. All Rights Reserved. OS/2 and products marked (TM) are trademarks or registered trademarks of IBM Corporation CRON/2 --------------------------------------------------------------------------- CRON/2 is another in a series of UNIX cron clones to the OS/2 platform. I didn't write CRON/2 to compete with any of the others; instead, I wrote CRON/2 to give me more control over my applications than the others. I missed the ability to specify the launching of applications to the degree afforded me by the UNIX version. Most clones for OS/2 I've seen (and I'm sure I've not seen them all) were not as closely modelled after the UNIX version as CRON/2. However, you can judge for yourself. CRON/2 adds a new (and perhaps worthless) twist in that it can be used for networking timed launches between systems. Utilizing TCP/IP, CRON/2 can act as a client, a server, or both in the same application by allowing CRON/2 to launch applications on remote systems at a time of its choosing. This allows a central machine to control the running of processes based upon factors that it alone is aware of (such as a central file server initiating individual machine backups when network load is minimal). CRON/2 provides both network and non-network versions in the same distribution. The non-network version, denoted by the lack of an "N" on the executable name (i.e., CRON2.EXE), is provided for those individuals without IBM's TCP/IP product installed. CRON/2 also offers the convenience of a second UNIX utility: the UNIX at command. The at command not only provides a quick method of launching a process once, it also provides a command-line interface to CRON/2 for other applications. If you like CRON/2, that's fantastic! It's my first OS/2 application. If you don't like CRON/2, that's fantastic too! Go find (or write) another that more closely suits your needs. I wrote CRON/2 to suit mine. WHO CAN USE CRON/2 ---------------------------------------------------------------------- Anybody. Anywhere. Anytime. This is a FreeWare product. The first of many of my contributions back to IBM for making its development environment easily accessable to developers. Thanks, Big Blue. You still have a lot of suprises left for us... THE FUTURE ---------------------------------------------------------------------- I plan to develop a PM version of CRON/2 that supports drag-and-drop and utilizes some container classes. Other additions will likely only be user-interface-related: I like CRON/2's mechanics of specifying and launching applications just the way it is. USING CRON/2 --------------------------------------------------------------------------- As I stated previously, I wrote CRON/2 for my own needs and edification. Because of this, you may find the documentation spartan (and then again, you may not; what I consider "spartan" others consider verbose). I will, however, explain enough to use the application. Please note that this documentation covers all aspects of the CRON/2 system (TCP/IP, non-TCP/IP, and at). If you have a version that does not utilize all of CRON/2's available functionality, simply skip those sections that aren't applicable. STARTING CRON/2 ---------------------------------------------------------------------- CRON/2 can be started with a number of command-line switches. The syntax appears as: CRON2N [[-n[s[0/1]]] [-s[0/1]] [-p<port>]] [-l[<logfile>]] for the TCP/IP version, or simply CRON2 [-l[<logfile>]] for the non-TCP/IP version. Each option is explained below: -n enables networking. this option will cause CRON/2 to initialize TCP/IP for use with entries in CRON2.DAT that specify a host name with braces ({}). Not specifying this option when CRON2.DAT contains remote launches, or a missing TCP/IP installation on your machine, will cause CRON/2 to ignore those entries. -s enables the built-in TCP/IP server. this server runs as a separate thread within CRON/2, and is required to allow remote CRON/2 process to launch applications locally on your machine. this parameter can be followed by an optional digit in the range 0 to 1. a value of 0 indicates that there will be no security for launching local processes initiated remotely. Any application that a remote CRON/2 process requests will cause the local CRON/2 to attempt to launch it. a value of 1 activates security on the local process. launch requests made by remote processes MUST appear identically in the local process's CRON2.DAT file, or the launch request will not be serviced. as illustrated, this parameter can be attached to the "-n" option to enable both client and server portions of CRON/2 in the same process using separate threads. -p specifies the TCP/IP port to use for initializing sockets. this value defaults to port 10000 if not specified. -l activates activity logging. this options creates the file "CRON2.LOG" in the same drive/directory that CRON/2 was started from. DIRECTING CRON/2: THE CRON2.DAT FILE ---------------------------------------------------------------------- Unlike UNIX, CRON/2 uses a single command file for specifying applications and launch times. This file is called CRON2.DAT, and MUST reside in the directory where the CRON/2 executable is started from. A sample CRON2.DAT file is provided in the distribution with sample entries commented out. With few execptions, the CRON2.DAT file appears and behaves identically to any UNIX cron files you may have worked with before: o Comments are denoted by a pound sign (#) in column one o Command entries appear one to a line o A virtually-unlimited number of entries may appear o Each entry contains the usual cron fields: o minute o hour o day o month o day of the week o executable file and options Beyond these items, the CRON2.DAT file contains some OS/2-specific entries necessary for controlling the types and appearance of applications when they are launched. Four additional fields appear in each application record: o Application type: "VDM", "OS2", or "PM" o Process priority: "FG" for foreground, "BG" for background) o Appearance of application: "WIND" for windowed, "FULL" for full screen The fourth field, not highlighted above, is optional, and preceeds the path/executable entry in the CRON2.DAT file. This field is denoted by braces ({}), and specifies the name of a remote system on which this application should be launched. Addtionally, each appearance token (WIND or FULL) may be followed by a minus sign (-) to indicate that the application should be started as a minimized icon. Appearing at the extreme bottom of the CRON2.DAT file is the "at" delimeter, represented by the at sign (@). It is extremely important that all of your normal CRON/2 entries appear in the CRON2.DAT file before this token. CRON/2 uses the entries following the @ token in of the CRON2.DAT file to house the at command's entries (see the at command later in this document). Be warned that entries in this section come and go without warning. Treat the @ symbol as an electric fence around a off-limits area. Also, CRON/2 will function with or without the @ token appearing in the file, however the at command will not. If you remove the @ token, using the at command will produce undefined results (so just leave it there ;-). The following are example CRON/2 entries that I use to control my USENET news feed from OS/2: 0 1 * * * VDM BG WIND c:\usenet\snews\expire.bat | 25,55 0-6 * * * VDM BG WIND c:\usenet\snews\sendbtch.bat 0,30 * * * * OS2 BG FULL- c:\uucp_os2.cmd 0 2 * * * OS2 FG WIND del c:\os2\locks\*.lck For those of you unfamiliar with cron, the first entry launches the MS-DOS batch file "expire.bat" in the "c:\usenet\snews" directory at 1:00 am each day. It runs in a Virtual DOS Machine session, in the background, in a PM window. | The second entry is different in that it runs an MS-DOS batch file at | 25 and 55 after each hour between midnight and six (00:00-06:00). The third entry operates on an OS/2-specific command file. This command file is initiated at the top of, and half past, each hour. It is run in an OS/2 text session, in the background, in a full-screen window that is minimized to a Presentation Manager icon as soon as it starts. You can specify multiple entries for minute, day, hour, month, and day-of-the-week by separating them with commas. You can find additional information about cron by consulting a UNIX manual or man page. DEALING WITH NON-FILES ---------------------------------------------------------------------- When CRON/2 processes CRON2.DAT, it performs a verification of each executable to make sure that it exists and can be found where you've indicated it should be (if a drive/path is included with the name). However, if CRON/2 cannot verify the program's existence, it will assume that it is not smart enough to determine your intent. It will assume that the command processor you are using (CMD.EXE, 4OS2-32.EXE, etc.) IS smart enough and will submit it directly. Using this method, it is possible to embed built-in shell commands in CRON2.DAT instead of having to preface the entry with the name of your command processor, or creating another command file to perform the function. All non-file entries in CRON2.DAT are set to execute as OS/2 applictions. DYNAMIC SYNCHRONIZING ---------------------------------------------------------------------- To avoid having to stop and re-start CRON/2 when changes are made to CRON2.DAT, CRON/2 will check CRON2.DAT each minute to see if it has been changed since CRON/2 was started (or since the last time it processed CRON2.DAT). CRON/2 checks the size and date/time stamp of the CRON2.DAT file. If the file has changed since CRON/2 started or the last synchronize, CRON/2 will release it's internal list of processes, and create a new list with the altered contents of CRON2.DAT. DIRECTING ANOTHER CRON/2: REMOTE TIMED LAUCHING ---------------------------------------------------------------------- In the TCP/IP version (CRON2N.EXE), CRON/2 has the ability to launch applications on other TCP/IP-networked OS/2 systems running another CRON/2 process with its TCP/IP server activated. To utilize this feature, you must have acquired and sucessfully installed IBM's TCP/IP 1.2 (TM) product on each system that you plan to run the CRON/2 server on. You specify this unique cron feature in two ways: first, you must activate CRON/2's TCP/IP support when it is started by one or a combination of the -n or -s command-line paramaters; second, you can optionally select entries in CRON2.DAT to launch on remote systems by prefixing the executable name with the name of the remote system. Here is an example entry: 11,38,42,59 * * * * PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe This entry in CRON2.DAT will launch the OS/2 PM Jigsaw application in a full-screen Presentation Manager window as the foreground application at 11, 38, 42, and 59 minutes after each hour. The difference in this entry is that it doesn't launch on the local machine, but on the remote machine named "bhlocal1". If you use domain names to specify remote machines, the domain name must reside in your TCPIP\ETC\hosts file. You may also elect to specify remote hosts in dotted-decimal format to avoid domain name resolving (i.e., {192.100.100.2} instead of {bhlocal1}). Needless to say, the application (and path) you specify for the remote machine should actually exist. If security has been activated on the remote machine (i.e., -s1 or -ns1), with the exception of the time/date/dow information, the application entry fields in the local CRON2.DAT file must match EXACTLY with those contained in the remote machine's CRON2.DAT file for the application to be successfully launched remotely. The following examples illustrate a local and remote CRON2.DAT entry. Each entry will fail remote execution (note that time/date/dow information is not illustrated because is has no impact): PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM BG FULL {bhlocal1}c:\os2\apps\jigsaw.exe -- PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL- {bhlocal1}c:\os2\apps\jigsaw.exe ----- PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL {bhlocal1}c:\os2\apps\jigsaw ---------- However, the next two entries WILL successfully compare because options are not taken into consideration (note that the illustrated options to Jigsaw are bogus): PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe -3 -new Formatting of fields is not important, so spaces and tabs between fields in the CRON2.DAT will not be taken into consideration when security is active. LOG-ABLE COMMENTS --------------------------------------------------------------------------- It is sometimes useful to accompany log files with comments. For this reason, CRON/2 allows "logable" comments to be included in the CRON2.DAT file. Normal comments in the CRON2.DAT file are denoted by the pound sign (#) in the first column a CRON2.DAT line. Logable comments denoted by a pound sign followed by a dollar sign (#$). Logable comments must immediately preceed their CRON2.DAT entries. For example, #$ Ensure that all local articles are forwarded! 25,55 * * * * VDM BG WIND d:\usenet\snews\sendbtch.bat would result in a log file entry like # Ensure that all local articles are forwarded! Launching sendbtch.bat 8.03.1993 @ 00:55...done! "AT" YOUR COMMAND --------------------------------------------------------------------------- CRON/2 now sports a new, single-launch system that duplicates the functionality of the UNIX at command. The command is, in fact, called "at", and is a completely separate executable. Like CRON/2, the at sub-command of CRON/2 duplicates the operation of it's UNIX counterpart as closely as possible. And, like CRON/2, the CRON/2 at sub-command has both UNIX-specific and OS/2-specific parts. The CRON/2 at command has the following input parameters: at [-m] [-l] time [date] [[next | +increment] time_designation] job With the exception of the "-l" and "job" parameters, CRON/2's at command is identical to UNIX's. You can simply reference a UNIX man page for the at command for more information. The -l option allows you to get a quick look at what "job"s have been queued (keep in mind that if a queued job has launched, it will no longer be in the queue). The -m option, while it sends mail to the submitter when a queued job has been processed, does nothing (yet) under CRON/2. The remaining extension, "job", represents the parameters that must be provided to CRON/2's at command to complete the queuing of a job. The items are essentially identical to those that are placed into the CRON2.DAT file (sans the time/date information). For instance, here are the CRON/2 entries given previously as examples, represented in both CRON2.DAT and CRON/2 at format: 25,55 * * * * VDM BG WIND c:\usenet\snews\sendbtch.bat would become at now + 10 minutes vdm bg wind c:\usenet\snews\sendbtch.bat As a further example, 0,30 * * * * OS2 BG FULL- c:\uucp_os2.cmd could be used as at 9:30am tomorrow os2 bg full- c:\uucp_os2.cmd Another example: at 5am tuesday + 2 weeks vdm bg wind c:\usenet\snews\expire.bat Other combinations are left as an exercise for the reader =|^). COMMUNICATING WITH CRON/2 ---------------------------------------------------------------------- The CRON/2 at sub-command communicates with an operating CRON/2 process via a named piped. CRON/2 must be operational before you invoke the at command. Also, because the at command communicates through a named pipe, it can be run from literally anywhere (it doesn't have be in the same directory as CRON/2). GOTCHAS (non-bugs) --------------------------------------------------------------------------- o CRON/2 will barf if you specify either -ns1 or -s1 and there is no local CRON2.DAT file... o Starting CRON/2 with an empty CRON2.DAT file will generate a richly-deserved insult about your questionable parentage... o System error messages detected by CRON/2 are displayed as decimal only o If you are running any .CMD files from CRON2.DAT, you MUST have COMSPEC set in your OS/2 environment (this is usually automatic) o You can't fool OS/2 into running a minimized process as the foreground process...it knows you're only human... WHAT THE ... ?! (known bugs) --------------------------------------------------------------------------- o Starting applications with the FG token, either locally or remotely, will occasionally generate a 457 (ERROR_SMG_START_IN_BACKGROUND) error...I don't know why yet. Your process will run, however. o CRON/2 was developed using a beta compiler on a beta platform... so there... BUG REPORTS, QUESTIONS, COMMENTS, ATTA-BOYS... --------------------------------------------------------------------------- Bob Hood Mailnet : 1217 S. Independence Street Lakewood, CO 80232 | Internet : rhood@nyx.cs.du.edu <--- preferred!! | bbh@csci.csc.com AT&Tnet : (303) 980-8392 HISTORY --------------------------------------------------------------------------- 1.0 - Initial release 1.1 05.19.93 - added activity logging - added dynamic synchronizing of the CRON2.DAT file 1.2 05.26.93 - corrected a bug introduced in 1.1 that suspended the update of the on-screen date/time - corrected a problem with dynamic synchronizing that disabled the feature after the first process is launched - re-designed logging mechanism to allow access to the log file with any file viewer/editor while CRON/2 is running - added a mechanism to push log messages onto a FIFO queue when CRON/2 cannot access the log file - removed the option to specify a different log file as a result of CRON/2 changing drive/paths 1.3 08.06.93 - Corrected a bug that prevented CMD.EXE from launching processes correctly. CRON/2 was developed using 4OS2, which behaves differently. (Sorry Todd) - Added more fault tolerance for the handling of non-fatal errors - Altered CRON/2's behaviour with non-existent programs. Instead of issuing a warning and ignoring an entry if it cannot be physically located during CRON2.DAT processing, CRON/2 now marks the entry as a CMD file and submits it directly to %COMSPEC%. This allows built-in shell commands ("del", "copy", "move", etc.) to be used instead in place of executable programs. - Added logable comments to the CRON2.DAT file. Comments starting with "#$" are saved and associated with the entries they immediately preceed. These comments are then posted to the log file immediately preceeding the processes launch log. (Jon Hacker) - Split CRON/2 into network and non-network versions. Starting with this version, client/server versions of CRON/2 will contain an `n' after their version numbers (i.e., 1.3n). - Added the external `at' command. - Changed the misspelled word "questionalble" in the doc ;-) - Began including change-bars to illustrate new sections of the document between versions for veteran CRON/2 users. 1.4 ??.??.?? - Added the range operator (-) to the CRON2.DAT file. - Released the complete source code to the system. 1.41 02.2001 - Source can be compiled with IBM VAC++ 3.0 - minor changes to the source has been made dgraef@altavista.de
 hobbes.nmsu.edu/download/pub/os2/util/schedule/cron2141.zip  local copy
Cron v. 1.41 (24/1/2001, Bob Hood) Readme/What's new
CRON/2 Client/server-based timed program execution version 1.4 A program by Bob Hood Copyright (C) 1993-1994 Bob Hood CRON/2 is a copyrighted program. You may use CRON/2 in any environment for any purpose. You may not sell CRON/2, nor charge a fee for CRON/2 except where a nomimal charge would be applicable for electronically transferring CRON/2 any selected medium. Program and documentation Copyright (C) 1993-1994 Bob Hood. All Rights Reserved. OS/2 and products marked (TM) are trademarks or registered trademarks of IBM Corporation CRON/2 --------------------------------------------------------------------------- CRON/2 is another in a series of UNIX cron clones to the OS/2 platform. I didn't write CRON/2 to compete with any of the others; instead, I wrote CRON/2 to give me more control over my applications than the others. I missed the ability to specify the launching of applications to the degree afforded me by the UNIX version. Most clones for OS/2 I've seen (and I'm sure I've not seen them all) were not as closely modelled after the UNIX version as CRON/2. However, you can judge for yourself. CRON/2 adds a new (and perhaps worthless) twist in that it can be used for networking timed launches between systems. Utilizing TCP/IP, CRON/2 can act as a client, a server, or both in the same application by allowing CRON/2 to launch applications on remote systems at a time of its choosing. This allows a central machine to control the running of processes based upon factors that it alone is aware of (such as a central file server initiating individual machine backups when network load is minimal). CRON/2 provides both network and non-network versions in the same distribution. The non-network version, denoted by the lack of an "N" on the executable name (i.e., CRON2.EXE), is provided for those individuals without IBM's TCP/IP product installed. CRON/2 also offers the convenience of a second UNIX utility: the UNIX at command. The at command not only provides a quick method of launching a process once, it also provides a command-line interface to CRON/2 for other applications. If you like CRON/2, that's fantastic! It's my first OS/2 application. If you don't like CRON/2, that's fantastic too! Go find (or write) another that more closely suits your needs. I wrote CRON/2 to suit mine. WHO CAN USE CRON/2 ---------------------------------------------------------------------- Anybody. Anywhere. Anytime. This is a FreeWare product. The first of many of my contributions back to IBM for making its development environment easily accessable to developers. Thanks, Big Blue. You still have a lot of suprises left for us... THE FUTURE ---------------------------------------------------------------------- I plan to develop a PM version of CRON/2 that supports drag-and-drop and utilizes some container classes. Other additions will likely only be user-interface-related: I like CRON/2's mechanics of specifying and launching applications just the way it is. USING CRON/2 --------------------------------------------------------------------------- As I stated previously, I wrote CRON/2 for my own needs and edification. Because of this, you may find the documentation spartan (and then again, you may not; what I consider "spartan" others consider verbose). I will, however, explain enough to use the application. Please note that this documentation covers all aspects of the CRON/2 system (TCP/IP, non-TCP/IP, and at). If you have a version that does not utilize all of CRON/2's available functionality, simply skip those sections that aren't applicable. STARTING CRON/2 ---------------------------------------------------------------------- CRON/2 can be started with a number of command-line switches. The syntax appears as: CRON2N [[-n[s[0/1]]] [-s[0/1]] [-p<port>]] [-l[<logfile>]] for the TCP/IP version, or simply CRON2 [-l[<logfile>]] for the non-TCP/IP version. Each option is explained below: -n enables networking. this option will cause CRON/2 to initialize TCP/IP for use with entries in CRON2.DAT that specify a host name with braces ({}). Not specifying this option when CRON2.DAT contains remote launches, or a missing TCP/IP installation on your machine, will cause CRON/2 to ignore those entries. -s enables the built-in TCP/IP server. this server runs as a separate thread within CRON/2, and is required to allow remote CRON/2 process to launch applications locally on your machine. this parameter can be followed by an optional digit in the range 0 to 1. a value of 0 indicates that there will be no security for launching local processes initiated remotely. Any application that a remote CRON/2 process requests will cause the local CRON/2 to attempt to launch it. a value of 1 activates security on the local process. launch requests made by remote processes MUST appear identically in the local process's CRON2.DAT file, or the launch request will not be serviced. as illustrated, this parameter can be attached to the "-n" option to enable both client and server portions of CRON/2 in the same process using separate threads. -p specifies the TCP/IP port to use for initializing sockets. this value defaults to port 10000 if not specified. -l activates activity logging. this options creates the file "CRON2.LOG" in the same drive/directory that CRON/2 was started from. DIRECTING CRON/2: THE CRON2.DAT FILE ---------------------------------------------------------------------- Unlike UNIX, CRON/2 uses a single command file for specifying applications and launch times. This file is called CRON2.DAT, and MUST reside in the directory where the CRON/2 executable is started from. A sample CRON2.DAT file is provided in the distribution with sample entries commented out. With few execptions, the CRON2.DAT file appears and behaves identically to any UNIX cron files you may have worked with before: o Comments are denoted by a pound sign (#) in column one o Command entries appear one to a line o A virtually-unlimited number of entries may appear o Each entry contains the usual cron fields: o minute o hour o day o month o day of the week o executable file and options Beyond these items, the CRON2.DAT file contains some OS/2-specific entries necessary for controlling the types and appearance of applications when they are launched. Four additional fields appear in each application record: o Application type: "VDM", "OS2", or "PM" o Process priority: "FG" for foreground, "BG" for background) o Appearance of application: "WIND" for windowed, "FULL" for full screen The fourth field, not highlighted above, is optional, and preceeds the path/executable entry in the CRON2.DAT file. This field is denoted by braces ({}), and specifies the name of a remote system on which this application should be launched. Addtionally, each appearance token (WIND or FULL) may be followed by a minus sign (-) to indicate that the application should be started as a minimized icon. Appearing at the extreme bottom of the CRON2.DAT file is the "at" delimeter, represented by the at sign (@). It is extremely important that all of your normal CRON/2 entries appear in the CRON2.DAT file before this token. CRON/2 uses the entries following the @ token in of the CRON2.DAT file to house the at command's entries (see the at command later in this document). Be warned that entries in this section come and go without warning. Treat the @ symbol as an electric fence around a off-limits area. Also, CRON/2 will function with or without the @ token appearing in the file, however the at command will not. If you remove the @ token, using the at command will produce undefined results (so just leave it there ;-). The following are example CRON/2 entries that I use to control my USENET news feed from OS/2: 0 1 * * * VDM BG WIND c:\usenet\snews\expire.bat | 25,55 0-6 * * * VDM BG WIND c:\usenet\snews\sendbtch.bat 0,30 * * * * OS2 BG FULL- c:\uucp_os2.cmd 0 2 * * * OS2 FG WIND del c:\os2\locks\*.lck For those of you unfamiliar with cron, the first entry launches the MS-DOS batch file "expire.bat" in the "c:\usenet\snews" directory at 1:00 am each day. It runs in a Virtual DOS Machine session, in the background, in a PM window. | The second entry is different in that it runs an MS-DOS batch file at | 25 and 55 after each hour between midnight and six (00:00-06:00). The third entry operates on an OS/2-specific command file. This command file is initiated at the top of, and half past, each hour. It is run in an OS/2 text session, in the background, in a full-screen window that is minimized to a Presentation Manager icon as soon as it starts. You can specify multiple entries for minute, day, hour, month, and day-of-the-week by separating them with commas. You can find additional information about cron by consulting a UNIX manual or man page. DEALING WITH NON-FILES ---------------------------------------------------------------------- When CRON/2 processes CRON2.DAT, it performs a verification of each executable to make sure that it exists and can be found where you've indicated it should be (if a drive/path is included with the name). However, if CRON/2 cannot verify the program's existence, it will assume that it is not smart enough to determine your intent. It will assume that the command processor you are using (CMD.EXE, 4OS2-32.EXE, etc.) IS smart enough and will submit it directly. Using this method, it is possible to embed built-in shell commands in CRON2.DAT instead of having to preface the entry with the name of your command processor, or creating another command file to perform the function. All non-file entries in CRON2.DAT are set to execute as OS/2 applictions. DYNAMIC SYNCHRONIZING ---------------------------------------------------------------------- To avoid having to stop and re-start CRON/2 when changes are made to CRON2.DAT, CRON/2 will check CRON2.DAT each minute to see if it has been changed since CRON/2 was started (or since the last time it processed CRON2.DAT). CRON/2 checks the size and date/time stamp of the CRON2.DAT file. If the file has changed since CRON/2 started or the last synchronize, CRON/2 will release it's internal list of processes, and create a new list with the altered contents of CRON2.DAT. DIRECTING ANOTHER CRON/2: REMOTE TIMED LAUCHING ---------------------------------------------------------------------- In the TCP/IP version (CRON2N.EXE), CRON/2 has the ability to launch applications on other TCP/IP-networked OS/2 systems running another CRON/2 process with its TCP/IP server activated. To utilize this feature, you must have acquired and sucessfully installed IBM's TCP/IP 1.2 (TM) product on each system that you plan to run the CRON/2 server on. You specify this unique cron feature in two ways: first, you must activate CRON/2's TCP/IP support when it is started by one or a combination of the -n or -s command-line paramaters; second, you can optionally select entries in CRON2.DAT to launch on remote systems by prefixing the executable name with the name of the remote system. Here is an example entry: 11,38,42,59 * * * * PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe This entry in CRON2.DAT will launch the OS/2 PM Jigsaw application in a full-screen Presentation Manager window as the foreground application at 11, 38, 42, and 59 minutes after each hour. The difference in this entry is that it doesn't launch on the local machine, but on the remote machine named "bhlocal1". If you use domain names to specify remote machines, the domain name must reside in your TCPIP\ETC\hosts file. You may also elect to specify remote hosts in dotted-decimal format to avoid domain name resolving (i.e., {192.100.100.2} instead of {bhlocal1}). Needless to say, the application (and path) you specify for the remote machine should actually exist. If security has been activated on the remote machine (i.e., -s1 or -ns1), with the exception of the time/date/dow information, the application entry fields in the local CRON2.DAT file must match EXACTLY with those contained in the remote machine's CRON2.DAT file for the application to be successfully launched remotely. The following examples illustrate a local and remote CRON2.DAT entry. Each entry will fail remote execution (note that time/date/dow information is not illustrated because is has no impact): PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM BG FULL {bhlocal1}c:\os2\apps\jigsaw.exe -- PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL- {bhlocal1}c:\os2\apps\jigsaw.exe ----- PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL {bhlocal1}c:\os2\apps\jigsaw ---------- However, the next two entries WILL successfully compare because options are not taken into consideration (note that the illustrated options to Jigsaw are bogus): PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe PM FG FULL {bhlocal1}c:\os2\apps\jigsaw.exe -3 -new Formatting of fields is not important, so spaces and tabs between fields in the CRON2.DAT will not be taken into consideration when security is active. LOG-ABLE COMMENTS --------------------------------------------------------------------------- It is sometimes useful to accompany log files with comments. For this reason, CRON/2 allows "logable" comments to be included in the CRON2.DAT file. Normal comments in the CRON2.DAT file are denoted by the pound sign (#) in the first column a CRON2.DAT line. Logable comments denoted by a pound sign followed by a dollar sign (#$). Logable comments must immediately preceed their CRON2.DAT entries. For example, #$ Ensure that all local articles are forwarded! 25,55 * * * * VDM BG WIND d:\usenet\snews\sendbtch.bat would result in a log file entry like # Ensure that all local articles are forwarded! Launching sendbtch.bat 8.03.1993 @ 00:55...done! "AT" YOUR COMMAND --------------------------------------------------------------------------- CRON/2 now sports a new, single-launch system that duplicates the functionality of the UNIX at command. The command is, in fact, called "at", and is a completely separate executable. Like CRON/2, the at sub-command of CRON/2 duplicates the operation of it's UNIX counterpart as closely as possible. And, like CRON/2, the CRON/2 at sub-command has both UNIX-specific and OS/2-specific parts. The CRON/2 at command has the following input parameters: at [-m] [-l] time [date] [[next | +increment] time_designation] job With the exception of the "-l" and "job" parameters, CRON/2's at command is identical to UNIX's. You can simply reference a UNIX man page for the at command for more information. The -l option allows you to get a quick look at what "job"s have been queued (keep in mind that if a queued job has launched, it will no longer be in the queue). The -m option, while it sends mail to the submitter when a queued job has been processed, does nothing (yet) under CRON/2. The remaining extension, "job", represents the parameters that must be provided to CRON/2's at command to complete the queuing of a job. The items are essentially identical to those that are placed into the CRON2.DAT file (sans the time/date information). For instance, here are the CRON/2 entries given previously as examples, represented in both CRON2.DAT and CRON/2 at format: 25,55 * * * * VDM BG WIND c:\usenet\snews\sendbtch.bat would become at now + 10 minutes vdm bg wind c:\usenet\snews\sendbtch.bat As a further example, 0,30 * * * * OS2 BG FULL- c:\uucp_os2.cmd could be used as at 9:30am tomorrow os2 bg full- c:\uucp_os2.cmd Another example: at 5am tuesday + 2 weeks vdm bg wind c:\usenet\snews\expire.bat Other combinations are left as an exercise for the reader =|^). COMMUNICATING WITH CRON/2 ---------------------------------------------------------------------- The CRON/2 at sub-command communicates with an operating CRON/2 process via a named piped. CRON/2 must be operational before you invoke the at command. Also, because the at command communicates through a named pipe, it can be run from literally anywhere (it doesn't have be in the same directory as CRON/2). GOTCHAS (non-bugs) --------------------------------------------------------------------------- o CRON/2 will barf if you specify either -ns1 or -s1 and there is no local CRON2.DAT file... o Starting CRON/2 with an empty CRON2.DAT file will generate a richly-deserved insult about your questionable parentage... o System error messages detected by CRON/2 are displayed as decimal only o If you are running any .CMD files from CRON2.DAT, you MUST have COMSPEC set in your OS/2 environment (this is usually automatic) o You can't fool OS/2 into running a minimized process as the foreground process...it knows you're only human... WHAT THE ... ?! (known bugs) --------------------------------------------------------------------------- o Starting applications with the FG token, either locally or remotely, will occasionally generate a 457 (ERROR_SMG_START_IN_BACKGROUND) error...I don't know why yet. Your process will run, however. o CRON/2 was developed using a beta compiler on a beta platform... so there... BUG REPORTS, QUESTIONS, COMMENTS, ATTA-BOYS... --------------------------------------------------------------------------- Bob Hood Mailnet : 1217 S. Independence Street Lakewood, CO 80232 | Internet : rhood@nyx.cs.du.edu <--- preferred!! | bbh@csci.csc.com AT&Tnet : (303) 980-8392 HISTORY --------------------------------------------------------------------------- 1.0 - Initial release 1.1 05.19.93 - added activity logging - added dynamic synchronizing of the CRON2.DAT file 1.2 05.26.93 - corrected a bug introduced in 1.1 that suspended the update of the on-screen date/time - corrected a problem with dynamic synchronizing that disabled the feature after the first process is launched - re-designed logging mechanism to allow access to the log file with any file viewer/editor while CRON/2 is running - added a mechanism to push log messages onto a FIFO queue when CRON/2 cannot access the log file - removed the option to specify a different log file as a result of CRON/2 changing drive/paths 1.3 08.06.93 - Corrected a bug that prevented CMD.EXE from launching processes correctly. CRON/2 was developed using 4OS2, which behaves differently. (Sorry Todd) - Added more fault tolerance for the handling of non-fatal errors - Altered CRON/2's behaviour with non-existent programs. Instead of issuing a warning and ignoring an entry if it cannot be physically located during CRON2.DAT processing, CRON/2 now marks the entry as a CMD file and submits it directly to %COMSPEC%. This allows built-in shell commands ("del", "copy", "move", etc.) to be used instead in place of executable programs. - Added logable comments to the CRON2.DAT file. Comments starting with "#$" are saved and associated with the entries they immediately preceed. These comments are then posted to the log file immediately preceeding the processes launch log. (Jon Hacker) - Split CRON/2 into network and non-network versions. Starting with this version, client/server versions of CRON/2 will contain an `n' after their version numbers (i.e., 1.3n). - Added the external `at' command. - Changed the misspelled word "questionalble" in the doc ;-) - Began including change-bars to illustrate new sections of the document between versions for veteran CRON/2 users. 1.4 ??.??.?? - Added the range operator (-) to the CRON2.DAT file. - Released the complete source code to the system.
 hobbes.nmsu.edu/download/pub/os2/util/schedule/cron214.zip  local copy
Cron/2 v. 2.0.3 (20/6/1997, Rony G. Flatscher) Readme/What's new
Infos on CRONRGF.CMD ==================== CRONRGF.CMD was modelled after the "cron"-utility of Unix. It allows you to specify in a control files on which times and dates a command should be executed repeatedly. CRONRGF.CMD starts and runs forever, dispatching the commands at the given times. Please check ATRGF.CMD which was modelled after the OS/2-LAN-command "at" for another variant having features not found in CRONRGF.CMD. Usage ===== CRONRGF [/T] [/M] [/R[nn]] [/B] cronfile Reads file 'cronfile' and executes command[s] repeatedly according to it. 'cronfile' has to be formatted like in Unix; unlike the Unix-version a '%' is treated like any other character; empty lines and ones starting with a semi-colon (;) or a (#) are ignored. Switch '/T[estmode]': the cronfile is read and the user is presented with the date/times and commands to be executed upon them. The planned and truly scheduled times are written to the log-file. Switch '/M[idnight]': all commands which were scheduled the same day, starting from midnight to the time of first invocation are executed once. Switch '/R[nn]': check cronfile at least every 'nn' (default 60) minutes whether it changed; if so, reread it immediately and set the new schedule-times. If set, the cronfile will be checked for changes after executing commands Switch '/B[lackAndWhite]': do not colorize output strings (e.g. for usage in more, less etc.). This switch merely suppresses the ANSI-color-sequences attached to the strings. example: CRONRGF /TEST testcron execute statements in file 'testcron' in testmode example for a control-file: ; Sample file for CRONRGF.CMD ; ; This is a comment (starts with a semicolumn) # This is a comment too (starts with the Unix-comment symbol) ; empty lines are ignored too... ; LAYOUT OF THE CRON-FILE: ; * * * * * command ; or ; minute hour day month weekday command ; where minute ranges from 0-59, ; hour ranges from 0-23, ; day ranges from 1-31, ; month ranges from 1-12, ; weekday ranges from 1-7 (1 = Monday, 2 = Tuesday, ..., 7 = Sunday) ; ; you can give a list of values, separated by a comma (,), e.g. "1,3,7" ; you can give a range of values, separated by a dash (-), e.g. "1-5" ; you can give a star (*) instead of a value, meaning entire range of all valid values ; ; the given command is only executed when all criteriae are fullfilled ! ; ; restriction: unlike to Unix, the percent-sign (%) is treated like any other character and ; not as a new-line ; # the following command "@ECHO HI, I am Nr. 1 to be echoed every minute" would be # executed every minute * * * * * @ECHO Hi, I am Nr. 1 to be echoed every minute & pause 59 23 31 12 5 command, one minute before year's end, and only if the last day is a Friday ; comment: every year at 17:45 on June 7th: 45 17 7 6 * dir c:\*.exe ; comment: on every full quarter of an hour ; at midnight, 6 in the morning, noon, 6 in the evening ; on the 1st, 15th and 31st of ; every month on 0,15,30,45 0,6,12,18 1,15,31 * * backup c:\*.* d:\ /s ; at noon on every day, if it is a weekday (Mo-Fri): 0 12 * * 1-5 XCOPY Q:\* D:\ /s ; every minute in January, March, May, July, September and November: * * * 1,3,5,7,9,11 * dir c:\*.cmd # at the last day of the year at 23:01, 23:02, 23:03, 23:05, 23:20, 23:21, # 23:22, 23:23, 23:24, 23:25, 23:30, 23:31, 23:32, 23:33, 23:34, 23:35, # 23:59 1,2,3,5,20-25,30-35,59 23 31 12 * COPY D:\*.log E:\backup ; make backups of OS2.INI and OS2SYS.INI on every first monday of a month, ; at 9 o'clock in the morning 0 9 1-7 * 1 showini /bt d:\os2\os2.ini 0 9 1-7 * 1 showini /bt d:\os2\os2sys.ini ; at midnight on every month: 0 0 1 * * tapebackup /all ; execute every minute, no restrictions: * * * * * @ECHO Hi, I am Nr. 2 to be echoed every minute & pause # execute every minute in January, February, March only ! * * * 1,2,3 * any-command any-arguments # execute every day at midnight 0 0 * * * any-command any-arguments # execute every wednesday at midnigth ! 0 0 * * 3 any-command any-arguments # this is a comment which concludes the sample file =========================== Rony G. Flatscher, Vienna/Austria/Europe, Wirtschaftsuniversitaet Wien 1992-11-08 ---------------------------------------------------- 3.05.97 22.08 39675 CRONrgf.cmd ... cronrgf-executable (REXX) 8.11.93 18.25 5161 cronrgf.txt ... explanation of cronrgf 3.03.94 12.14 10245 ScrColor.cmd ... utility to set ANSI-colors (REXX) 18.05.95 00.00 219648 cronedit.EXE ... cronedit-executable (REXX with DrDialog) 18.05.95 00.00 48890 cronedit.RES ... DrDialog-source (REXX embedded in a DrDialog-Dialog) 30.04.95 22.45 4026 cronedit.ico ... icon to associate with cronedit 20.06.97 21.54 928 cronedit.txt ... brief description of cronedit (this file) 1.05.95 3.17 3048 crontest ... cronfile to test cronedit (contains intentional errors) 30.04.96 11.55 40524 datergf.cmd ... utility to do date-arithmetic (REXX) 3.03.94 12.13 31197 dateshow.cmd ... demo for datergf-functionality (REXX) 1997-06-20, Rony G. Flatscher, WU-Wien, Vienna/Austria (heart of Europe)
 hobbes.nmsu.edu/download/pub/os2/util/schedule/cronrgf4.zip  local copy
PMCron v. 1.21 (9/5/1996, Florian Große-Coosmann) Readme/What's new
Presentation Manager implementation Cron, Version 1.21 It runs only with EMX 0.9a (or above?). Needed DLLs are EMX and EMXLIBCM. The new DLLs with the fixes from EMXFIX04 of EMX 0.9b are included. Related files: crond.exe Yes, This is the new PM cron daemon. cronddeu.hlp The extensive help to the cron daemon in german. crondeng.hlp The extensive help to the cron daemon in english. crondfra.hlp The extensive help to the cron daemon in french. crontab.exe Self documenting. Simply, call "crontab". With this program commands are send to the daemon. crontab DOESN'T manipulate the Crontabs file, this is done by the daemon itself. Alternatively, you can use the daemon itself. The second page of the "settings..." notebook allows all changes. Crontabs Probably, there is a little example file. You can use it. More and in different languages explained examples will be found in the online help of crond. (Others) The source code of the program. Florian Groáe-Coosmann, coosman@uni-muenster.de Code changes: Don't use ANY tabulators (excepting in makefile). I don't like them. Use CRLF at end-of-line and don't use ^Z at end-of-file. You may use diff if you want. The programs are tested, they work very well. The daemon doesn't eat much memory even when running long times, although the statical size reaches about 512K (EMXLIBCM and EMX are hungry). Good: The daemon awakes only one time a hour if nothing is to do. It will be swapped out by the system. Who is like to translate this stuff into netherlands, italian, spanish etc.?
 hobbes.nmsu.edu/download/pub/os2/util/schedule/pmcron03.zip  local copy
Record updated last time on: 04/09/2024 - 08:27

Translate to...

Add new comment