Cron is the Linux task scheduler. Through ISPmanager you can add, edit, and delete cron jobs via the graphical interface without editing crontab manually.
Creating a Cron Job
Main menu → Cron → Create.
| Field | Description |
|---|---|
| User | On whose behalf to run |
| Minutes | 0–59 or * (every minute) |
| Hours | 0–23 or * |
| Day of month | 1–31 or * |
| Months | 1–12 or * |
| Day of week | 0–7 (0,7=Sun) or * |
| Command | Full path to the script |
Cron Job Examples
# Every hour
0 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/cron.php
# Every day at 03:00
0 3 * * * /usr/bin/php /var/www/user1/data/www/example.com/www/cleanup.php
# Every 5 minutes
*/5 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/queue.php
# WordPress WP-Cron via curl (recommended instead of wp-cron.php)
*/5 * * * * /usr/bin/curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null
DISABLE_WP_CRON = true in wp-config.php) and run it via system cron — more reliable and faster.WordPress Cron via System Cron
# wp-config.php
define('DISABLE_WP_CRON', true);
# Cron job (every 5 minutes)
*/5 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/wp-cron.php > /dev/null 2>&1
Logging Cron Output
# Save output to a log file
0 3 * * * /usr/bin/php /var/www/cron.php >> /var/log/mycron.log 2>&1
# Discard output
0 3 * * * /usr/bin/php /var/www/cron.php > /dev/null 2>&1
/usr/bin/php8.2 or /usr/bin/php. Relative paths do not work in cron.Common Cron Errors in ISPmanager 6
| Symptom | Cause |
|---|---|
| sh: 1: /usr/bin/php: not found | The server has PHP multi-versioning enabled, and the required binary lives somewhere other than /usr/bin/php, for example /opt/php-8.2/bin/php |
| The job does not appear in the list after creation | The form only saves when you click "Ok" at the bottom; switching to another panel tab without saving discards the input |
| The command breaks off at a % character | An unescaped % is read by cron as a newline — this matters for date +%Y%m%d in backup commands |
| No error email arrives | ISPmanager 6 does not forward cron output to email by default — you must explicitly add MAILTO at the start of the command or redirect output to a file |
| Permission denied when editing someone else's job | An additional panel user or reseller lacks owner-level rights on that account's cron |
| wp-cron.php fires twice in a row | The cron interval overlaps with WP-Cron's internal lock TTL; stagger the schedules or add a lock file inside the script itself |
| The job ran, but the site shows no change | The PHP CLI that runs cron and the PHP-FPM process serving the web use separate OPcache instances; after a cron-driven deploy you need a separate cache flush for the web side |
The Cron Daemon's Own System Log
When there are many jobs and it is hard to tell which one failed, check the cron daemon's own log: it shows that a run actually happened, even if the PHP script inside failed silently with no output.
# On systems with systemd
journalctl -u cron --since today
# On systems with classic syslog
grep CRON /var/log/syslog | tail -n 50
When Cron in ISPmanager 6 Is Not the Right Tool
- The job must run more often than once a minute — the minimum cron interval is 60 seconds regardless of the panel
- You need a queue with retries and priorities — a persistent worker (Supervisor, a systemd unit) requires root privileges that a regular ISPmanager account does not have
- You need to run operations with root privileges (updating system packages, working with other accounts) — only the site user's own crontab is available
- You need a chain of dependent steps with conditional logic — cron only supports crudely chaining commands with
&&on one line - The job must be triggered by an external event (a webhook, a file change, a payment gateway notification) rather than by a schedule — cron only reacts to the clock, not to events
Verifying the Result
After creating a job, confirm it is actually running and not failing silently — a detailed walkthrough of the system logs is in the article on logs and diagnostics in ISPmanager 6, and the specifics of cron for WordPress are covered in the article on WordPress in ISPmanager 6. A simple rule: if the daemon's log has no line naming your job after three scheduled runs, the problem is not the PHP script but the crontab entry itself.
# List a specific user's system cron jobs
crontab -l -u user1
# Check the most recent script call in the domain's log
tail -n 50 /var/www/user1/data/logs/example.com.log | grep cron.php