Genstart Systemd-tjeneste ved filændring: Trin-for-trin guide til Java-tjenester

Hvordan genstartes en Systemd-tjeneste, når en fil ændres, specifikt en Java-tjeneste, der skal genindlæses ved ændringer i en jar-fil?

For at genstarte en Systemd-tjeneste, når en jar-fil ændres, skal du bruge inotify-tools til at overvåge filen og et script til at genstarte tjenesten automatisk.

Hvordan genstartes en Systemd-tjeneste, når en fil ændres, specifikt en Java-tjeneste, der skal genindlæses ved ændringer i en jar-fil?

For at genstarte en Systemd-tjeneste, når en fil ændres, kan du bruge en kombination af inotify-tools og Systemd. Her er en trin-for-trin guide til, hvordan du kan opsætte dette:

1. Installer inotify-tools

Inotify-tools er et sæt kommandolinjeværktøjer, der giver en simpel grænseflade til inotify-funktionaliteten i Linux-kernen. Du kan installere det ved at køre følgende kommando:

sudo apt-get install inotify-tools

2. Opret et script til at overvåge jar-filen

Opret et script, der bruger inotifywait til at overvåge ændringer i jar-filen og genstarte Systemd-tjenesten, når der opdages en ændring. Her er et eksempel på et sådant script:

#!/bin/bash

# Sti til din jar-fil
JAR_FILE="/path/to/your/application.jar"

# Navn på din Systemd-tjeneste
SERVICE_NAME="your-java-service"

# Overvåg jar-filen for ændringer
inotifywait -m -e close_write --format "%w%f" "$JAR_FILE" | while read MODIFIED
do
    echo "Detected change in $MODIFIED"
    echo "Restarting $SERVICE_NAME service"
    sudo systemctl restart $SERVICE_NAME
done

3. Gør scriptet eksekverbart

Giv scriptet eksekverbare rettigheder ved at køre følgende kommando:

chmod +x /path/to/your/script.sh

4. Kør scriptet som en Systemd-tjeneste

For at sikre, at overvågningsscriptet kører automatisk ved opstart, kan du oprette en Systemd-tjeneste for det. Opret en ny servicefil i /etc/systemd/system/ kataloget, f.eks. jar-watcher.service:

[Unit]
Description=Watch for changes in jar file and restart service

[Service]
ExecStart=/path/to/your/script.sh
Restart=always

[Install]
WantedBy=multi-user.target

5. Aktivér og start tjenesten

Aktivér og start den nye Systemd-tjeneste ved at køre følgende kommandoer:

sudo systemctl enable jar-watcher.service
sudo systemctl start jar-watcher.service

Nu vil din Systemd-tjeneste automatisk blive genstartet, når der opdages ændringer i den specificerede jar-fil.