summaryrefslogtreecommitdiff
path: root/scripts/kill-cs2.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xscripts/kill-cs2.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/scripts/kill-cs2.sh b/scripts/kill-cs2.sh
new file mode 100755
index 0000000..81860cb
--- /dev/null
+++ b/scripts/kill-cs2.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+# Kill all running CS2 processes AND clean up Steam lock files
+# Usage: kill-cs2.sh [-f|--force]
+
+FORCE=0
+if [[ "$1" == "-f" || "$1" == "--force" ]]; then
+ FORCE=1
+fi
+
+echo "=== Finding CS2 processes ==="
+
+# Get CS2 PIDs
+PIDS=$(pgrep -f "cs2" 2>/dev/null)
+
+if [ -z "$PIDS" ]; then
+ echo "No CS2 processes found"
+else
+ for pid in $PIDS; do
+ echo ""
+ echo "Process $pid:"
+ ps -p "$pid" -o pid,ppid,state,cmd --no-headers 2>/dev/null
+
+ # Check process state
+ STATE=$(ps -p "$pid" -o state= 2>/dev/null)
+ PPID=$(ps -p "$pid" -o ppid= 2>/dev/null | tr -d ' ')
+
+ if [ "$STATE" = "Z" ]; then
+ echo " -> ZOMBIE process, killing parent (PID $PPID)"
+ sudo kill -9 "$PPID" 2>/dev/null
+ else
+ echo " -> Sending SIGKILL"
+ sudo kill -9 "$pid" 2>/dev/null
+
+ # Check if it survived
+ sleep 0.5
+ if kill -0 "$pid" 2>/dev/null; then
+ echo " -> Still alive! Trying parent (PID $PPID)"
+ sudo kill -9 "$PPID" 2>/dev/null
+ else
+ echo " -> Killed"
+ fi
+ fi
+ done
+fi
+
+echo ""
+echo "=== Killing Steam reaper/overlay ==="
+sudo pkill -9 -f "reaper.*730" 2>/dev/null
+sudo pkill -9 -f "gameoverlayui.*730" 2>/dev/null
+
+echo ""
+echo "=== Cleaning lock files ==="
+
+# Find CS2 installation
+CS2_PATHS=(
+ "${HOME}/.steam/steam/steamapps/common/Counter-Strike Global Offensive"
+ "${HOME}/.local/share/Steam/steamapps/common/Counter-Strike Global Offensive"
+ "/mnt/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive"
+)
+
+for cs2path in "${CS2_PATHS[@]}"; do
+ if [ -d "$cs2path" ]; then
+ echo "Checking: $cs2path"
+ find "$cs2path" -name "*.lock" -o -name ".lock" 2>/dev/null | while read lock; do
+ echo " Removing: $lock"
+ rm -f "$lock"
+ done
+ fi
+done
+
+# Temp lock files
+rm -f /tmp/steam_730.lock /tmp/.steam_730_lock 2>/dev/null
+
+echo ""
+echo "=== Cleaning shared memory ==="
+rm -f /dev/shm/*steam* /dev/shm/*valve* /dev/shm/*source* 2>/dev/null
+echo "Cleared /dev/shm"
+
+# System V shared memory
+if [ "$FORCE" -eq 1 ]; then
+ SHMIDS=$(ipcs -m 2>/dev/null | grep "$(whoami)" | awk '{print $2}')
+ for shmid in $SHMIDS; do
+ ipcrm -m "$shmid" 2>/dev/null && echo "Removed shm segment $shmid"
+ done
+fi
+
+echo ""
+echo "=== Final check ==="
+REMAINING=$(pgrep -f "cs2" 2>/dev/null)
+if [ -n "$REMAINING" ]; then
+ echo "WARNING: CS2 processes still running:"
+ ps -p $(echo $REMAINING | tr ' ' ',') -o pid,ppid,state,cmd --no-headers
+ echo ""
+ echo "These may be unkillable zombies. Try logging out and back in,"
+ echo "or reboot if necessary."
+ exit 1
+else
+ echo "All CS2 processes killed"
+fi