scripts for Mac

pull/2126/head
skiffer-git 8 months ago
parent 6e2132d217
commit 825416bbba

@ -382,76 +382,83 @@ openim::util::check_ports() {
# User: # User:
# openim::util::check_process_names nginx mysql redis # openim::util::check_process_names nginx mysql redis
# The function returns a status of 1 if any of the processes is not running. # The function returns a status of 1 if any of the processes is not running.
openim::util::check_process_names() { openim::util::check_process_names() {
# Function to get the port of a process # Function to get the port of a process
get_port() { get_port() {
local pid=$1 local pid=$1
case "$OSTYPE" in if [[ "$OSTYPE" == "linux-gnu"* ]]; then
"linux-gnu"*) # Linux
# Linux ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2
ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2 elif [[ "$OSTYPE" == "darwin"* ]]; then
;; # macOS
"darwin"*) lsof -nP -iTCP -sTCP:LISTEN -a -p $pid | awk 'NR>1 {print $9}' | sed 's/.*://'
# macOS else
lsof -nP -iTCP -sTCP:LISTEN -a -p $pid | awk 'NR>1 {print $9}' | sed 's/.*://' echo "Unsupported OS"
;; return 1
*) fi
echo "Unsupported OS"
return 1
;;
esac
} }
# Arrays to collect process details # Arrays to collect details of processes
local not_started=() local not_started=()
local started=() local started=()
# Iterate over each given process name # Iterate over each given process name
for process_name in "$@"; do for process_name in "$@"; do
local pids=($(pgrep -f "$process_name")) # Use `pgrep` to find process IDs related to the given process name
local pids=($(pgrep -f $process_name))
if [[ ${#pids[@]} -eq 0 ]]; then
not_started+=("$process_name") # Check if any process IDs were found
else if [[ ${#pids[@]} -eq 0 ]]; then
for pid in "${pids[@]}"; do not_started+=($process_name)
local command=$(ps -p $pid -o cmd=) else
local start_time=$(ps -p $pid -o lstart=) # If there are PIDs, loop through each one
local port=$(get_port $pid) for pid in "${pids[@]}"; do
port=${port:-N/A} 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 if [[ ${#not_started[@]} -ne 0 ]]; then
echo "Not started processes:" echo "Not started processes:"
for process_name in "${not_started[@]}"; do for process_name in "${not_started[@]}"; do
echo " - Process $process_name is not started." echo "Process $process_name is not started."
done done
fi fi
# Print started processes
if [[ ${#started[@]} -ne 0 ]]; then if [[ ${#started[@]} -ne 0 ]]; then
echo -e "\nStarted processes:" echo
echo "Started processes:"
for info in "${started[@]}"; do for info in "${started[@]}"; do
echo " - $info" echo "$info"
done done
fi fi
# Return status based on whether any processes have not started # Return status
if [[ ${#not_started[@]} -ne 0 ]]; then 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 return 1
else else
echo -e "\nAll processes are running." echo ""
openim::log::success "All processes are running."
return 0 return 0
fi fi
} }
openim::util::check_process_names_for_stop() { openim::util::check_process_names_for_stop() {
# Function to get the port of a process # Function to get the port of a process
get_port() { get_port() {

Loading…
Cancel
Save