DS Scheduler
A centralized 'cron' type scheduling system for UNIX/Linux. It has a web interface for managing, monitoring and scheduling jobs and commands in a multi-host environment.
Download:
Download ds-scheduler via GIT:
| git clone git://solar1.net/scheduler |
Features:
- Can be used as a drop-in replacement for cron.
- Can execute jobs based on event triggers.
- Secure communications between master servers and clients.
- Cluster-able: Master can automatically fail over so any number of secondary masters.
- Ajax web interface for better monitoring and execution feedback.
- Graphing/Reporting: Visualize the running duration and timing of your jobs.
- Run Jobs based on File Triggers
Installation:
Point your web server to the 'web' directory that is under scheduler/. If you installed in /opt/scheduler, then an example apache entry would be:
Alias /scheduler/ /opt/scheduler/web/
<Directory /opt/scheduler/web/>
AuthType Basic
AuthName "DS_SChed"
AuthUserFile /opt/scheduler/.htpasswd
require valid-user
</Directory>
Secure your site by using SSL and htpasswd. You can run root processes with the scheduler to restricting access is highly recommended.
Creating an htpasswd file:
htpasswd -c /opt/scheduler/.htpasswd <user>
Screenshots:

Graphs:

TO DO:
- Not every feature on the web interface works yet. Anyone who knows web development could probably do better. Patches are welcome.
- Need to add ON_NEWFILE trigger. Done
- Need to add ON_FILECHANGE trigger.
- Need better reporting/graphing flexibility.
- Need Translations
Database:
For those who want to contribute to the development, Here is an outline of the database:
Table: Jobs
| int(11) | |
AUTO_INCREMENT |
unique job ID |
|
| varchar(255) | |
Human readable job name |
||
| varchar(30) | |
Host that job will run on |
||
| varchar(10) | |
user that job will run as |
||
| datetime | |
The last time the job started |
||
| datetime | |
The last tim the job ended |
||
| int(11) | |
Does this job depend on another? |
||
| int(11) | |
See the dep_mode table |
||
| varchar(30) | |
'cron' type notation |
||
| int(11) | |
The running status |
||
| int(11) | |
The exit code of the job |
||
| varchar(300) | |
The actual command to run |
||
| tinyint(1) | |
Trigger the scheduler to re-read the job |
||
| text | |
Human readable comments |
Table: dep_mode
For managing dependant modes
| int(11) | |
Unique ID | |
| varchar(25) | |
Description of mode (i.e. ON_FAILURE) |
Table: Results
For storing output and times for reporting
| int(11) | |
Unique ID |
|||
| datetime | |
Time the job started |
|||
| datetime | |
Time the job exited |
|||
| text | |
Command/Job output text |
|||
| varchar(32) | |
Unique identifier for each job instance |