You can use Scheduled Jobs to ensure code runs either at a specified time of day/week/month, or on an interval, in order to perform an automated task in your Jira instance. For example, you may want to automatically create a release at the end of the month, or create a new issue once a week. You could also use Scheduled Jobs to poll an external system that you want to integrate with your Jira instance every hour.
The minimum interval between code executions is 1 hour. The scheduler is triggered every hour and gathers all the tasks to be executed within that hour. The task executions are queued and workers will consume them in no predefined order. That means that the execution time of the task can not be guaranteed to be the same every hour. As an example: if you configure a job to be run every hour, it might be run at 01:02 and then 02:24 and then 03:00 and then at 04:46 etc depending on how busy our systems are.
The schedule editor dialog lets you choose between running your script on several days during the week (e.g. Monday, Wednesday, Friday), or running your script on particular days of the month (e.g. the last day of the month, the 2nd Tuesday of the month). Additionally you can select an hour interval during which your script will be run.
See also the Escalation Service that lets you configure code that will be executed against each issue returned from a JQL search, on a schedule. This is useful for doing automated transitions/releases/updates of issues.
There is a possibility to test your script using "Run Now" button that will execute the script and return the results and the logs.