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