42 lines
1.1 KiB
Bash
Executable File
42 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# wm-kill: Kill running wm-port agent sessions.
|
|
#
|
|
# Usage:
|
|
# wm-kill <task-id> # kill session for a specific task
|
|
# wm-kill --all # kill all wm-port sessions
|
|
|
|
set -euo pipefail
|
|
|
|
MOUNT="${OLLIE:-$HOME/mnt/ollie}"
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
TOOLS="$ROOT/tools/wm-port"
|
|
|
|
source "$TOOLS/task-map.sh"
|
|
|
|
die() { printf 'wm-kill: %s\n' "$*" >&2; exit 1; }
|
|
|
|
if [ "${1:-}" = "--all" ]; then
|
|
killed=0
|
|
while IFS=$'\t' read -r sid state cwd backend model; do
|
|
[[ "$sid" == wm-port-* ]] || continue
|
|
echo "kill" > "$MOUNT/s/$sid/ctl" 2>/dev/null && {
|
|
printf 'Killed %s\n' "$sid"
|
|
(( ++killed ))
|
|
}
|
|
done < <(cat "$MOUNT/s/idx" 2>/dev/null)
|
|
[ "$killed" -eq 0 ] && echo "No active wm-port sessions."
|
|
exit 0
|
|
fi
|
|
|
|
[ $# -lt 1 ] && die "usage: wm-kill <task-id> | --all"
|
|
|
|
tid="$1"
|
|
sid="wm-port-${tid}"
|
|
|
|
if [ -d "$MOUNT/s/$sid" ]; then
|
|
echo "kill" > "$MOUNT/s/$sid/ctl" 2>/dev/null
|
|
printf '\033[1;31mKilled session %s\033[0m\n' "$sid"
|
|
else
|
|
echo "No active session for task $tid"
|
|
fi
|