Initial commit — Server_Monitorizare_v2
This commit is contained in:
112
scripts/vscode_session_monitor.sh
Executable file
112
scripts/vscode_session_monitor.sh
Executable file
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
|
||||
# VS Code Session Monitor and Restart Script
|
||||
# This script monitors VS Code memory usage and session health
|
||||
|
||||
VSCODE_MEMORY_LIMIT=2000000 # 2GB in KB
|
||||
CHECK_INTERVAL=30 # Check every 30 seconds
|
||||
LOG_FILE="/tmp/vscode_monitor.log"
|
||||
|
||||
echo "$(date): Starting VS Code session monitor..." >> "$LOG_FILE"
|
||||
|
||||
monitor_vscode() {
|
||||
while true; do
|
||||
# Get VS Code process info
|
||||
VSCODE_PIDS=$(pgrep -f "code.*--type=(utility|zygote)" | head -5)
|
||||
|
||||
if [ -n "$VSCODE_PIDS" ]; then
|
||||
TOTAL_MEMORY=0
|
||||
PROCESS_COUNT=0
|
||||
|
||||
for pid in $VSCODE_PIDS; do
|
||||
if [ -f "/proc/$pid/status" ]; then
|
||||
MEMORY=$(awk '/VmRSS:/ {print $2}' "/proc/$pid/status" 2>/dev/null || echo 0)
|
||||
TOTAL_MEMORY=$((TOTAL_MEMORY + MEMORY))
|
||||
PROCESS_COUNT=$((PROCESS_COUNT + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$(date): VS Code processes: $PROCESS_COUNT, Total memory: ${TOTAL_MEMORY}KB" >> "$LOG_FILE"
|
||||
|
||||
# Check if memory usage is too high
|
||||
if [ "$TOTAL_MEMORY" -gt "$VSCODE_MEMORY_LIMIT" ]; then
|
||||
echo "$(date): WARNING - VS Code memory usage too high: ${TOTAL_MEMORY}KB" >> "$LOG_FILE"
|
||||
echo "$(date): Recommend restarting VS Code to prevent crashes" >> "$LOG_FILE"
|
||||
|
||||
# Optional: Force cleanup of specific high-memory processes
|
||||
for pid in $VSCODE_PIDS; do
|
||||
if [ -f "/proc/$pid/status" ]; then
|
||||
MEMORY=$(awk '/VmRSS:/ {print $2}' "/proc/$pid/status" 2>/dev/null || echo 0)
|
||||
if [ "$MEMORY" -gt 500000 ]; then # 500MB
|
||||
echo "$(date): High memory process (PID $pid): ${MEMORY}KB" >> "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Check for renderer crashes
|
||||
if grep -q "renderer process gone" ~/.config/Code/logs/*/main.log 2>/dev/null; then
|
||||
echo "$(date): Renderer crash detected - recommend restart" >> "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep "$CHECK_INTERVAL"
|
||||
done
|
||||
}
|
||||
|
||||
check_session_limits() {
|
||||
echo "=== VS Code Session Limits Analysis ==="
|
||||
echo "Current system limits:"
|
||||
ulimit -a | grep -E "(processes|memory|files)"
|
||||
echo ""
|
||||
|
||||
echo "Current VS Code processes:"
|
||||
ps aux | grep -E "(code|vscode)" | grep -v grep | wc -l
|
||||
echo ""
|
||||
|
||||
echo "VS Code memory usage:"
|
||||
ps -o pid,ppid,pcpu,pmem,rss,args -C code | head -10
|
||||
echo ""
|
||||
|
||||
echo "GitHub Copilot Chat requests (last 50 lines):"
|
||||
find ~/.config/Code/logs -name "*copilot*" -type f -exec tail -50 {} \; 2>/dev/null | grep -c "ccreq:"
|
||||
echo ""
|
||||
|
||||
echo "Recent crashes:"
|
||||
grep "crashed" ~/.config/Code/logs/*/main.log 2>/dev/null | tail -5
|
||||
}
|
||||
|
||||
# Function to clean up VS Code cache and temporary files
|
||||
cleanup_vscode() {
|
||||
echo "$(date): Starting VS Code cleanup..." >> "$LOG_FILE"
|
||||
|
||||
# Clean extension host logs
|
||||
find ~/.config/Code/logs -name "*.log" -size +10M -delete 2>/dev/null
|
||||
|
||||
# Clean old crash dumps
|
||||
find ~/.config/Code/Crashpad -type f -mtime +7 -delete 2>/dev/null
|
||||
|
||||
# Clean temporary MCP sockets
|
||||
find /tmp -name "mcp-*" -type d -mtime +1 -exec rm -rf {} \; 2>/dev/null
|
||||
|
||||
echo "$(date): Cleanup completed" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Main execution
|
||||
case "${1:-check}" in
|
||||
"monitor")
|
||||
monitor_vscode
|
||||
;;
|
||||
"check")
|
||||
check_session_limits
|
||||
;;
|
||||
"cleanup")
|
||||
cleanup_vscode
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {monitor|check|cleanup}"
|
||||
echo " monitor: Start continuous monitoring"
|
||||
echo " check: Show current session limits and status"
|
||||
echo " cleanup: Clean VS Code cache and logs"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user