Almost as simple as Unix cron or Windows scheduled tasks.
Straightforward as compared to most competitors.
Local, HTTP and SSH remote execution. Resource management. Clustered targets. Web Console. REST API. Customizable alert engine. And more.
Far more than other free-software schedulers.
Deploy on your Linux server at no cost.
You are not bound to a single supplier.
v1.9.9 Linux armhf (Raspberry Pi 32 bits)
*: old means compiled on a CentOS 7 (GLIBC 2.17 is enough to run)
Work in progress.
The user manual is embeded within qron's web console, but it can also be read here on the web site.
Choose a package or (if you dare!) compile it from source code.
You've got to create or modify a file named qron.conf which contain the tasks definition and other parameters.
Pick one of the examples below:
(config (taskgroup app1.jobs (label scheduled jobs for app1) ) (task backup # daily backup job sample (taskgroup app1.jobs) (label daily backup) (mean exec) (command /opt/app1/scripts/backup.sh) (trigger(cron 0 0 23 * * *)) # like cron, with seconds ) )
(config (taskgroup app1.light (label lightweight tasks for app1) ) (task poll1 (taskgroup app1.light) (label triggering some lightweight task through http polling) (mean http) (command /foo/) (param method POST) (target localhost) (trigger (cron /30 * * * * *) # every 30 seconds ) ) (host(id localhost)(hostname localhost)) )
(config (taskgroup app1.jobs (label scheduled jobs for app1) ) (task import # hourly data import sample (taskgroup app1.jobs) (label udpate data from database) (mean ssh) (command "/opt/app1/scripts/import.sh %DATE") (param DATE "%{=date!yyyy-MM-dd}") # set param, using date auto params (target back-servers) # run on any back server (resource(id memory)(quantity 512)) # consume 512 resource, e.g. 512 MB (trigger(cron 0 /2 8-20 * * *)) # every 2 hours from 8am to 8pm (maxexpectedduration 3600) # raise an alert after 1 hour running time ) (host back1 (hostname back1.foo.fr) (resource(id memory)(quantity 1024)) ) (host back2 (hostname back2.foo.fr) (resource(id memory)(quantity 1024)) ) (cluster back-servers (hosts back1 back2) (balancing first) # run on first server with enough resource ) )
(config (taskgroup app1.jobs (label scheduled jobs for app1)) (task backup # daily backup job sample (taskgroup app1.jobs) (mean exec) (command /opt/app1/scripts/backup.sh) (trigger(cron 0 0 23 * * *)) # like cron, with seconds ) (alerts (subscription(pattern task.failure.app1.batch.**) (mail (address gb@localhost)) ) (subscription(pattern task.failure.app1.batch.**) (url(address udp://127.0.0.1:4242) (emitmessage task failure: %!alertid) (cancelmessage task back to success: %!alertid) ) (stop) # do not process next rules if this one matches ) (subscription(pattern resource.exhausted.**) (mail (address gb@localhost)) ) (remindperiod 43200) # 12h between reminder mails ) (log(level debug)(file "/tmp/qron-debug-%{=date!yyyyMMdd}.log")) (log(level info)(file "/tmp/qron-%{=date!yyyyMMdd}.log")) )
You need can start the daemon by hand:
./qrond --config-file /path/to/qron.conf
Or use the provided systemd service unit file (qron.service) following README instructions.
Development team can be reached by email at: