93 lines
1.4 KiB
Markdown
93 lines
1.4 KiB
Markdown
---
|
||
tags:
|
||
- shell
|
||
- Linux
|
||
- procedural
|
||
---
|
||
|
||
# Cron
|
||
|
||
## `cronie`
|
||
|
||
In Arch Linux I use `cronie` for cron jobs. (There is no cron service installed
|
||
by default). Install `cronie` and then enable it in systemd with:
|
||
|
||
```bash
|
||
systemctrl enable --now cronie.service
|
||
```
|
||
|
||
## commands
|
||
|
||
### List cron jobs
|
||
|
||
```
|
||
crontab -l
|
||
```
|
||
|
||
### Open cron file
|
||
|
||
```
|
||
crontab -e
|
||
```
|
||
|
||
### Check cron log
|
||
|
||
```bash
|
||
|
||
journalctl | grep CRON
|
||
# Different distros have different loggers
|
||
```
|
||
|
||
## Syntax
|
||
|
||
```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
|
||
```
|
||
|
||
**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
|
||
```
|
||
|
||
Every half hour:
|
||
|
||
```
|
||
0,30 * * * * ${HOME}/bash_scripts/automate_commit.sh
|
||
|
||
```
|
||
|
||
**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
|
||
|
||
```
|