@@ -39,43 +39,44 @@ function trapExitHandler() {
3939 else
4040 echo -n " ERROR ($gSuccessCnt successful, $gFailedCnt failed)" > $RESULT_FILE
4141 fi
42- rm -f $PID_FILE
4342 exit $exitVal
4443}
4544
4645
4746# ====================================================================================================================-
4847# --- Main script -----------------------------------------------------------------------------------------------------
4948
50- [ -e $PID_FILE ] && { echo " Instance already running, aborting another one" ; exit 1; } # run before installing traphandler!
51- trap trapExitHandler SIGTERM EXIT
52-
53- echo " $$ " > $PID_FILE
54-
55- [ -e $URL_FILE ] || { gRetMessage=" Cannot read url file $URL_FILE " ; exit 1; }
56-
57- while IFS= read -r fhemUrl; do
58- fhemwebState=$( curl \
59- --connect-timeout 5 \
60- --max-time 8 \
61- --silent \
62- --insecure \
63- --output /dev/null \
64- --write-out " %{http_code}" \
65- --user-agent ' FHEM-Docker/1.0 Health Check' \
66- " ${fhemUrl} " )
67- if [ $? -ne 0 ] ||
68- [ -z " ${fhemwebState} " ] ||
69- [ " ${fhemwebState} " == " 000" ] ||
70- [ " ${fhemwebState: 0: 1} " == " 5" ]; then
71- gRetMessage=" $gRetMessage $fhemUrl : FAILED ($fhemwebState );"
72- gRetVal=1
73- (( gFailedCnt++ ))
74- else
75- gRetMessage=" $gRetMessage $fhemUrl : OK;"
76- (( gSuccessCnt++ ))
77- fi
78- done < $URL_FILE
7949
80- exit $gRetVal
50+ (
51+ trap trapExitHandler SIGTERM EXIT
52+
53+ # Wait 3 seconds for lock on $PID_FILE (fd 212), exit on failure
54+ flock -x -w 3 212 || { echo " Instance already running, aborting another one" ; exit 1; }
55+
56+ [ -e $URL_FILE ] || { gRetMessage=" Cannot read url file $URL_FILE " ; exit 1; }
57+ while IFS= read -r fhemUrl; do
58+ fhemwebState=$( curl \
59+ --connect-timeout 5 \
60+ --max-time 8 \
61+ --silent \
62+ --insecure \
63+ --output /dev/null \
64+ --write-out " %{http_code}" \
65+ --user-agent ' FHEM-Docker/1.0 Health Check' \
66+ " ${fhemUrl} " )
67+ if [ $? -ne 0 ] ||
68+ [ -z " ${fhemwebState} " ] ||
69+ [ " ${fhemwebState} " == " 000" ] ||
70+ [ " ${fhemwebState: 0: 1} " == " 5" ]; then
71+ gRetMessage=" $gRetMessage $fhemUrl : FAILED ($fhemwebState );"
72+ gRetVal=1
73+ (( gFailedCnt++ ))
74+ else
75+ gRetMessage=" $gRetMessage $fhemUrl : OK;"
76+ (( gSuccessCnt++ ))
77+ fi
78+ done < $URL_FILE
79+
80+ exit $gRetVal
81+ ) 212> ${PID_FILE}
8182
0 commit comments