33# processWatchdog application start, watchdog and report script
44# Copyright (c) 2023 Eray Ozturk <[email protected] >55
6- homedir=$( realpath $( dirname " ${BASH_SOURCE[0]} " ) )
6+ homedir=$( realpath " $( dirname " ${BASH_SOURCE[0]} " ) " )
77app=processWatchdog
88ini=config.ini
99countf=crash_count
1010logf=crash_log
1111RET=1
1212CURRENTDATE=$( date +" %d-%m-%Y %T" )
1313
14- export _JAVA_OPTIONS=-Duser.home=${homedir}
14+ export _JAVA_OPTIONS=" -Duser.home=${homedir} "
1515
16- logrotate ()
16+ logrotate ()
1717{
18- echo " $( tail -1000 ${homedir} /${logf} ) " > ${homedir} /${logf}
18+ # Truncate log file to last 1000 lines
19+ tail -1000 " ${homedir} /${logf} " > " ${homedir} /${logf} .tmp"
20+ mv " ${homedir} /${logf} .tmp" " ${homedir} /${logf} "
1921}
2022
2123exit_normally ()
2224{
2325 msg=" $0 exited normally at ${CURRENTDATE} "
24- echo " $msg " >> ${homedir} /${logf}
26+ echo " $msg " >> " ${homedir} /${logf} "
2527 logrotate
2628 echo " $msg "
2729 RET=0 # exit
@@ -31,19 +33,22 @@ exit_crashed()
3133{
3234 count=0
3335 if [[ -f " ${homedir} /${countf} " ]]; then
34- count=$( cat ${homedir} /${countf} )
36+ count=$( cat " ${homedir} /${countf} " )
3537 fi
36- echo " $(( $ count+ 1 )) " > ${homedir} /$countf
37- msg=" $0 crashed with return code [$1 ] at ${CURRENTDATE} [$( cat ${homedir} /${countf} ) ]"
38+ echo " $(( count + 1 )) " > " ${homedir} /${ countf} "
39+ msg=" $0 crashed with return code [$1 ] at ${CURRENTDATE} [$( cat " ${homedir} /${countf} " ) ]"
3840 echo " $msg "
3941 df -h
40- output=$( echo " $msg " >> ${homedir} /${logf} )
42+
43+ # Capture both stdout and stderr when writing to log
44+ output=$( echo " $msg " >> " ${homedir} /${logf} " 2>&1 )
45+ ret=$?
4146 logrotate
47+
4248 errspace=' No space left on device'
43- if [[ " $output " == * " $errspace " * ]]; then
49+ if [[ $ret -ne 0 && " $output " == * " $errspace " * ]]; then
4450 echo " error: $errspace "
45- # ${homedir}/reset_system.sh & # TODO:
46- break
51+ # "${homedir}/reset_system.sh" &
4752 fi
4853 RET=1 # re-run the app
4954}
@@ -52,7 +57,7 @@ exit_restart()
5257{
5358 msg=" $0 exited to be restarted at ${CURRENTDATE} "
5459 echo " $msg "
55- echo " $msg " >> ${homedir} /${logf}
60+ echo " $msg " >> " ${homedir} /${logf} "
5661 logrotate
5762 RET=1 # re-run the app
5863}
@@ -61,7 +66,7 @@ exit_reboot()
6166{
6267 msg=" $0 exited normally to reboot system at ${CURRENTDATE} "
6368 echo " $msg "
64- echo " $msg " >> ${homedir} /${logf}
69+ echo " $msg " >> " ${homedir} /${logf} "
6570 logrotate
6671 RET=0 # exit
6772 (sleep 2; reboot) &
@@ -70,32 +75,31 @@ exit_reboot()
7075
7176# Check if a kill parameter is provided
7277if [ " $1 " == " kill" ]; then
73- process_pid=$( pidof ${app} )
78+ process_pid=$( pidof " ${app} " )
7479 if [ -z " $process_pid " ]; then
75- echo " Could not find the process ID of $app "
76- exit 1
80+ echo " Could not find the process ID of $app "
81+ exit 1
7782 fi
78- process_name=$( ps -p $process_pid -o comm=)
83+ process_name=$( ps -p " $process_pid " -o comm=)
7984 echo " Sending USR1 signal to $process_name (PID: $process_pid )"
80- kill -SIGUSR1 $process_pid
85+ kill -SIGUSR1 " $process_pid "
8186 exit 0
8287fi
8388
8489echo " Starting $0 "
8590
86- while :
87- do
88- chmod +x ${homedir} /${app}
89- ${homedir} /${app} -i ${homedir} /${ini}
91+ while : ; do
92+ chmod +x " ${homedir} /${app} "
93+ " ${homedir} /${app} " -i " ${homedir} /${ini} "
9094 RET_CODE=$?
9195 CURRENTDATE=$( date +" %d-%m-%Y %T" )
9296
9397 RET=1
9498 case $RET_CODE in
95- 0) exit_normally;;
96- 2) exit_restart;;
97- 3) exit_reboot;;
98- * ) exit_crashed $RET_CODE ;;
99+ 0) exit_normally ;;
100+ 2) exit_restart ;;
101+ 3) exit_reboot ;;
102+ * ) exit_crashed " $RET_CODE " ;;
99103 esac
100104
101105 if [[ $RET -eq 0 ]]; then
0 commit comments