Es läuft ein Dienst im Tomcat, der jede Minute in die catalina.out schreibt, ob er gerade läuft oder nicht. Nur wenn dieser Dienst nicht läuft darf der Tomcat beendet werden. Daher wie while true schleife.
Problem: Wenn ich den Tomcat versuche zu killen, funktioniert es beim manuellen Aufruf des Scripts wunderbar. Beim Versuch per Crontab, scheint das Kill nicht mehr zu funktionieren, der Tomcat läuft einfach weiter.
Crontab läuft unter den gleichen User, unter dem ich das Script erfolgreich manuell ausführen kann.
Zusatz Info um die Frage vorweg zu nehmen: Wenn ich Anstelle von Kill das reguläre shutdown.sh von meinen Script aus heraus aufrufe, bleibt das shutdown.sh in einer schleife hängen, daher dachte ich mir, ich kill den Tomcat direkt. Generel scheint Crontab true Schleife und Kill nicht so gute freunde zu seien, den Kill bewirkt in dieser Kombi auch immer das mein Script an dieser Stelle aussteigt, so dass ich den Neustart des Tomcats in ein extra Script schon ausgelagert habe.
Jemand eine Idee was hier los ist?
Code: Alles auswählen
#!/bin/bash
logpath="/opt/tomcat/logs/catalina.out"
date=$(date -d "yesterday" '+%Y-%m-%d')
if [[ $(zgrep "Problem" "${logpath}") ]]; then
echo "Problem"
while [ true ]
do
currentTime=$(date "+%F %R")
Maintainable=$(grep "${currentTime}" "${logpath}" | grep problem | grep -o yes)
if [[ "$Maintainable" == yes ]]; then
echo "Maintainable Tomcat stoppt"
PID=$(ps -ef | grep tomcat | grep -v grep | grep -v shutdown | awk '{print $2}')
kill $PID
sleep 0.5
kill -9 $PID
sleep 0.5
echo "Problem Tomcat beenden"
break;
else
echo -e "Nicht Stoppen, Dienst läuft gerade"
sleep 0.5
fi
done
else
echo "keine Problem"
exit;
fi