Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| doc:howto:cron [2016/04/06 20:00] – [Adding and editing cron jobs] Clarified Sunday is 0. Adapted example to show this. Bernini | docs:guide-user:base-system:cron [2023/08/08 11:30] – Added my cronjob to keep last N snapshots of config torxgewinde | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| + | {{section> | ||
| - | [[wp> | + | ===== Introduction ===== |
| + | * OpenWrt can run scheduled tasks using [[wp> | ||
| + | * This how-to describes the method for setting up cron jobs. | ||
| + | * See also [[docs: | ||
| - | OpenWrt comes with a cron system by default, provided by busybox. | + | ===== Goals ===== |
| + | * Run programs or scripts at a specific time. | ||
| + | * Automate scheduled task management. | ||
| - | ===== Adding and editing | + | ===== Web interface instructions ===== |
| + | Set up cron jobs using web interface. | ||
| + | - Navigate to **LuCI -> System -> Scheduled Tasks**. | ||
| + | - Edit the configuration and click the **Save** button. | ||
| + | |||
| + | ===== Command-line instructions ===== | ||
| + | Set up cron jobs using command-line interface. | ||
| - | You can edit the current config with: | ||
| <code bash> | <code bash> | ||
| + | # Edit configuration | ||
| crontab -e | crontab -e | ||
| - | </ | ||
| - | :!: There should be a end-of-line character on the last line of the crontab file. If in doubt, just leave an empty line at the end. | + | # Show configuration |
| + | crontab | ||
| - | Example of time specification: | + | # Apply changes |
| - | + | /etc/init.d/cron restart | |
| - | ^ min\\ 0-59 ^ hour\\ 0-23 ^ day/month\\ 1-31 ^ month\\ 1-12 ^ day/week\\ 0-6 ^ Description | + | </code> |
| - | | */5 | + | |
| - | | | + | |
| - | | | + | |
| - | | | + | |
| - | | | + | |
| - | | 5,10 | + | |
| - | <WRAP left round tip 70%> | + | This will edit the configuraion '' |
| - | 0 (zero) is treated as Sunday. If you set the day of the week to 7, busybox | + | |
| - | </WRAP> | + | |
| - | ===== Activating cron ===== | + | |
| - | Cron is not enabled by default, so your jobs won' | + | :!: There should |
| + | Just leave an empty line at the end to be sure. | ||
| - | < | + | ===== Task specification ===== |
| - | / | + | Each line is a separate task written in the specification: |
| - | / | + | |
| + | < | ||
| + | * * * * * command to execute | ||
| + | - - - - - | ||
| + | | | | | | | ||
| + | | | | | ----- Day of week (0 - 6) (Sunday =0) | ||
| + | | | | ------- Month (1 - 12) | ||
| + | | | --------- Day (1 - 31) | ||
| + | | ----------- Hour (0 - 23) | ||
| + | ------------- Minute (0 - 59) | ||
| </ | </ | ||
| - | :!: If there is no crontab defined (i.e. ''/ | + | Examples of time specification: |
| - | ===== References ===== | + | ^ min\\ 0-59 ^ hour\\ 0-23 ^ day/month\\ 1-31 ^ month\\ 1-12 ^ day/week\\ 0-6 ^ Description ^ |
| + | | */5 | * | * | * | * | Every 5 minutes | | ||
| + | | 12 | */3 | * | * | * | Every 3 hours at 12 minutes | | ||
| + | | 57 | 11 | 15 | 1,6,12 | * | At 11:57 Hrs on 15th of Jan, June & Dec | | ||
| + | | 25 | 6 | * | * | 1-5 | At 6:25 AM every weekday (Mon-Fri) | | ||
| + | | 0 | 0 | 4, | ||
| + | | 5,10 | 9,14 | 10 | * | 0,4 | At 9:05AM, 9:10AM, 2:05PM and 2:10PM every Sunday and Thursday | | ||
| - | * [[http:// | + | :!: 0 (zero) is treated as Sunday. |
| - | * [[http:// | + | If you set the day of the week to 7, BusyBox |
| - | * see [[http:// | + | |
| - | ===== Tips and tricks ===== | + | **Table of shortcuts: |
| - | ==== Check that the jobs are run ==== | + | ^ Shortcut ^ Equivalent ^ Description ^ |
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| - | Each time a job is run by cron, a line is printed in OpenWrt logs. Run '' | + | :!: Time shortcuts |
| - | ==== Periodic reboot of a router | + | ===== Troubleshooting |
| + | You can read log messages with: | ||
| - | A simple solution for some hard-to-solve problems (memory leak, performance degradation, | + | <code bash> |
| + | logread | ||
| + | </ | ||
| - | However, this is not as simple as it seems, becomes router usually have no real-time clock. | + | Not all messages are logged, to increase logging change '' |
| - | In the boot process the clock is initially set by '' | + | ===== Extras ===== |
| + | ==== References ==== | ||
| + | * [[man> | ||
| + | * [[https://busybox.net/ | ||
| + | * [[http:// | ||
| - | One solution | + | ==== Periodic reboot ==== |
| + | A simple workaround | ||
| - | < | + | However, this is not as simple as it seems, because the router usually does not have a real-time clock. |
| + | This could lead to a never-ending loop of reboots. | ||
| + | |||
| + | In the boot process the clock is initially set by '' | ||
| + | The most recent file is possibly a status file or config file, modified maybe 30 seconds before the reboot initiated by cron. | ||
| + | So, in the boot process the clock gets set backwards a few seconds to that file's timestamp. | ||
| + | Then cron starts and notices a few seconds later that the required boot moment has again arrived and reboots again... | ||
| + | At the end of the boot process ntpd starts, and it may also take a while before ntpd gets and sets the correct time, so cron may start the reboot in between. | ||
| + | |||
| + | One solution for cron is to use a delay and touch a file in ''/ | ||
| + | |||
| + | < | ||
| # Reboot at 4:30am every day | # Reboot at 4:30am every day | ||
| # Note: To avoid infinite reboot loop, wait 70 seconds | # Note: To avoid infinite reboot loop, wait 70 seconds | ||
| Line 68: | Line 112: | ||
| </ | </ | ||
| - | :!: On many platforms '' | + | :!: On many platforms '' |
| + | There is usually no programmable circuitry to actually power off the unit. | ||
| + | '' | ||
| - | ==== Alarm clock ==== | + | ==== Periodic network restart |
| + | A simple solution for restart all your network (lan, wan and wifi) every 10 minutes is this: | ||
| - | If you have [[wp> | + | <code bash> |
| + | */10 * * * * / | ||
| + | </ | ||
| + | |||
| + | ==== Alarm clock ==== | ||
| + | If you have [[wp> | ||
| When DST starts in central Europe, clocks advance from 02:00 CET to 03:00 CEST on last Sunday in March. | When DST starts in central Europe, clocks advance from 02:00 CET to 03:00 CEST on last Sunday in March. | ||
| - | Six day before that, you could make your WOL wake you 10 minutes earlier. Later won't work, you'll be late ;-) | + | Six day before that, you could make your WoL wake you 10 minutes earlier. |
| + | Later won't work, you'll be late. | ||
| When DST ends in central Europe, clocks retreat from 03:00 CEST to 02:00 CET on last Sunday in October. | When DST ends in central Europe, clocks retreat from 03:00 CEST to 02:00 CET on last Sunday in October. | ||
| <code bash> | <code bash> | ||
| - | #min hour day month dayofweek command | + | # min hour day month dayofweek command |
| - | 59 05 * * 1 / | + | 59 05 * * 1 / |
| - | #crontab must (as fstab) | + | # crontab must end with the last line as space or a comment |
| + | </ | ||
| + | |||
| + | ==== Keep number of configs / snapshots of config ==== | ||
| + | To keep a number N of configurations/ | ||
| + | |||
| + | <code bash> | ||
| + | #Make a new backup/ | ||
| + | #01 00 * * * sysupgrade -b "/ | ||
| + | 01 00 * * * find "/ | ||
| </ | </ | ||