@@ -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+
7183usage () {
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