Task Queue Processor (dataskq) in DirectAdmin – Complete Guide to Task Queue Management, Debugging, and Common Operations

DirectAdmin does not execute many operations immediately. Instead, it uses an internal task processor called dataskq, which collects tasks in a queue and processes them periodically. This mechanism improves performance, prevents redundant operations, and ensures efficient system behavior.

Task Queue ProcessorDebugging

~3 min read • Updated Mar 1, 2026

1. What Is dataskq and How Does It Work?


The Task Queue Processor, known as dataskq, is responsible for executing queued operations inside DirectAdmin. Rather than performing actions instantly, DirectAdmin writes tasks into a queue file and lets dataskq process them at scheduled intervals.

Key paths and behavior:

  • Binary: /usr/local/directadmin/dataskq
  • Task queue Error! Hyperlink reference not valid. /usr/local/directadmin/data/task.queue
  • Execution frequency: Once per minute by default (configurable via dataskq_run_interval)
  • Behavior: After processing, task.queue is deleted. It is normal for the file to not exist at times.

Benefit: Similar tasks (e.g., multiple domain additions requiring a webserver reload) are grouped and executed only once.

Note: After major changes (e.g., enabling SSL, adding a domain), wait at least one minute for dataskq to run.

---

2. Common Examples of Adding Tasks to task.queue


You can manually append tasks to the queue:


# Restart DirectAdmin
echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue

# Rewrite a user's webserver configuration
echo "action=rewrite&value=httpd&user=fred" >> /usr/local/directadmin/data/task.queue

# Update DirectAdmin
echo "action=update&value=program" >> /usr/local/directadmin/data/task.queue

# Run nightly tally for all users
echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue
---

3. Running dataskq Manually


You can run dataskq manually without waiting for cron:


# Normal execution
/usr/local/directadmin/dataskq d

# Debug mode (recommended levels: d80, d400, d800, d2000)
/usr/local/directadmin/dataskq d2000
---

4. What Is task.queue.cb?


task.queue.cb is used by CustomBuild for software installation and update tasks.

Path:


/usr/local/directadmin/data/task.queue.cb

To process only CustomBuild tasks:


/usr/local/directadmin/dataskq d2000 --custombuild
---

5. Limiting the Number of dataskq Instances


To prevent multiple simultaneous dataskq processes (useful on very large servers):


da config-set dataskq_max_instances 1 --restart

Recommendation: Keep the default (multiple instances allowed). Only adjust if you experience heavy load.

---

6. Increasing dataskq Execution Frequency


To run dataskq more frequently than once per minute:


da config-set dataskq_run_interval 30s --restart

This runs dataskq every 30 seconds.

---

7. What If dataskq Causes 100% CPU Usage?


Step 1: Check system logs


tail -n 100 /var/log/directadmin/system.log

Step 2: Debug dataskq


killall -USR1 dataskq
tail -n 10 /var/log/directadmin/errortaskq.log

Common causes:

  • Large Maildir inbox → delete heavy emails
  • Huge brute-force logs → trim brute_log_entries.list
---

8. Common Issues and Fixes


8.1 Monthly bandwidth reset not running

Ensure cron ran at 4:20 AM on the first day of the month. If not, run manually:


echo "action=cleanreset&value=all" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d
echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue

Bandwidth-only tally:


echo "action=bandwidthtally&value=all" >> /usr/local/directadmin/data/task.queue

Quota tally:


echo "action=quotatally&value=all" >> /usr/local/directadmin/data/task.queue

Rewrite DNS zone:


echo "action=rewrite&value=named&domain=domain.com" >> /usr/local/directadmin/data/task.queue

Rewrite httpd for a user:


echo "action=rewrite&value=httpd&user=fred" >> /usr/local/directadmin/data/task.queue
---

9. Useful task.queue Commands


  • Restart services: action=rewrite&value=exim or dovecot
  • Rebuild DKIM: action=rewrite&value=dkim
  • Mail partition conversion: action=convert&value=mail_partition
  • Update license: action=update&value=license
  • User backup: action=backup&type=user&value=john
  • User restore: action=restore&type=user&value=john
  • Delete domain: action=delete&value=domain&select0=domain.com
  • Send admin notification: action=notify&value=admin&subject=...&message=...

Written & researched by Dr. Shahin Siami