From 825416bbbac62cc2a287ff8b4dc47388a8448570 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Mar 2024 15:12:24 +0800 Subject: [PATCH] scripts for Mac --- scripts/lib/util.sh | 87 ++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh index 0d95acc7c..68a390c44 100755 --- a/scripts/lib/util.sh +++ b/scripts/lib/util.sh @@ -382,76 +382,83 @@ openim::util::check_ports() { # User: # openim::util::check_process_names nginx mysql redis # The function returns a status of 1 if any of the processes is not running. - openim::util::check_process_names() { # Function to get the port of a process get_port() { local pid=$1 - case "$OSTYPE" in - "linux-gnu"*) - # Linux - ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2 - ;; - "darwin"*) - # macOS - lsof -nP -iTCP -sTCP:LISTEN -a -p $pid | awk 'NR>1 {print $9}' | sed 's/.*://' - ;; - *) - echo "Unsupported OS" - return 1 - ;; - esac + if [[ "$OSTYPE" == "linux-gnu"* ]]; then + # Linux + ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2 + elif [[ "$OSTYPE" == "darwin"* ]]; then + # macOS + lsof -nP -iTCP -sTCP:LISTEN -a -p $pid | awk 'NR>1 {print $9}' | sed 's/.*://' + else + echo "Unsupported OS" + return 1 + fi } - # Arrays to collect process details + # Arrays to collect details of processes local not_started=() local started=() - # Iterate over each given process name + # Iterate over each given process name for process_name in "$@"; do - local pids=($(pgrep -f "$process_name")) - - if [[ ${#pids[@]} -eq 0 ]]; then - not_started+=("$process_name") - else - for pid in "${pids[@]}"; do - local command=$(ps -p $pid -o cmd=) - local start_time=$(ps -p $pid -o lstart=) - local port=$(get_port $pid) - port=${port:-N/A} + # Use `pgrep` to find process IDs related to the given process name + local pids=($(pgrep -f $process_name)) + + # Check if any process IDs were found + if [[ ${#pids[@]} -eq 0 ]]; then + not_started+=($process_name) + else + # If there are PIDs, loop through each one + for pid in "${pids[@]}"; do + echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + local command=$(ps -p $pid -o cmd=) + local start_time=$(ps -p $pid -o lstart=) + local port=$(get_port $pid) + + # Check if port information was found for the PID + if [[ -z $port ]]; then + port="N/A" + fi + + started+=("Process $process_name - Command: $command, PID: $pid, Port: $port, Start time: $start_time") + echo bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + done + fi + done - started+=("Process $process_name - Command: $command, PID: $pid, Port: $port, Start time: $start_time") - done - fi - done - # Print not started processes + # Print information if [[ ${#not_started[@]} -ne 0 ]]; then echo "Not started processes:" for process_name in "${not_started[@]}"; do - echo " - Process $process_name is not started." + echo "Process $process_name is not started." done fi - # Print started processes if [[ ${#started[@]} -ne 0 ]]; then - echo -e "\nStarted processes:" + echo + echo "Started processes:" for info in "${started[@]}"; do - echo " - $info" + echo "$info" done fi - # Return status based on whether any processes have not started + # Return status if [[ ${#not_started[@]} -ne 0 ]]; then - echo -e "\nSome processes have not started. Please check the logs for more information." + openim::color::echo $COLOR_RED "OpenIM Stdout Log >> cat ${LOG_FILE}" + openim::color::echo $COLOR_RED "OpenIM Stderr Log >> cat ${STDERR_LOG_FILE}" + cat "$TMP_LOG_FILE" | awk '{print "\033[31m" $0 "\033[0m"}' return 1 else - echo -e "\nAll processes are running." + echo "" + openim::log::success "All processes are running." return 0 fi } - openim::util::check_process_names_for_stop() { # Function to get the port of a process get_port() {