eolas/Programming_Languages/Shell_Scripting/Cron.md

85 lines
1.4 KiB
Markdown
Raw Normal View History

2022-04-23 13:26:53 +01:00
---
tags:
- Programming_Languages
- shell
---
2022-05-23 19:30:04 +01:00
# Cron
2022-04-23 13:26:53 +01:00
2022-06-04 12:30:05 +01:00
## `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
```
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
````