blob: f5c9cf0147bd7d977382c958510b1cbdad5ce149 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/env bash
# apply-memory-limits.sh — apply the MemoryMax/MemoryHigh cgroup limits to the
# LIVE dispatch.service WITHOUT a full reinstall. Safe to run while the server
# is up (the limits take effect on the next restart).
#
# What it does (all privileged lines use sudo):
# 1. Copies the updated dispatch.service template to /etc/systemd/system/ (sudo)
# 2. Reloads systemd so it picks up the new unit file (sudo)
# 3. Restarts dispatch so the cgroup limits are applied (sudo)
#
# Why sudo: /etc/systemd/system/ is root-owned; daemon-reload and restart
# require root. The script carries its own sudo — run it directly (no sudo prefix).
#
# Run: ./bin/apply-memory-limits.sh
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "$HERE/.." && pwd)"
SERVICE_SRC="$ROOT/systemd/dispatch.service"
SERVICE_DST="/etc/systemd/system/dispatch.service"
if [ ! -f "$SERVICE_SRC" ]; then
echo "apply-memory-limits: template not found at $SERVICE_SRC" >&2
exit 1
fi
echo "[apply] copying updated dispatch.service → $SERVICE_DST"
# Patch in the real user (same as bin/install does)
REAL_USER="${SUDO_USER:-$USER}"
REAL_GROUP=$(id -gn "$REAL_USER" 2>/dev/null || echo "$REAL_USER")
sed "s/^# User\/Group are set by bin/install.*/User=$REAL_USER\nGroup=$REAL_GROUP/" "$SERVICE_SRC" | sudo tee "$SERVICE_DST" > /dev/null
sudo chmod 644 "$SERVICE_DST"
echo "[apply] daemon-reload…"
sudo systemctl daemon-reload
echo "[apply] restarting dispatch (cgroup limits take effect)…"
sudo systemctl restart dispatch
echo "[apply] done!"
echo " Status: systemctl status dispatch"
echo " Memory: systemctl show dispatch -p MemoryHigh -p MemoryMax"
echo " Logs: journalctl -u dispatch -f"
|