~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
48 lines · 3.0 KB Raw History
#!/bin/bash
P=/tmp/claude-1000/-home-johnandersen777-src-publicdomainrelay-kcp/90fa59d8-02f3-4261-b817-d037e7405f23/scratchpad/linux-proofs
MODE=${1:-session}
VM=swproof-vm-1-$MODE.service
B=swproof-bidder-$MODE
st() { systemctl --user show "$1" -p ActiveState -p SubState -p MainPID -p InvocationID -p Result --value | tr '\n' ' '; echo; }
alive() { for p in "$@"; do if kill -0 "$p" 2>/dev/null; then echo "pid $p ALIVE ($(ps -o cgroup= -p $p | sed 's/.*::\///'))"; else echo "pid $p DEAD"; fi; done; }
echo "== $(date -u +%FT%TZ) MODE=$MODE"
echo "+ systemd-run --user --unit=$B -p Type=exec $P/bin/bidder -mode $MODE -unit $VM"
systemd-run --user --unit=$B -p Type=exec $P/bin/bidder -mode $MODE -unit $VM
for i in $(seq 1 30); do systemctl --user is-active -q $VM && break; sleep 0.2; done
sleep 1
journalctl --user -u $B -o cat --no-pager | tail -6
PD=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid+pdeathsig pid=//p' | tail -1)
SS=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid-only pid=//p' | tail -1)
BASE=$(st $VM); echo "vm baseline: $BASE"
echo "bidder: $(st $B.service)"
echo "vm cgroup: $(systemctl --user show $VM -p ControlGroup --value)  bidder cgroup: $(systemctl --user show $B.service -p ControlGroup --value)"
alive $PD $SS

echo "== $(date -u +%FT%TZ) step1: systemctl --user restart $B"
systemctl --user restart $B; sleep 1.5
NOW=$(st $VM); echo "vm after restart: $NOW"; [ "$NOW" = "$BASE" ] && echo "STEP1 PASS vm unchanged" || echo "STEP1 FAIL"
echo "bidder: $(st $B.service)"
journalctl --user -u $B -o cat --no-pager | grep -E 'StartTransient|bidder pid' | tail -2
echo "plain children of FIRST bidder instance:"; alive $PD $SS

PD2=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid+pdeathsig pid=//p' | tail -1)
SS2=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid-only pid=//p' | tail -1)
MP=$(systemctl --user show $B.service -p MainPID --value)
echo "== $(date -u +%FT%TZ) step2: kill -9 bidder MainPID=$MP"
kill -9 $MP; sleep 1.5
NOW=$(st $VM); echo "vm after kill -9: $NOW"; [ "$NOW" = "$BASE" ] && echo "STEP2 PASS vm unchanged" || echo "STEP2 FAIL"
echo "bidder: $(st $B.service)"
echo "plain children of second bidder (pdeathsig, setsid-only):"; alive $PD2 $SS2

echo "+ restart bidder for step3"
systemctl --user start $B.service 2>&1 || { systemctl --user reset-failed $B.service; systemd-run --user --unit=$B -p Type=exec $P/bin/bidder -mode $MODE -unit $VM; }
sleep 1.5
echo "bidder: $(st $B.service)"
PD3=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid+pdeathsig pid=//p' | tail -1)
SS3=$(journalctl --user -u $B -o cat --no-pager | sed -n 's/.*setsid-only pid=//p' | tail -1)
alive $PD3 $SS3
echo "== $(date -u +%FT%TZ) step3: systemctl --user stop $B"
systemctl --user stop $B; sleep 1
NOW=$(st $VM); echo "vm after stop: $NOW"; [ "$NOW" = "$BASE" ] && echo "STEP3 PASS vm unchanged" || echo "STEP3 FAIL"
echo "bidder: $(st $B.service)"
echo "plain children of third bidder after stop:"; alive $PD3 $SS3