Skip to content

Commit 9ac11d8

Browse files
committed
extract util functions: logAndRun, logAndCat
1 parent b4d8bd1 commit 9ac11d8

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

show-busy-java-threads

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,18 @@ die() {
6868
exit 1
6969
}
7070

71+
logAndRun() {
72+
echo "$@"
73+
echo
74+
"$@"
75+
}
76+
77+
logAndCat() {
78+
echo "$@"
79+
echo
80+
cat
81+
}
82+
7183
usage() {
7284
local -r exit_code="$1"
7385
shift
@@ -281,11 +293,7 @@ findBusyJavaThreadsByPs() {
281293
local -a ps_cmd_line=(ps $ps_process_select_options -wwLo pid,lwp,pcpu,user --sort -pcpu --no-headers)
282294
local -r ps_out="$("${ps_cmd_line[@]}")"
283295
if [ -n "$store_dir" ]; then
284-
{
285-
echo "${ps_cmd_line[@]}"
286-
echo
287-
echo "$ps_out"
288-
} > "${store_file_prefix}$(( i + 1 ))_ps"
296+
echo "$ps_out" | logAndCat "${ps_cmd_line[@]}" > "${store_file_prefix}$(( i + 1 ))_ps"
289297
fi
290298

291299
echo "$ps_out" | head -n "${count}"
@@ -310,11 +318,7 @@ __top_threadId_cpu() {
310318
local -a top_cmd_line=(top -H -b -d $top_delay -n 2)
311319
local -r top_out=$(HOME="$tmp_store_dir" "${top_cmd_line[@]}")
312320
if [ -n "$store_dir" ]; then
313-
{
314-
echo "${top_cmd_line[@]}"
315-
echo
316-
echo "$top_out"
317-
} > "${store_file_prefix}$(( i + 1 ))_top"
321+
echo "$top_out" | logAndCat "${top_cmd_line[@]}" > "${store_file_prefix}$(( i + 1 ))_top"
318322
fi
319323

320324
echo "$top_out" |
@@ -336,11 +340,7 @@ __complete_pid_user_by_ps() {
336340
local -a ps_cmd_line=(ps $ps_process_select_options -wwLo pid,lwp,user --no-headers)
337341
local -r ps_out="$("${ps_cmd_line[@]}")"
338342
if [ -n "$store_dir" ]; then
339-
{
340-
echo "${ps_cmd_line[@]}"
341-
echo
342-
echo "$ps_out"
343-
} > "${store_file_prefix}$(( i + 1 ))_ps"
343+
echo "$ps_out" | logAndCat "${ps_cmd_line[@]}" > "${store_file_prefix}$(( i + 1 ))_ps"
344344
fi
345345

346346
local idx=0
@@ -384,18 +384,10 @@ printStackOfThreads() {
384384
local -a jstack_cmd_line=( "$jstack_path" ${force} $mix_native_frames $more_lock_info ${pid} )
385385
if [ "${user}" == "${USER}" ]; then
386386
# run without sudo, when java process user is current user
387-
{
388-
echo "${jstack_cmd_line[@]}"
389-
echo
390-
"${jstack_cmd_line[@]}"
391-
} > ${jstackFile}
387+
logAndRun "${jstack_cmd_line[@]}" > ${jstackFile}
392388
elif [ $UID == 0 ]; then
393389
# if java process user is not current user, must run jstack with sudo
394-
{
395-
echo sudo -u "${user}" "${jstack_cmd_line[@]}"
396-
echo
397-
sudo -u "${user}" "${jstack_cmd_line[@]}"
398-
} > ${jstackFile}
390+
logAndRun sudo -u "${user}" "${jstack_cmd_line[@]}" > ${jstackFile}
399391
else
400392
# current user is not root user, so can not run with sudo; print error message and rerun suggestion
401393
redPrint "[$idx] Fail to jstack busy(${pcpu}%) thread(${threadId}/${threadId0x}) stack of java process(${pid}) under user(${user})."

0 commit comments

Comments
 (0)