Hoe Een Script Automatisch Monitoren En Herstarten?

Gepubliceerd 13 juli 2024

Probleem: Processen Actief Houden

Processen kunnen crashen of stoppen zonder waarschuwing, wat diensten kan verstoren en downtime kan veroorzaken. Het handmatig herstarten van deze processen kost tijd en is niet efficiënt, vooral voor belangrijke systemen die de hele tijd moeten draaien.

Oplossing: Bash Script voor Procesmonitoring en Herstart

Een Bash Script Maken

Een bash script kan een Python script monitoren en herstarten als het stopt met draaien. De belangrijkste onderdelen van dit bash script omvatten:

  • Een lus die continu draait
  • Een commando om te controleren of het Python script draait
  • Logica om het Python script te starten als het niet draait

Het script controleert of het Python proces draait met behulp van het pgrep commando. Als het proces niet wordt gevonden, start het script het opnieuw. Deze methode is eenvoudig om een script actief te houden.

Tip: Loggen voor Probleemoplossing

Voeg loggen toe aan uw bash script om bij te houden wanneer het Python script wordt herstart. Dit kan helpen bij probleemoplossing en het monitoren van de frequentie van herstarts. U kunt dit doen door een regel toe te voegen om naar een logbestand te schrijven:

echo "$(date): Restarting $SCRIPT_NAME" >> /path/to/restart.log

Plaats deze regel net voordat het Python script wordt herstart in uw bash script.

Het Bash Script Implementeren

Zo schrijft u het bash script:

  1. Open een teksteditor en maak een nieuw bestand aan met de naam monitor_script.sh.

  2. Voeg deze inhoud toe aan het bestand:

#!/bin/bash

SCRIPT_NAME="checkqueue.py"
SCRIPT_PATH="/path/to/checkqueue.py"

while true; do
    if ! pgrep -f "$SCRIPT_NAME" > /dev/null; then
        echo "Starting $SCRIPT_NAME"
        python3 "$SCRIPT_PATH" &
    fi
    sleep 60
done
  1. Sla het bestand op en maak het uitvoerbaar met het commando: chmod +x monitor_script.sh

Laten we elk onderdeel van het script uitleggen:

  • #!/bin/bash vertelt het systeem om bash te gebruiken om dit script uit te voeren.
  • SCRIPT_NAME en SCRIPT_PATH variabelen slaan de naam en het volledige pad van het Python script op.
  • De while true lus zorgt ervoor dat het script continu draait.
  • pgrep -f "$SCRIPT_NAME" controleert of een proces dat overeenkomt met de scriptnaam draait.
  • Als het proces niet wordt gevonden, start het script het met python3 "$SCRIPT_PATH" &.
  • Het sleep 60 commando laat het script 60 seconden wachten voordat het opnieuw controleert.

Om dit script te gebruiken, vervangt u /path/to/checkqueue.py met het werkelijke pad naar uw Python script. U kunt vervolgens het bash script op de achtergrond uitvoeren of het toevoegen aan de opstartprocessen van uw systeem om uw Python script te allen tijde actief te houden.