From 90fd2fe84d42c5e80a0962df415cbee99fae03af Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 21 Mar 2024 17:31:49 +0800 Subject: [PATCH] Optimizing scripts --- scripts/lib/util.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh index c1b84b4f9..300fb42ed 100755 --- a/scripts/lib/util.sh +++ b/scripts/lib/util.sh @@ -2846,7 +2846,6 @@ function openim::util::check_process_names_for_stop() { } - function openim::util::find_process_ports() { local process_path="$1" if [[ -z "$process_path" ]]; then @@ -2854,24 +2853,29 @@ function openim::util::find_process_ports() { return 1 fi + local pids=$(pgrep -f "$process_path") + if [[ -z "$pids" ]]; then + echo "No running process found for $process_path." + return 1 + fi + local ports_info="" - lsof -nP -iTCP -iUDP | grep LISTEN | grep "$(pgrep -f $process_path)" | awk '{print $9, $8}' | while read line; do + while read -r line; do local port_protocol=($line) local port=${port_protocol[0]##*:} local protocol=${port_protocol[1]} ports_info+="$port($protocol) " - done - - - if [[ -z "$ports_info" ]]; then - echo "No ports found for process $process_path." - else + done < <(lsof -nP -iTCP -iUDP | grep LISTEN | grep -E "$(echo $pids | sed 's/ /\\|/g')") + if [[ -n "$ports_info" ]]; then echo "Process $process_path is listening on ports: $ports_info" + else + echo "No ports found for process $process_path." fi } + function openim::util::find_ports_for_all_services() { local services=("$@") for service in "${services[@]}"; do