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 | ||
| docs:guide-user:base-system:cron [2019/09/30 12:50] – [Cron and crontab] links optimized vgaetera | 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: | ||
| - | ====== | + | ====== |
| - | [[wp>Cron]] allows to run jobs (programs, scripts) at specified times. | + | {{section>meta: |
| - | OpenWrt | + | ===== Introduction ===== |
| + | * OpenWrt | ||
| + | * This how-to describes the method for setting up cron jobs. | ||
| + | * See also [[docs: | ||
| - | ===== Adding and editing | + | ===== Goals ===== |
| - | You can edit the current config with: | + | * Run programs or scripts at a specific time. |
| + | * Automate scheduled task management. | ||
| + | |||
| + | ===== 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. | ||
| <code bash> | <code bash> | ||
| + | # Edit configuration | ||
| crontab -e | crontab -e | ||
| - | </ | ||
| - | This will open ''/ | + | # Show configuration |
| - | See [[docs: | + | crontab |
| - | :!: There should be a end-of-line character on the last line of the crontab file. | + | # Apply changes |
| - | If in doubt, just leave an empty line at the end. | + | /etc/init.d/cron restart |
| + | </ | ||
| - | To see the current crontab: | + | This will edit the configuraion ''/ |
| - | <code bash> | + | :!: There should be a EOL character on the last line of the crontab |
| - | crontab | + | Just leave an empty line at the end to be sure. |
| - | </ | + | |
| ===== Task specification ===== | ===== Task specification ===== | ||
| Each line is a separate task written in the specification: | Each line is a separate task written in the specification: | ||
| + | |||
| < | < | ||
| * * * * * command to execute | * * * * * command to execute | ||
| Line 37: | Line 50: | ||
| Examples of time specification: | Examples of time specification: | ||
| - | + | ||
| - | ^ min\\ 0-59 ^ hour\\ 0-23 ^ day/month\\ 1-31 ^ month\\ 1-12 ^ day/week\\ 0-6 ^ Description ^ | + | ^ 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 | + | | 5,10 | 9,14 | 10 | * | 0,4 | At 9:05AM, 9:10AM, 2:05PM and 2:10PM every Sunday and Thursday | |
| :!: 0 (zero) is treated as Sunday. | :!: 0 (zero) is treated as Sunday. | ||
| - | If you set the day of the week to 7, busybox | + | If you set the day of the week to 7, BusyBox |
| - | See also: | + | **Table of shortcuts:** |
| - | | + | |
| - | | + | |
| - | | + | |
| - | ===== Logging | + | ^ Shortcut ^ Equivalent ^ Description ^ |
| - | You can read log messages with '' | + | | '' |
| - | Not all messages are logged, to increase logging change '' | + | | '' |
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | :!: Time shortcuts are not enabled by default. Shortcuts require compiling busybox with FEATURE_CROND_SPECIAL_TIMES enabled in the busybox compile options. | ||
| + | |||
| + | ===== Troubleshooting | ||
| + | You can read log messages with: | ||
| + | |||
| + | <code bash> | ||
| + | logread -e cron | ||
| + | </ | ||
| + | |||
| + | Not all messages are logged, to increase logging change '' | ||
| ===== Extras ===== | ===== Extras ===== | ||
| + | ==== References ==== | ||
| + | * [[man> | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| ==== Periodic reboot ==== | ==== Periodic reboot ==== | ||
| - | A simple | + | A simple |
| However, this is not as simple as it seems, because the router usually does not have a real-time clock. | However, this is not as simple as it seems, because the router usually does not have a real-time clock. | ||
| Line 69: | Line 100: | ||
| So, in the boot process the clock gets set backwards a few seconds to that file's timestamp. | 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... | 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.) | + | 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 ''/ | One solution for cron is to use a delay and touch a file in ''/ | ||
| Line 85: | Line 116: | ||
| '' | '' | ||
| - | However, a more flexible approach | + | ==== Periodic network restart ==== |
| + | A simple solution for restart all your network (lan, wan and wifi) every 10 minutes | ||
| <code bash> | <code bash> | ||
| - | opkg update | + | */10 * * * * / |
| - | opkg install watchcat | + | |
| </ | </ | ||
| ==== Alarm clock ==== | ==== Alarm clock ==== | ||
| - | If you have [[wp> | + | 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. | + | Six day before that, you could make your WoL wake you 10 minutes earlier. |
| - | Later won't work, you'll be late ;-) | + | 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 "/ | ||
| </ | </ | ||