63 lines
1.4 KiB
Plaintext
63 lines
1.4 KiB
Plaintext
[#exec-cron]
|
|
= Execute on schedule (cron)
|
|
|
|
OliveTin can execute actions on a schedule, and uses a cron format for configuration.
|
|
|
|
[source,yaml]
|
|
.`config.yaml`
|
|
----
|
|
actions:
|
|
- title: Say hello
|
|
shell: echo "Hello!"
|
|
execOnCron:
|
|
- "@hourly"
|
|
|
|
- title: Say goodbye
|
|
shell: echo "Say Goodbye"
|
|
execOnCron:
|
|
- "*/5 * * * *" # Every 5 minutes
|
|
----
|
|
|
|
This is a fantastic website: https://cron.help/
|
|
|
|
== Support for seconds in cron
|
|
|
|
The default cron format for OliveTin supports the Unix/Linux format - 5 fields, with no support for seconds. This is by far the most popular format that most people are used to.
|
|
|
|
If you need per-second resolution for your actions, this can be enabled in your config - meaning that your cronlines will support 6 columns. The first "new" column is seconds. For example, to execute `date` every 5 seconds;
|
|
|
|
[source,yaml]
|
|
.`config.yaml`
|
|
----
|
|
cronSupportForSeconds: true
|
|
|
|
actions:
|
|
title: Execute every 5 seconds
|
|
shell: date
|
|
execOnCron:
|
|
- "*/5 * * * * *"
|
|
----
|
|
|
|
|
|
== Cron and ACLs
|
|
|
|
If you have enabled ACL, cron tasks are run as the user `cron`, which means that your ACL needs to allow the cron user to execute the action. This is one possibilty:
|
|
|
|
[source,yaml]
|
|
.`config.yaml`
|
|
----
|
|
accessControlLists:
|
|
- name: "cron"
|
|
matchUsernames:
|
|
- cron
|
|
permissions:
|
|
exec: true
|
|
actions:
|
|
- title: Say hello
|
|
shell: echo "Hello!"
|
|
execOnCron:
|
|
- "@hourly"
|
|
acls:
|
|
- "cron"
|
|
----
|