🇩🇪 DE 🇬🇧 EN
NexoraHost / Docs home
Popular searches:Minecraft won't startCreate Minecraft serverFiveM txAdminInstall WordPressSet up subdomainVPS GermanySSL errorOpen port 25565Discord bot hostingDNS troubleshooting

Cronjobs – Scheduling Tasks Automatically

With cronjobs you automate recurring tasks on your server – from backups to updates to deleting old logs. This guide shows you how to set up and manage cronjobs.

Note: Detailed guides on server administration can be found in the left navigation.

What is a cronjob?

A cronjob is a time-controlled task that the cron daemon runs in the background. You define when and how often a command or script is executed – once or regularly. Cron runs on every Linux server and is active by default.

Understanding cronjob syntax

A cronjob consists of five time fields and the command to execute:

* * * * * /path/to/command
│ │ │ │ │
│ │ │ │ └── Day of week (0-7, 0 and 7 = Sunday)
│ │ │ └──── Month (1-12)
│ │ └────── Day of month (1-31)
│ └──────── Hour (0-23)
└────────── Minute (0-59)

Time fields – examples

Schedule Syntax Meaning
Every minute * * * * * Runs 1440 times a day
Every hour 0 * * * * At the top of the hour
Daily at 3 AM 0 3 * * * Good for backups and maintenance
Every Sunday at 4 AM 0 4 * * 0 Weekly tasks
1st of every month 0 0 1 * * Monthly reports
Every 15 minutes */15 * * * * Frequent checks
Weekdays at 9 AM 0 9 * * 1-5 Monday to Friday

Setting up cronjobs

For the current user

# Open crontab
crontab -e

The first time you'll be asked for an editor. Choose nano (easier) or vim (advanced).

For root (system tasks)

sudo crontab -e

For a specific user

sudo crontab -u username -e

Practical examples

Backup automation

# Daily database backup at 2:30 AM
30 2 * * * mysqldump -u root -p'Password' database > /backup/db_$(date +\%Y\%m\%d).sql

# Weekly server backup every Sunday at 4 AM
0 4 * * 0 tar -czf /backup/server_$(date +\%Y\%m\%d).tar.gz /var/www

Log management

# Delete logs older than 30 days
0 5 * * * find /var/log -name "*.log" -mtime +30 -delete

# Clean up Docker logs
0 6 * * 0 docker system prune -af

Updates and maintenance

# System updates every Monday at 3 AM
0 3 * * 1 apt update && apt upgrade -y

# Restart a server once daily (for game servers)
0 4 * * * systemctl restart minecraft

Monitoring

# Disk space check with email warning
0 8 * * * df -h | awk '{if ($5+0 > 90) print "Warning: " $6 " is " $5 " full"}' | mail -s "Disk Space Warning" [email protected]

Managing cronjobs

# List all cronjobs of the current user
crontab -l

# Delete all cronjobs (Caution!)
crontab -r

# Show all cronjobs of all users
for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; sudo crontab -u $user -l 2>/dev/null; done

Output and logging

By default, the output of a cronjob is sent via email to the user. You can control this:

# Write output to file
0 3 * * * /path/to/script.sh >> /var/log/my-cron.log 2>&1

# Discard output (silent)
0 3 * * * /path/to/script.sh > /dev/null 2>&1

# Only log errors
0 3 * * * /path/to/script.sh >> /var/log/my-cron.log 2>> /var/log/my-cron-error.log

System-wide cronjobs (/etc/crontab)

In addition to user-specific crontabs, there are system-wide cronjobs. These have an additional field for the user:

# In /etc/crontab
# m h dom mon dow user command
0 3 * * * root /usr/local/bin/backup.sh

Pre-configured directories for scripts:

Simply place an executable script in the corresponding directory.

Common problems

Cronjob not running:

Percent signs (%) in commands:

Script is executable but doesn't run via cron:

Detailed guides on scripts and automation can be found in the articles in the left navigation.

NexoraHost

Your own server

Root access for Linux admins – secure with our VPS/root guides.

nexorahost.com · Maincubes FRA01 · 1 Tbit/s DDoS · 99,9 % Uptime