Skip to content
This repository was archived by the owner on Jul 2, 2024. It is now read-only.

Commit ed072a0

Browse files
committed
#695: Adds feature to get reaper start/end timestamp or ttl (remaining seconds).
1 parent b8de2bf commit ed072a0

File tree

1 file changed

+78
-10
lines changed

1 file changed

+78
-10
lines changed

src/usr/sbin/reaper

+78-10
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ function __get_reaper_timeout ()
4949
printf -- '%s' "${value}"
5050
}
5151

52+
function __is_valid_get ()
53+
{
54+
local -r get_options='^(end|start|ttl)$'
55+
local -r value="${1}"
56+
57+
if [[ ${value} =~ ${get_options} ]]
58+
then
59+
return 0
60+
fi
61+
62+
return 1
63+
}
64+
5265
function __is_valid_positive_integer ()
5366
{
5467
local -r positive_integer='^[0-9]+$'
@@ -84,45 +97,100 @@ function main ()
8497
__get_reaper_timeout
8598
)"
8699

100+
local current_time
101+
local get
87102
local pid="1"
88103
local signal="TERM"
89104
local session_start
90105
local session_end
106+
local state_value
91107
local verbose="false"
92108
local warning_timeout="30"
93109

94110
while [[ "${#}" -gt 0 ]]
95111
do
96112
case "${1}" in
97-
-p)
98-
pid="${2}"
113+
--get=*)
114+
get="${1#*=}"
115+
shift 1
116+
;;
117+
-g|--get)
118+
get="${2}"
99119
shift 2 || break
100120
;;
101-
--pid)
121+
--pid=*)
102122
pid="${1#*=}"
103123
shift 1
104124
;;
105-
-s)
106-
signal="${2}"
125+
-p|--pid)
126+
pid="${2}"
107127
shift 2 || break
108128
;;
109-
--signal)
129+
--signal=*)
110130
signal="${1#*=}"
111131
shift 1
112132
;;
133+
-s|--signal)
134+
signal="${2}"
135+
shift 2 || break
136+
;;
113137
-v|--verbose)
114138
verbose="true"
115139
shift 1
116140
;;
141+
*)
142+
>&2 printf -- \
143+
'ERROR: Unknown option %s\n' \
144+
"${1}"
145+
exit 1
146+
;;
117147
esac
118148
done
119149

120150
if [[ -e ${lock_file} ]]
121151
then
122-
>&2 printf -- \
123-
'ERROR: %s lock detected - aborting\n' \
124-
"${0##*/}"
125-
exit 1
152+
if [[ -n ${get} ]]
153+
then
154+
state_value="$(< "${state_file}")"
155+
156+
session_end="${state_value##* }"
157+
session_start="${state_value%% *}"
158+
159+
case "${get}" in
160+
end)
161+
printf -- \
162+
'%s\n' \
163+
"${session_end}"
164+
;;
165+
start)
166+
printf -- \
167+
'%s\n' \
168+
"${session_start}"
169+
;;
170+
ttl)
171+
current_time="$(
172+
date -u +%s
173+
)"
174+
175+
printf -- \
176+
'%s\n' \
177+
"$(( ${session_end} - ${current_time} ))"
178+
;;
179+
*)
180+
>&2 printf -- \
181+
'ERROR: Unknown get value %s\n' \
182+
"${get}"
183+
exit 1
184+
;;
185+
esac
186+
187+
exit 0
188+
else
189+
>&2 printf -- \
190+
'ERROR: %s lock detected - aborting\n' \
191+
"${0##*/}"
192+
exit 1
193+
fi
126194
fi
127195

128196
trap __cleanup \

0 commit comments

Comments
 (0)