Daemons
The daemon command group manages long-running background processes using Supervisor. Abstrax writes a Supervisor program configuration for each daemon using the platform provider:
- Debian/Ubuntu family:
/etc/supervisor/conf.d/abstrax-<name>.conf(servicesupervisor) - RHEL-compatible family:
/etc/supervisord.d/abstrax-<name>.ini(servicesupervisord)
Use daemons for processes that should run continuously (queue workers, websocket servers, and similar). For scheduled tasks that run and exit, use cron instead.
abstrax daemon <action> [arguments] [flags]
Permissions
add, remove, modify, start, stop, and restart require root. The read-only commands status, list, and logs do not require root.
Daemon names
A daemon name may contain letters, digits, underscores, and hyphens, up to 64 characters.
daemon add
Add a new managed daemon. The --command flag is required.
abstrax daemon add <name> --command="<command>" [flags]
Flags
| Flag | Default | Description |
|---|---|---|
--command |
Command to run (required) | |
--directory |
Working directory | |
--user |
User to run as | |
--processes |
1 |
Number of processes |
--autostart |
true |
Start automatically when Supervisor starts |
--autorestart |
unexpected |
Autorestart mode (always, unexpected, false) |
--install-supervisor |
false |
Install Supervisor if it is not present |
--startsecs |
1 |
Seconds before the process is considered started |
--startretries |
3 |
Number of start retries |
--stopsignal |
TERM |
Signal used to stop the process |
--stopwaitsecs |
10 |
Seconds to wait for the process to stop |
--exitcodes |
Expected exit codes | |
--stdout-logfile |
Path for the stdout log file | |
--stderr-logfile |
Path for the stderr log file | |
--environment |
Environment variable as KEY=VALUE (repeatable) |
Examples
When the command runs PHP, use the versioned binary that matches the project (php8.5, php8.4, and so on). The unversioned php command follows the system default and may not match the project's runtime. Check the version with abstrax project info <name>.
sudo abstrax daemon add queue-worker \
--command="php8.5 artisan queue:work" \
--directory=/var/www/myapp \
--user=www-data \
--processes=2 \
--autostart \
--autorestart=unexpected
# Install Supervisor at the same time if it is missing
sudo abstrax daemon add queue-worker --command="php8.5 artisan queue:work" --install-supervisor
Example output
Daemon queue-worker added.
Config: /etc/supervisor/conf.d/abstrax-queue-worker.conf
daemon remove
Remove a daemon. By default the process is stopped first.
sudo abstrax daemon remove <name> [flags]
| Flag | Default | Description |
|---|---|---|
--stop |
true |
Stop the daemon before removing it |
--delete-logs |
false |
Delete the log files |
--force |
false |
Force removal |
sudo abstrax daemon remove queue-worker --stop
daemon modify
Change a daemon's configuration. Only the fields you pass are updated.
sudo abstrax daemon modify <name> [flags]
| Flag | Description |
|---|---|
--command |
Change the command |
--directory |
Change the working directory |
--user |
Change the user |
--processes |
Change the number of processes |
--environment |
Set an environment variable as KEY=VALUE (repeatable) |
sudo abstrax daemon modify queue-worker --processes=4
Lifecycle commands
sudo abstrax daemon start <name>
sudo abstrax daemon stop <name>
sudo abstrax daemon restart <name>
daemon status
Show the status of a daemon. Does not require root.
abstrax daemon status queue-worker
Name: queue-worker
Status: RUNNING
Info: pid 12345, uptime 0:10:00
Config: /etc/supervisor/conf.d/abstrax-queue-worker.conf
daemon list
List managed daemons. Does not require root.
abstrax daemon list
NAME STATUS INFO
queue-worker RUNNING pid 12345, uptime 0:10:00
daemon logs
Show a daemon's logs. Does not require root.
abstrax daemon logs <name> [flags]
| Flag | Default | Description |
|---|---|---|
--lines |
50 |
Number of lines to show |
--follow |
false |
Follow the log output |
--stderr |
false |
Show the stderr log |
--stdout |
false |
Show the stdout log |
abstrax daemon logs queue-worker
abstrax daemon logs queue-worker --lines=100 --follow
Notes
- These commands require Supervisor. If it is not installed, use
--install-supervisorwithdaemon add, or install it first. Runabstrax doctorto check whether Supervisor is present. --autorestartacceptsalways,unexpected, orfalse. The default,unexpected, restarts the process only when it exits with an unexpected code.
Related
- Managing daemons
- Cron - for scheduled jobs
- Services - for systemd services