# Crontab

## What's crontab?

The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use cron to schedule jobs (commands or shell scripts), also known as cron jobs, to run periodically at fixed times, dates, or intervals.

<details>

<summary>Format</summary>

```java
Min  Hour Day  Mon  Weekday
*    *    *    *    *  {command to be executed}
┬    ┬    ┬    ┬    ┬
│    │    │    │    └─  Weekday  (0=Sun .. 6=Sat)
│    │    │    └──────  Month    (1..12)
│    │    └───────────  Day      (1..31)
│    └────────────────  Hour     (0..23)
└─────────────────────  Minute   (0..59)
```

</details>

***

| Operators |          Description         |
| :-------: | :--------------------------: |
|    `*`    |         `all values`         |
|    `,`    | `separate individual values` |
|    `-`    |      `a range of values`     |
|    `/`    |  `divide a value into steps` |

***

<details>

<summary>Crontab</summary>

```bash
# Adding tasks easily
echo "@reboot echo hi" | crontab
```

```bash
# Open in editor
crontab -e
```

```bash
# List tasks
crontab -l [-u user]
```

</details>

***

## Examples <a href="#examples" id="examples"></a>

<table><thead><tr><th align="center">Format example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center"><pre class="language-bash"><code class="lang-bash">0 * * * *
</code></pre></td><td align="center"><code>every hour</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">*/15 * * * *
</code></pre></td><td align="center"><code>every 15 minutes</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">0 */2 * * *
</code></pre></td><td align="center"><code>every 2 hours</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">0 18 * * 0-6
</code></pre></td><td align="center"><code>every week Mon-Sat at 6pm</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">10 2 * * 6,7
</code></pre></td><td align="center"><code>every Sat and Sun on 2:10am</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">0 0 * * 0
</code></pre></td><td align="center"><code>every Sunday midnight</code></td></tr><tr><td align="center"><pre class="language-bash"><code class="lang-bash">@reboot
</code></pre></td><td align="center"><code>every reboot</code></td></tr></tbody></table>
