🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Cron Scheduler

by @picaye

Create, list, modify, and remove scheduled cron jobs to automate system tasks using simplified cron syntax and manage output logging.

Versionv1.0.0
Downloads6,151
Installs84
Stars⭐ 3
TERMINAL
clawhub install cron-scheduler

πŸ“– About This Skill

Cron Scheduler

Manage scheduled tasks and automation on your system using cron.

Category: automation, productivity API Key Required: No

What It Does

Create, manage, and monitor scheduled tasks (cron jobs) on your machine. Automate backups, health checks, cleanup scripts, API calls, notifications β€” anything that should run on a schedule. Your agent handles the cron syntax so you don't have to.

Agent Commands

List all cron jobs

echo "=== User crontab ==="
crontab -l 2>/dev/null || echo "(empty)"
echo ""
echo "=== System cron ==="
ls /etc/cron.d/ 2>/dev/null
echo ""
echo "=== Cron directories ==="
echo "Hourly:  $(ls /etc/cron.hourly/ 2>/dev/null | wc -l) jobs"
echo "Daily:   $(ls /etc/cron.daily/ 2>/dev/null | wc -l) jobs"
echo "Weekly:  $(ls /etc/cron.weekly/ 2>/dev/null | wc -l) jobs"
echo "Monthly: $(ls /etc/cron.monthly/ 2>/dev/null | wc -l) jobs"

Add a cron job

# Add to user crontab
(crontab -l 2>/dev/null; echo "SCHEDULE COMMAND") | crontab -

Common schedules:

Every minute: * * * * *

Every 5 minutes: */5 * * * *

Every hour: 0 * * * *

Every day at 2am: 0 2 * * *

Every Monday 9am: 0 9 * * 1

Every 1st of month: 0 0 1 * *

Weekdays at 8am: 0 8 * * 1-5

Remove a cron job

# Edit crontab interactively
crontab -e

Or remove a specific line

crontab -l | grep -v "PATTERN_TO_REMOVE" | crontab -

Check cron logs

# Recent cron activity
grep CRON /var/log/syslog | tail -20

Or on systems using journald

journalctl -u cron --since "1 hour ago" --no-pager | tail -20

Test a cron command

# Run the command manually first to make sure it works
COMMAND_HERE

Check it produces expected output

echo "Exit code: $?"

Cron syntax reference

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ minute (0-59)
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ hour (0-23)
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ day of month (1-31)
β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ month (1-12)
β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ day of week (0-7, 0 and 7 = Sunday)
β”‚ β”‚ β”‚ β”‚ β”‚
* * * * * command

Common patterns

# Disk space alert daily at 8am
0 8 * * * df -h / | awk 'NR==2 && $5+0 > 80 {print "Disk alert: " $5 " used"}' | mail -s "Disk Warning" you@email.com

Clean /tmp weekly

0 3 * * 0 find /tmp -type f -mtime +7 -delete

Backup database nightly

0 2 * * * pg_dump mydb > /backups/db_$(date +\%Y\%m\%d).sql

Restart a service if it crashes (every 5 min check)

*/5 * * * * systemctl is-active myservice || systemctl restart myservice

Log system stats every 15 minutes

*/15 * * * * echo "$(date): $(uptime)" >> /var/log/system-stats.log

Environment variables in cron

# Cron runs with minimal environment. Set what you need:
(crontab -l 2>/dev/null; echo "PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1") | crontab -

Redirect output (important!)

# Log output
* * * * * command >> /var/log/myjob.log 2>&1

Discard output

* * * * * command > /dev/null 2>&1

Email output (if mail is configured)

MAILTO=you@email.com 0 8 * * * command

Examples

User: "Run my backup script every night at 2am" β†’ (crontab -l 2>/dev/null; echo "0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1") | crontab -

User: "Check disk space every hour and alert me if it's over 80%" β†’ Create a check script + cron job

User: "What scheduled tasks are running?" β†’ List all crontabs and system cron directories

User: "Stop the daily cleanup job" β†’ Find and remove the specific cron entry

Constraints

  • Cron runs with minimal PATH β€” use absolute paths for commands
  • Always redirect output (>> logfile 2>&1) or cron fills up mail spool
  • Cron uses the system timezone β€” check with timedatectl
  • Minimum resolution is 1 minute β€” for sub-minute, use a loop in a script
  • User crontabs don't survive user deletion
  • Test commands manually before scheduling
  • πŸ’‘ Examples

    User: "Run my backup script every night at 2am" β†’ (crontab -l 2>/dev/null; echo "0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1") | crontab -

    User: "Check disk space every hour and alert me if it's over 80%" β†’ Create a check script + cron job

    User: "What scheduled tasks are running?" β†’ List all crontabs and system cron directories

    User: "Stop the daily cleanup job" β†’ Find and remove the specific cron entry

    πŸ”’ Constraints

  • Cron runs with minimal PATH β€” use absolute paths for commands
  • Always redirect output (>> logfile 2>&1) or cron fills up mail spool
  • Cron uses the system timezone β€” check with timedatectl
  • Minimum resolution is 1 minute β€” for sub-minute, use a loop in a script
  • User crontabs don't survive user deletion
  • Test commands manually before scheduling