diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/kill-cs2.sh | 99 |
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 |
