This guide installs QILab as a systemd service using the release layout already used by the updater script:
- active binary symlink:
/opt/qilab/current - releases directory:
/opt/qilab/releases/<version> - external config:
/etc/qilab/nodes.yaml - external profiler output:
/var/log/qilab/profiler
sudo mkdir -p /opt/qilab/releases
sudo mkdir -p /etc/qilab
sudo mkdir -p /var/log/qilab/profiler
sudo chown -R root:root /opt/qilab /etc/qilab /var/log/qilabService runs as root (required for priority elevation and CPU-core affinity operations).
Service template is provided at deploy/systemd/qilab.service.
sudo cp deploy/systemd/qilab.service /etc/systemd/system/qilab.service
sudo systemctl daemon-reloadUse the updater script:
sudo ./scripts/update_release.sh 0.0.3 /tmp/qilab-0.0.3-linux-arm64.tar.gzThis script extracts release files to /opt/qilab/releases/<version>, updates /opt/qilab/current, validates ARM64 binary architecture, and restarts the service.
sudo systemctl enable qilab
sudo systemctl start qilabsudo systemctl status qilab --no-pager
journalctl -u qilab -n 100 --no-pagerService output is also redirected to:
/var/log/qilab/qilab.log
Quick check:
sudo tail -n 100 /var/log/qilab/qilab.logExpected logs should include startup version line, and runtime should use:
QILAB_CONFIG_DIR=/etc/qilabQILAB_PROFILER_DIR=/var/log/qilab/profiler
sudo systemctl stop qilab
sudo systemctl restart qilabGraceful stop behavior:
- Service uses
KillSignal=SIGINT(not default SIGTERM) - App handles both
SIGINTandSIGTERM TimeoutStopSec=20allows cleanup (on_abort, thread joins, profiler save) before force kill
sudo systemctl edit qilabExample override:
[Service]
Environment=QILAB_CONFIG_DIR=/etc/qilab
Environment=QILAB_PROFILER_DIR=/var/log/qilab/profilerThen reload + restart:
sudo systemctl daemon-reload
sudo systemctl restart qilabIf you changed the service file and want file-based logs, ensure these lines exist in
/etc/systemd/system/qilab.service under [Service]:
StandardOutput=append:/var/log/qilab/qilab.log
StandardError=append:/var/log/qilab/qilab.logThen apply:
sudo mkdir -p /var/log/qilab
sudo chown -R root:root /var/log/qilab
sudo systemctl daemon-reload
sudo systemctl restart qilab