137 lines
3.0 KiB
Markdown
137 lines
3.0 KiB
Markdown
# Automatické spouštění úloh pomocí `cron`
|
||
|
||
`cron` umožňuje automatické spouštění příkazů nebo skriptů v nastavený čas.
|
||
|
||
## 🛠️ Instalace cronu na Arch Linuxu
|
||
|
||
Arch Linux ve výchozím stavu `cron` neobsahuje.
|
||
Doporučený balíček je **`cronie`**, který poskytuje `crontab` i `cron` službu pod `systemd`.
|
||
|
||
### Instalace:
|
||
|
||
```bash
|
||
sudo pacman -S cronie
|
||
```
|
||
|
||
### Aktivace služby:
|
||
|
||
```bash
|
||
sudo systemctl enable --now cronie
|
||
```
|
||
|
||
Zkontroluj, že běží:
|
||
|
||
```bash
|
||
systemctl status cronie
|
||
```
|
||
|
||
> Pokud služba neběží, `crontab` úlohy se vůbec nebudou spouštět.
|
||
|
||
---
|
||
|
||
## 🧭 Základní syntaxe
|
||
|
||
Každý řádek v `crontab` má tento formát:
|
||
|
||
```cron
|
||
# ┌───────────── minuta (0 - 59)
|
||
# │ ┌───────────── hodina (0 - 23)
|
||
# │ │ ┌───────────── den v měsíci (1 - 31)
|
||
# │ │ │ ┌───────────── měsíc (1 - 12)
|
||
# │ │ │ │ ┌───────────── den v týdnu (0 - 7) (0 a 7 = neděle)
|
||
# │ │ │ │ │
|
||
# │ │ │ │ │
|
||
# * * * * * příkaz k provedení
|
||
```
|
||
|
||
---
|
||
|
||
## 🧮 Význam jednotlivých polí
|
||
|
||
| Pole | Rozsah | Popis |
|
||
|----------------|--------------|---------------------------------------|
|
||
| **Minuta** | `0-59` | Minuta, kdy se má úloha spustit |
|
||
| **Hodina** | `0-23` | Hodina ve 24h formátu |
|
||
| **Den měsíce** | `1-31` | Den v měsíci |
|
||
| **Měsíc** | `1-12` | Měsíc (`1` = leden, `12` = prosinec) |
|
||
| **Den týdne** | `0-7` | Den v týdnu (`0` a `7` = neděle) |
|
||
| **Příkaz** | — | Úplná cesta ke skriptu/příkazu |
|
||
|
||
> Použij `*` pro “každou hodnotu”.
|
||
> Např. `* * * * *` = každou minutu.
|
||
|
||
---
|
||
|
||
## 💡 Ukázky použití
|
||
|
||
```cron
|
||
# Každý den v 6:00 spustit zálohovací skript
|
||
0 6 * * * /home/user/scripts/backup.sh
|
||
|
||
# Každých 15 minut kontrola stavu
|
||
*/15 * * * * /home/user/scripts/check_status.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 📅 Vytvoření a editace crontabu
|
||
|
||
Na Arch Linuxu (a většině systémů) upravíš crontab takto:
|
||
|
||
```bash
|
||
crontab -e
|
||
```
|
||
|
||
Tím se otevře crontab v editoru (např. `nano` nebo `vim`).
|
||
|
||
---
|
||
|
||
## 📥 Export a verzování crontabu
|
||
|
||
Pro správu `crontab` v Git repozitáři:
|
||
|
||
### 1. Uložit aktuální `crontab` do souboru
|
||
|
||
```bash
|
||
crontab -l > scripts/crontab
|
||
```
|
||
|
||
### 2. Nahrát zpět do systému
|
||
|
||
```bash
|
||
crontab scripts/crontab
|
||
```
|
||
|
||
### 3. Doporučená struktura v repozitáři
|
||
|
||
```
|
||
repo-root/
|
||
├── scripts/
|
||
│ └── crontab
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Tipy pro testování
|
||
|
||
- Skripty musí být **spustitelné**:
|
||
```bash
|
||
chmod +x script.sh
|
||
```
|
||
|
||
- Používej **absolutní cesty** (např. `/home/user/scripts/muj.sh`)
|
||
|
||
- Pro logování výstupu do souboru:
|
||
```cron
|
||
0 6 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 Užitečné odkazy
|
||
|
||
- [crontab.guru](https://crontab.guru) – snadná vizualizace a kontrola výrazů
|
||
|
||
---
|
||
|