61 lines
1.3 KiB
Markdown
61 lines
1.3 KiB
Markdown
---
|
|
name: cron
|
|
description: Schedule reminders, recurring tasks, and one-time jobs using system crontab.
|
|
---
|
|
|
|
# Cron
|
|
|
|
Schedule tasks using the system crontab via `shell_exec`.
|
|
|
|
## List current cron jobs
|
|
|
|
```bash
|
|
crontab -l
|
|
```
|
|
|
|
## Add a recurring job
|
|
|
|
```bash
|
|
(crontab -l 2>/dev/null; echo "*/20 * * * * echo 'Time to take a break!' >> /tmp/opc-reminders.log") | crontab -
|
|
```
|
|
|
|
## Common schedules
|
|
|
|
| Schedule | Cron expression |
|
|
|----------|----------------|
|
|
| Every 20 minutes | `*/20 * * * *` |
|
|
| Every hour | `0 * * * *` |
|
|
| Every day at 8am | `0 8 * * *` |
|
|
| Weekdays at 5pm | `0 17 * * 1-5` |
|
|
| Every Monday at 9am | `0 9 * * 1` |
|
|
|
|
## One-time scheduled task
|
|
|
|
Use `at` for one-time jobs:
|
|
```bash
|
|
echo "echo 'Meeting reminder' >> /tmp/opc-reminders.log" | at 14:30
|
|
```
|
|
|
|
Or schedule with a specific date:
|
|
```bash
|
|
echo "echo 'Deadline reminder' >> /tmp/opc-reminders.log" | at 10:00 2026-03-20
|
|
```
|
|
|
|
## Remove a job
|
|
|
|
Edit the crontab directly:
|
|
```bash
|
|
crontab -e
|
|
```
|
|
|
|
Or filter out a specific job:
|
|
```bash
|
|
crontab -l | grep -v 'pattern-to-remove' | crontab -
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Use full paths in cron commands (cron has a minimal `$PATH`).
|
|
- Redirect output to a log file or `/dev/null` to avoid mail noise.
|
|
- Check `at` availability: `which at` (install with `apt install at` if missing).
|