From 34d830b27528ad4075b7b4f0b1131bab4d76967a Mon Sep 17 00:00:00 2001 From: marco370 <48531002-marco370@users.noreply.replit.com> Date: Mon, 16 Feb 2026 12:02:53 +0000 Subject: [PATCH] Replace custom scripts with systemd for managing backend and frontend services Replace custom process management scripts (`check_backend.sh`, `check_frontend.sh`, `restart_all.sh`) with `systemctl` commands to ensure proper service management and virtual environment utilization. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 9aa98b1a-1ee1-47f9-a579-83bad5992ed1 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/449cf7c4-c97a-45ae-8234-e5c5b8d6a84f/7a657272-55ba-4a79-9a2e-f1ed9bc7a528/MmMtYN7 --- ...l-backend-grep-r-Backend_1771243269895.txt | 41 +++++++++++++++++++ deployment/check_backend.sh | 32 ++++++--------- deployment/check_frontend.sh | 35 +++++----------- deployment/restart_all.sh | 27 ++++++++---- 4 files changed, 85 insertions(+), 50 deletions(-) create mode 100644 attached_assets/Pasted-Cerca-il-watchdog-che-riavvia-il-backend-grep-r-Backend_1771243269895.txt diff --git a/attached_assets/Pasted-Cerca-il-watchdog-che-riavvia-il-backend-grep-r-Backend_1771243269895.txt b/attached_assets/Pasted-Cerca-il-watchdog-che-riavvia-il-backend-grep-r-Backend_1771243269895.txt new file mode 100644 index 0000000..db5a28a --- /dev/null +++ b/attached_assets/Pasted-Cerca-il-watchdog-che-riavvia-il-backend-grep-r-Backend_1771243269895.txt @@ -0,0 +1,41 @@ +Cerca il watchdog che riavvia il backend +grep -r "Backend Python NON attivo" /opt/ids/ --include="*.sh" +grep -r "Backend Python NON attivo" /etc/cron* /var/spool/cron/ + +# Verifica cron jobs attivi +crontab -l +crontab -l -u ids + +# Verifica timer systemd +systemctl list-timers --all | grep ids +/opt/ids/deployment/check_backend.sh: echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE" +# ============================================ +# SISTEMA IDS - CONFIGURAZIONE AUTOMATICA +# ============================================ + +# Training ML ogni 12 ore (alle 00:00 e 12:00) +0 */12 * * * /opt/ids/deployment/cron_train.sh + +# Detection automatica ogni 5 minuti +*/3 * * * * /opt/ids/deployment/cron_detect.sh + +# Verifica processo backend Python ogni 5 minuti (riavvia se non attivo) +*/5 * * * * /opt/ids/deployment/check_backend.sh >> /var/log/ids/cron.log 2>&1 + +# Verifica processo frontend ogni 5 minuti (riavvia se non attivo) +*/5 * * * * /opt/ids/deployment/check_frontend.sh >> /var/log/ids/cron.log 2>&1 + +# Pulizia log settimanale (ogni domenica alle 02:00) +0 2 * * 0 find /var/log/ids -name "*.log" -size +100M -exec truncate -s 50M {} \; >> /var/log/ids/cron.log 2>&1 + +# Restart completo del sistema ogni settimana (domenica alle 03:00) +0 3 * * 0 /opt/ids/deployment/restart_all.sh >> /var/log/ids/cron.log 2>&1 + +# Backup database giornaliero (alle 04:00) +0 4 * * * /opt/ids/deployment/backup_db.sh >> /var/log/ids/cron.log 2>&1 +0 3 * * * /opt/ids/deployment/cleanup_database.sh >> /var/log/ids/cleanup.log 2>&1 +Mon 2026-02-16 13:05:00 CET 4min 9s left Mon 2026-02-16 12:05:00 CET 55min ago ids-analytics-aggregator.timer ids-analytics-aggregator.service +Mon 2026-02-16 13:14:33 CET 13min left Mon 2026-02-16 12:13:57 CET 46min ago ids-cleanup.timer ids-cleanup.service +Mon 2026-02-23 03:00:00 CET 6 days left Mon 2026-02-16 03:00:00 CET 10h ago ids-ml-training.timer ids-ml-training.service +- - Mon 2026-02-16 12:48:47 CET 12min ago ids-auto-block.timer ids-auto-block.service +- - Mon 2026-02-16 13:00:01 CET 48s ago ids-list-fetcher.timer ids-list-fetcher.service \ No newline at end of file diff --git a/deployment/check_backend.sh b/deployment/check_backend.sh index 9deeef8..af6bdb1 100755 --- a/deployment/check_backend.sh +++ b/deployment/check_backend.sh @@ -1,34 +1,28 @@ #!/bin/bash # ========================================================= # CHECK BACKEND - Verifica e riavvia backend Python se necessario +# Usa systemctl per gestire il servizio (con virtual environment) # ========================================================= -PROCESS_NAME="python3.11 python_ml/main.py" -PID_FILE="/var/log/ids/backend.pid" LOG_FILE="/var/log/ids/backend.log" -WORK_DIR="/opt/ids" mkdir -p /var/log/ids -# Check if backend is running -if pgrep -f "$PROCESS_NAME" > /dev/null; then - # Backend running, update PID - pgrep -f "$PROCESS_NAME" > "$PID_FILE" +# Check if systemd service is active +if systemctl is-active --quiet ids-ml-backend; then exit 0 else - echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE" + echo "[$(date)] Backend Python NON attivo, riavvio via systemctl..." >> "$LOG_FILE" - # Kill any orphaned Python processes - pkill -f "python_ml/main.py" 2>/dev/null + # Restart via systemctl (usa il venv configurato nel service) + systemctl restart ids-ml-backend - # Wait a moment - sleep 2 + # Wait for startup + sleep 3 - # Start backend - cd "$WORK_DIR/python_ml" - nohup /usr/bin/python3.11 main.py >> "$LOG_FILE" 2>&1 & - NEW_PID=$! - echo $NEW_PID > "$PID_FILE" - - echo "[$(date)] Backend riavviato con PID: $NEW_PID" >> "$LOG_FILE" + if systemctl is-active --quiet ids-ml-backend; then + echo "[$(date)] Backend riavviato con successo via systemctl" >> "$LOG_FILE" + else + echo "[$(date)] ERRORE: Backend non si è avviato. Controlla: journalctl -u ids-ml-backend" >> "$LOG_FILE" + fi fi diff --git a/deployment/check_frontend.sh b/deployment/check_frontend.sh index 5229797..e21f02c 100755 --- a/deployment/check_frontend.sh +++ b/deployment/check_frontend.sh @@ -1,41 +1,28 @@ #!/bin/bash # ========================================================= # CHECK FRONTEND - Verifica e riavvia frontend Node.js se necessario +# Usa systemctl per gestire il servizio # ========================================================= -PROCESS_NAME="npm run dev" -PID_FILE="/var/log/ids/frontend.pid" LOG_FILE="/var/log/ids/frontend.log" -WORK_DIR="/opt/ids" mkdir -p /var/log/ids -# Check if frontend is running -if pgrep -f "vite" > /dev/null; then - # Frontend running, update PID - pgrep -f "vite" > "$PID_FILE" +# Check if systemd service is active +if systemctl is-active --quiet ids-frontend; then exit 0 else - echo "[$(date)] Frontend Node NON attivo, riavvio..." >> "$LOG_FILE" + echo "[$(date)] Frontend Node NON attivo, riavvio via systemctl..." >> "$LOG_FILE" - # Kill any orphaned Node processes - pkill -f "vite" 2>/dev/null - pkill -f "npm run dev" 2>/dev/null + # Restart via systemctl + systemctl restart ids-frontend - # Wait a moment - sleep 2 + # Wait for startup + sleep 3 - # Start frontend with environment variables from .env - cd "$WORK_DIR" - if [ -f "$WORK_DIR/.env" ]; then - # Load .env and start npm with those variables - nohup env $(cat "$WORK_DIR/.env" | grep -v '^#' | xargs) npm run dev >> "$LOG_FILE" 2>&1 & + if systemctl is-active --quiet ids-frontend; then + echo "[$(date)] Frontend riavviato con successo via systemctl" >> "$LOG_FILE" else - # Fallback: start without .env (will use system env vars) - nohup npm run dev >> "$LOG_FILE" 2>&1 & + echo "[$(date)] ERRORE: Frontend non si è avviato. Controlla: journalctl -u ids-frontend" >> "$LOG_FILE" fi - NEW_PID=$! - echo $NEW_PID > "$PID_FILE" - - echo "[$(date)] Frontend riavviato con PID: $NEW_PID" >> "$LOG_FILE" fi diff --git a/deployment/restart_all.sh b/deployment/restart_all.sh index ff03ebc..ea27bb0 100755 --- a/deployment/restart_all.sh +++ b/deployment/restart_all.sh @@ -1,17 +1,17 @@ #!/bin/bash # ========================================================= # RESTART ALL - Riavvio completo sistema IDS +# Usa systemctl per gestire tutti i servizi # ========================================================= LOG_FILE="/var/log/ids/cron.log" echo "$(date): === RESTART SETTIMANALE SISTEMA IDS ===" >> "$LOG_FILE" -# Stop all services +# Stop all services via systemctl echo "$(date): Arresto servizi..." >> "$LOG_FILE" -pkill -f "python_ml/main.py" -pkill -f "vite" -pkill -f "npm run dev" +systemctl stop ids-ml-backend 2>/dev/null +systemctl stop ids-frontend 2>/dev/null sleep 5 @@ -20,10 +20,23 @@ echo "$(date): Pulizia file temporanei..." >> "$LOG_FILE" rm -f /var/log/ids/*.pid find /tmp -name "ids_*" -mtime +7 -delete 2>/dev/null -# Restart services +# Restart services via systemctl echo "$(date): Riavvio servizi..." >> "$LOG_FILE" -/opt/ids/deployment/check_backend.sh >> "$LOG_FILE" 2>&1 +systemctl start ids-ml-backend sleep 3 -/opt/ids/deployment/check_frontend.sh >> "$LOG_FILE" 2>&1 +systemctl start ids-frontend + +# Verify +if systemctl is-active --quiet ids-ml-backend; then + echo "$(date): ML Backend avviato con successo" >> "$LOG_FILE" +else + echo "$(date): ERRORE: ML Backend non si è avviato" >> "$LOG_FILE" +fi + +if systemctl is-active --quiet ids-frontend; then + echo "$(date): Frontend avviato con successo" >> "$LOG_FILE" +else + echo "$(date): ERRORE: Frontend non si è avviato" >> "$LOG_FILE" +fi echo "$(date): Restart completato!" >> "$LOG_FILE"