2022-04-23 13:26:53 +01:00
|
|
|
|
---
|
|
|
|
|
tags:
|
|
|
|
|
- Programming_Languages
|
|
|
|
|
- shell
|
|
|
|
|
- automation
|
|
|
|
|
---
|
2022-05-23 19:30:04 +01:00
|
|
|
|
# Cron
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2022-05-23 19:00:04 +01:00
|
|
|
|
In Arch Linux I use `cronie` for cron jobs. (There is no cron service installed by default).
|
2022-05-23 19:30:04 +01:00
|
|
|
|
## Commands
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
### List cron jobs
|
|
|
|
|
```
|
2022-04-23 13:26:53 +01:00
|
|
|
|
crontab -l
|
2022-05-23 19:30:04 +01:00
|
|
|
|
```
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
### Open cron file
|
|
|
|
|
```
|
2022-04-23 13:26:53 +01:00
|
|
|
|
crontab -e
|
2022-05-23 19:30:04 +01:00
|
|
|
|
```
|
|
|
|
|
### Check cron log
|
|
|
|
|
```bash
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
journalctl | grep CRON
|
|
|
|
|
# Different distros have different loggers
|
|
|
|
|
```
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
## Syntax
|
2022-04-23 13:26:53 +01:00
|
|
|
|
````bash
|
|
|
|
|
m h d mon dow command
|
|
|
|
|
# minute, hour, day of month, day of week, bash script/args
|
|
|
|
|
# 0-59, 0-23, 1-31, 1-12, 0-6
|
|
|
|
|
````
|
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
|
2022-04-23 13:26:53 +01:00
|
|
|
|
**Examples**
|
|
|
|
|
|
|
|
|
|
Run on the hour every hour
|
|
|
|
|
|
|
|
|
|
````
|
|
|
|
|
0 * * * * mysqlcheck --all-databases --check-only-changed --silent
|
|
|
|
|
````
|
|
|
|
|
|
|
|
|
|
At 01:42 every day:
|
|
|
|
|
|
|
|
|
|
````
|
|
|
|
|
42 1 * * * mysqlcheck --all-databases --check-only-changed --silent
|
|
|
|
|
````
|
|
|
|
|
|
2022-05-23 19:30:04 +01:00
|
|
|
|
Every half hour:
|
|
|
|
|
```
|
|
|
|
|
0,30 * * * * ${HOME}/bash_scripts/automate_commit.sh
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
2022-04-23 13:26:53 +01:00
|
|
|
|
**Shorthands**
|
|
|
|
|
|
|
|
|
|
* `@reboot` – Run once, at startup
|
|
|
|
|
* `@yearly` – Run once a year, “0 0 1 1 \*”.\</>
|
|
|
|
|
* `@annually` – same as @yearly
|
|
|
|
|
* `@monthly` – Run once a month, “0 0 1 * \*”
|
|
|
|
|
* `@weekly` – Run once a week, “0 0 * * 0”
|
|
|
|
|
* `@daily` – Run once a day, “0 0 * * \*”
|
|
|
|
|
* `@midnight` – same as @daily
|
|
|
|
|
* `@hourly` – Run once an hour, “0 * * * \*”
|
|
|
|
|
|
|
|
|
|
**Examples**
|
|
|
|
|
|
|
|
|
|
````
|
|
|
|
|
@hourly mysqlcheck --all-databases --check-only-changed --silent
|
|
|
|
|
|
|
|
|
|
````
|
|
|
|
|
|
|
|
|
|
**View the logs**
|
|
|
|
|
|
|
|
|
|
````bash
|
|
|
|
|
sudo grep crontab syslog
|
|
|
|
|
|
|
|
|
|
````
|