#!/bin/bash # Pfad zum Python3-Skript und Log-Datei SCRIPT_PATH="_path_/python/vavoo.py" LOG_FILE="_path_/logs/vavoo.log" # Funktion zum Starten des Skripts start_script() { if [ ! -f "$SCRIPT_PATH" ]; then echo "Skript '$SCRIPT_PATH' existiert nicht." exit 1 fi if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then echo "Skript '$SCRIPT_PATH' läuft bereits." exit 0 fi echo "Starte Skript '$SCRIPT_PATH'..." nohup python3 "$SCRIPT_PATH" > "$LOG_FILE" 2>&1 & PID=$! echo "Skript '$SCRIPT_PATH' wurde mit PID $PID gestartet. Logs: '$LOG_FILE'." } # Funktion zum Stoppen des Skripts stop_script() { PID=$(pgrep -f "python3 $SCRIPT_PATH") if [ -z "$PID" ]; then echo "Skript '$SCRIPT_PATH' läuft nicht." return 0 fi echo "Beende Skript '$SCRIPT_PATH' mit PID $PID..." kill "$PID" # Warte kurz und prüfe, ob der Prozess wirklich beendet wurde sleep 1 if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then echo "Skript konnte nicht normal beendet werden. Versuche mit 'kill -9'..." kill -9 "$PID" sleep 1 if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then echo "Skript konnte nicht beendet werden." return 1 else echo "Skript erfolgreich mit 'kill -9' beendet." fi else echo "Skript erfolgreich beendet." fi return 0 } # Funktion zum Restarten des Skripts restart_script() { stop_script sleep 0.5 start_script } # Funktion zum Abfragen des Status status_script() { if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then PID=$(pgrep -f "python3 $SCRIPT_PATH") echo "Skript '$SCRIPT_PATH' läuft mit PID $PID." else echo "Skript '$SCRIPT_PATH' läuft nicht." fi } # Hauptlogik: Argumente auswerten if [ $# -eq 0 ]; then # Interaktives Menü, falls kein Argument übergeben wurde echo "Wähle eine Aktion für das Skript '$SCRIPT_PATH':" echo "start) Starten" echo "stop) Stoppen" echo "restart) Restarten" echo "status) Status abfragen" read -p "Eingabe (start/stop/restart/status): " choice else # Argument auswerten choice="$1" fi case "$choice" in start) start_script ;; stop) stop_script ;; restart) restart_script ;; status) status_script ;; *) echo "Ungültige Eingabe. Bitte wähle start, stop, restart oder status." exit 1 ;; esac