3
3
# processWatchdog application start, watchdog and report script
4
4
# Copyright (c) 2023 Eray Ozturk <[email protected] >
5
5
6
- homedir=$( realpath $( dirname " ${BASH_SOURCE[0]} " ) )
6
+ homedir=$( realpath " $( dirname " ${BASH_SOURCE[0]} " ) " )
7
7
app=processWatchdog
8
8
ini=config.ini
9
9
countf=crash_count
10
10
logf=crash_log
11
11
RET=1
12
12
CURRENTDATE=$( date +" %d-%m-%Y %T" )
13
13
14
- export _JAVA_OPTIONS=-Duser.home=${homedir}
14
+ export _JAVA_OPTIONS=" -Duser.home=${homedir} "
15
15
16
- logrotate ()
16
+ logrotate ()
17
17
{
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} "
19
21
}
20
22
21
23
exit_normally ()
22
24
{
23
25
msg=" $0 exited normally at ${CURRENTDATE} "
24
- echo " $msg " >> ${homedir} /${logf}
26
+ echo " $msg " >> " ${homedir} /${logf} "
25
27
logrotate
26
28
echo " $msg "
27
29
RET=0 # exit
@@ -31,19 +33,22 @@ exit_crashed()
31
33
{
32
34
count=0
33
35
if [[ -f " ${homedir} /${countf} " ]]; then
34
- count=$( cat ${homedir} /${countf} )
36
+ count=$( cat " ${homedir} /${countf} " )
35
37
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} " ) ]"
38
40
echo " $msg "
39
41
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=$?
41
46
logrotate
47
+
42
48
errspace=' No space left on device'
43
- if [[ " $output " == * " $errspace " * ]]; then
49
+ if [[ $ret -ne 0 && " $output " == * " $errspace " * ]]; then
44
50
echo " error: $errspace "
45
- # ${homedir}/reset_system.sh & # TODO:
46
- break
51
+ # "${homedir}/reset_system.sh" &
47
52
fi
48
53
RET=1 # re-run the app
49
54
}
@@ -52,7 +57,7 @@ exit_restart()
52
57
{
53
58
msg=" $0 exited to be restarted at ${CURRENTDATE} "
54
59
echo " $msg "
55
- echo " $msg " >> ${homedir} /${logf}
60
+ echo " $msg " >> " ${homedir} /${logf} "
56
61
logrotate
57
62
RET=1 # re-run the app
58
63
}
@@ -61,7 +66,7 @@ exit_reboot()
61
66
{
62
67
msg=" $0 exited normally to reboot system at ${CURRENTDATE} "
63
68
echo " $msg "
64
- echo " $msg " >> ${homedir} /${logf}
69
+ echo " $msg " >> " ${homedir} /${logf} "
65
70
logrotate
66
71
RET=0 # exit
67
72
(sleep 2; reboot) &
@@ -70,32 +75,31 @@ exit_reboot()
70
75
71
76
# Check if a kill parameter is provided
72
77
if [ " $1 " == " kill" ]; then
73
- process_pid=$( pidof ${app} )
78
+ process_pid=$( pidof " ${app} " )
74
79
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
77
82
fi
78
- process_name=$( ps -p $process_pid -o comm=)
83
+ process_name=$( ps -p " $process_pid " -o comm=)
79
84
echo " Sending USR1 signal to $process_name (PID: $process_pid )"
80
- kill -SIGUSR1 $process_pid
85
+ kill -SIGUSR1 " $process_pid "
81
86
exit 0
82
87
fi
83
88
84
89
echo " Starting $0 "
85
90
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} "
90
94
RET_CODE=$?
91
95
CURRENTDATE=$( date +" %d-%m-%Y %T" )
92
96
93
97
RET=1
94
98
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 " ;;
99
103
esac
100
104
101
105
if [[ $RET -eq 0 ]]; then
0 commit comments