mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-11-11 01:32:11 +08:00
Script Refactoring
This commit is contained in:
parent
b306c715f8
commit
b7851eca62
@ -13,8 +13,7 @@ stop_binaries() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_FILE=log.file
|
|
||||||
ERR_LOG_FILE=err.log.file
|
|
||||||
|
|
||||||
#启动所有的二进制
|
#启动所有的二进制
|
||||||
start_binaries() {
|
start_binaries() {
|
||||||
@ -26,7 +25,7 @@ start_binaries() {
|
|||||||
for ((i=0; i<count; i++)); do
|
for ((i=0; i<count; i++)); do
|
||||||
echo "Starting $bin_full_path -i $i -c $OPENIM_OUTPUT_CONFIG"
|
echo "Starting $bin_full_path -i $i -c $OPENIM_OUTPUT_CONFIG"
|
||||||
cmd=("$bin_full_path" -i "$i" -c "$OPENIM_OUTPUT_CONFIG")
|
cmd=("$bin_full_path" -i "$i" -c "$OPENIM_OUTPUT_CONFIG")
|
||||||
nohup "${cmd[@]}" >> "${LOG_FILE}" 2> >(tee -a "$ERR_LOG_FILE" | while read line; do echo -e "\e[31m${line}\e[0m"; done >&2) &
|
nohup "${cmd[@]}" >> "${OPENIM_INIT_LOG_FILE}" 2> >(tee -a "$OPENIM_INIT_ERR_LOG_FILE" | while read line; do echo -e "\e[31m${line}\e[0m"; done >&2) &
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,7 +38,8 @@ OPENIM_OUTPUT_TOOLS="${OPENIM_OUTPUT}/tools/"
|
|||||||
OPENIM_OUTPUT_TMP="${OPENIM_OUTPUT}/tmp/"
|
OPENIM_OUTPUT_TMP="${OPENIM_OUTPUT}/tmp/"
|
||||||
OPENIM_OUTPUT_LOGS="${OPENIM_OUTPUT}/logs/"
|
OPENIM_OUTPUT_LOGS="${OPENIM_OUTPUT}/logs/"
|
||||||
OPENIM_OUTPUT_CONFIG="${OPENIM_ROOT}/config/"
|
OPENIM_OUTPUT_CONFIG="${OPENIM_ROOT}/config/"
|
||||||
|
OPENIM_INIT_ERR_LOG_FILE="$OPENIM_OUTPUT_LOGS/openim-init-err.log"
|
||||||
|
OPENIM_INIT_LOG_FILE="$OPENIM_OUTPUT_LOGS/openim-init.log"
|
||||||
|
|
||||||
# This controls rsync compression. Set to a value > 0 to enable rsync
|
# This controls rsync compression. Set to a value > 0 to enable rsync
|
||||||
# compression for build container
|
# compression for build container
|
||||||
|
|||||||
@ -22,8 +22,7 @@
|
|||||||
# OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
|
# OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
|
||||||
# source "${OPENIM_ROOT}/scripts/lib/logging.sh"
|
# source "${OPENIM_ROOT}/scripts/lib/logging.sh"
|
||||||
|
|
||||||
#1、将IP写在一个文件里,比如文件名为hosts_file,一行一个IP地址。
|
|
||||||
#2、修改ssh-mutual-trust.sh里面的用户名及密码,默认为root用户及密码123。
|
|
||||||
# hosts_file_path="path/to/your/hosts/file"
|
# hosts_file_path="path/to/your/hosts/file"
|
||||||
# openim:util::setup_ssh_key_copy "$hosts_file_path" "root" "123"
|
# openim:util::setup_ssh_key_copy "$hosts_file_path" "root" "123"
|
||||||
function openim:util::setup_ssh_key_copy() {
|
function openim:util::setup_ssh_key_copy() {
|
||||||
@ -283,105 +282,10 @@ openim::util::check_docker_and_compose_versions() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# The `openim::util::check_ports` function analyzes the state of processes based on given ports.
|
|
||||||
# It accepts multiple ports as arguments and prints:
|
|
||||||
# 1. The state of the process (whether it's running or not).
|
|
||||||
# 2. The start time of the process if it's running.
|
|
||||||
# User:
|
|
||||||
# openim::util::check_ports 8080 8081 8082
|
|
||||||
# The function returns a status of 1 if any of the processes is not running.
|
|
||||||
openim::util::check_ports() {
|
|
||||||
# An array to collect ports of processes that are not running.
|
|
||||||
local not_started=()
|
|
||||||
|
|
||||||
# An array to collect information about processes that are running.
|
|
||||||
local started=()
|
|
||||||
|
|
||||||
echo "Checking ports: $*"
|
|
||||||
# Iterate over each given port.
|
|
||||||
for port in "$@"; do
|
|
||||||
# Initialize variables
|
|
||||||
# Check the OS and use the appropriate command
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
if command -v ss > /dev/null 2>&1; then
|
|
||||||
info=$(ss -ltnp | grep ":$port" || true)
|
|
||||||
else
|
|
||||||
info=$(netstat -ltnp | grep ":$port" || true)
|
|
||||||
fi
|
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
# For macOS, use lsof
|
|
||||||
info=$(lsof -P -i:"$port" | grep "LISTEN" || true)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if any process is using the port
|
|
||||||
if [[ -z $info ]]; then
|
|
||||||
not_started+=($port)
|
|
||||||
else
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
# Extract relevant details for Linux: Process Name, PID, and FD.
|
|
||||||
details=$(echo $info | sed -n 's/.*users:(("\([^"]*\)",pid=\([^,]*\),fd=\([^)]*\))).*/\1 \2 \3/p')
|
|
||||||
command=$(echo $details | awk '{print $1}')
|
|
||||||
pid=$(echo $details | awk '{print $2}')
|
|
||||||
fd=$(echo $details | awk '{print $3}')
|
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
# Handle extraction for macOS
|
|
||||||
pid=$(echo $info | awk '{print $2}' | cut -d'/' -f1)
|
|
||||||
command=$(ps -p $pid -o comm= | xargs basename)
|
|
||||||
fd=$(echo $info | awk '{print $4}' | cut -d'/' -f1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the start time of the process using the PID
|
|
||||||
if [[ -z $pid ]]; then
|
|
||||||
start_time="N/A"
|
|
||||||
else
|
|
||||||
start_time=$(ps -p $pid -o lstart=)
|
|
||||||
fi
|
|
||||||
|
|
||||||
started+=("Port $port - Command: $command, PID: $pid, FD: $fd, Started: $start_time")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Print information about ports whose processes are not running.
|
|
||||||
if [[ ${#not_started[@]} -ne 0 ]]; then
|
|
||||||
echo "### Not started ports:"
|
|
||||||
for port in "${not_started[@]}"; do
|
|
||||||
openim::log::error "Port $port is not started."
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print information about ports whose processes are running.
|
|
||||||
if [[ ${#started[@]} -ne 0 ]]; then
|
|
||||||
echo "### Started ports:"
|
|
||||||
for info in "${started[@]}"; do
|
|
||||||
echo "$info"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If any of the processes is not running, return a status of 1.
|
|
||||||
if [[ ${#not_started[@]} -ne 0 ]]; then
|
|
||||||
#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
|
|
||||||
#openim::log::success "All specified ports are running."
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# set +o errexit
|
|
||||||
# Sample call for testing:
|
|
||||||
# openim::util::check_ports 10002 1004 12345 13306
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
openim::util::check_process_names() {
|
openim::util::check_process_names() {
|
||||||
local process_path="$1"
|
local process_path="$1"
|
||||||
local expected_count="$2"
|
local expected_count="$2"
|
||||||
|
|
||||||
|
|
||||||
local running_count=$(ps -ef | grep "$process_path" | grep -v grep | wc -l)
|
local running_count=$(ps -ef | grep "$process_path" | grep -v grep | wc -l)
|
||||||
|
|
||||||
if [ "$running_count" -eq "$expected_count" ]; then
|
if [ "$running_count" -eq "$expected_count" ]; then
|
||||||
@ -392,7 +296,6 @@ openim::util::check_process_names() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
openim::util::check_process_names_exist() {
|
openim::util::check_process_names_exist() {
|
||||||
local process_path="$1"
|
local process_path="$1"
|
||||||
local running_count=$(ps -ef | grep "$process_path" | grep -v grep | wc -l)
|
local running_count=$(ps -ef | grep "$process_path" | grep -v grep | wc -l)
|
||||||
@ -404,13 +307,6 @@ openim::util::check_process_names_exist() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# This figures out the host platform without relying on golang. We need this as
|
# This figures out the host platform without relying on golang. We need this as
|
||||||
# we don't want a golang install to be a prerequisite to building yet we need
|
# we don't want a golang install to be a prerequisite to building yet we need
|
||||||
# this info to figure out where the final binaries are placed.
|
# this info to figure out where the final binaries are placed.
|
||||||
@ -1329,111 +1225,7 @@ openim::util::check_docker_and_compose_versions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# The `openim::util::check_ports` function analyzes the state of processes based on given ports.
|
|
||||||
# It accepts multiple ports as arguments and prints:
|
|
||||||
# 1. The state of the process (whether it's running or not).
|
|
||||||
# 2. The start time of the process if it's running.
|
|
||||||
# User:
|
|
||||||
# openim::util::check_ports 8080 8081 8082
|
|
||||||
# The function returns a status of 1 if any of the processes is not running.
|
|
||||||
openim::util::check_ports() {
|
|
||||||
# An array to collect ports of processes that are not running.
|
|
||||||
local not_started=()
|
|
||||||
|
|
||||||
# An array to collect information about processes that are running.
|
|
||||||
local started=()
|
|
||||||
|
|
||||||
echo "Checking ports: $*"
|
|
||||||
# Iterate over each given port.
|
|
||||||
for port in "$@"; do
|
|
||||||
# Initialize variables
|
|
||||||
# Check the OS and use the appropriate command
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
if command -v ss > /dev/null 2>&1; then
|
|
||||||
info=$(ss -ltnp | grep ":$port" || true)
|
|
||||||
else
|
|
||||||
info=$(netstat -ltnp | grep ":$port" || true)
|
|
||||||
fi
|
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
# For macOS, use lsof
|
|
||||||
info=$(lsof -i:"$port" | grep "\*:$port" || true)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if any process is using the port
|
|
||||||
if [[ -z $info ]]; then
|
|
||||||
not_started+=($port)
|
|
||||||
else
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
# Extract relevant details for Linux: Process Name, PID, and FD.
|
|
||||||
details=$(echo $info | sed -n 's/.*users:(("\([^"]*\)",pid=\([^,]*\),fd=\([^)]*\))).*/\1 \2 \3/p')
|
|
||||||
command=$(echo $details | awk '{print $1}')
|
|
||||||
pid=$(echo $details | awk '{print $2}')
|
|
||||||
fd=$(echo $details | awk '{print $3}')
|
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
# Handle extraction for macOS
|
|
||||||
pid=$(echo $info | awk '{print $2}' | cut -d'/' -f1)
|
|
||||||
command=$(ps -p $pid -o comm= | xargs basename)
|
|
||||||
fd=$(echo $info | awk '{print $4}' | cut -d'/' -f1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the start time of the process using the PID
|
|
||||||
if [[ -z $pid ]]; then
|
|
||||||
start_time="N/A"
|
|
||||||
else
|
|
||||||
start_time=$(ps -p $pid -o lstart=)
|
|
||||||
fi
|
|
||||||
|
|
||||||
started+=("Port $port - Command: $command, PID: $pid, FD: $fd, Started: $start_time")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Print information about ports whose processes are not running.
|
|
||||||
if [[ ${#not_started[@]} -ne 0 ]]; then
|
|
||||||
printf "\n### Not started ports:"
|
|
||||||
for port in "${not_started[@]}"; do
|
|
||||||
openim::log::error "Port $port is not started."
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print information about ports whose processes are running.
|
|
||||||
if [[ ${#started[@]} -ne 0 ]]; then
|
|
||||||
printf "\n### Started ports:"
|
|
||||||
for info in "${started[@]}"; do
|
|
||||||
echo "$info"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If any of the processes is not running, return a status of 1.
|
|
||||||
if [[ ${#not_started[@]} -ne 0 ]]; then
|
|
||||||
openim::color::echo $COLOR_RED "OpenIM Stdout Log >> cat ${LOG_FILE}"
|
|
||||||
openim::color::echo $COLOR_RED "OpenIM Stderr Log >> cat ${STDERR_LOG_FILE}"
|
|
||||||
echo ""
|
|
||||||
cat "$TMP_LOG_FILE" | awk '{print "\033[31m" $0 "\033[0m"}'
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
openim::log::success "All specified processes are running."
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# set +o errexit
|
|
||||||
# Sample call for testing:
|
|
||||||
# openim::util::check_ports 10002 1004 12345 13306
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
# The `openim::util::stop_services_with_name` function stops services with specified names.
|
|
||||||
# It accepts multiple service names as arguments and performs the following:
|
|
||||||
# 1. Attempts to stop any services with the specified names.
|
|
||||||
# 2. Prints details of services successfully stopped and those that failed to stop.
|
|
||||||
# Usage:
|
|
||||||
# openim::util::stop_services_with_name nginx apache
|
|
||||||
# The function returns a status of 1 if any service couldn't be stopped.
|
|
||||||
|
|
||||||
# sleep 333333&
|
|
||||||
# sleep 444444&
|
|
||||||
# ps -ef | grep "sleep"
|
|
||||||
# openim::util::stop_services_with_name "sleep 333333" "sleep 444444"
|
|
||||||
|
|
||||||
# This figures out the host platform without relying on golang. We need this as
|
# This figures out the host platform without relying on golang. We need this as
|
||||||
# we don't want a golang install to be a prerequisite to building yet we need
|
# we don't want a golang install to be a prerequisite to building yet we need
|
||||||
@ -2435,12 +2227,6 @@ function openim::util::is_running_in_container() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function openim::util::find_ports_for_all_services() {
|
function openim::util::find_ports_for_all_services() {
|
||||||
local services=("$@")
|
local services=("$@")
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
@ -2449,7 +2235,6 @@ function openim::util::find_ports_for_all_services() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function openim::util::print_binary_ports() {
|
function openim::util::print_binary_ports() {
|
||||||
binary_path="$1"
|
binary_path="$1"
|
||||||
|
|
||||||
@ -2486,9 +2271,6 @@ function openim::util::print_binary_ports() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function openim::util::kill_exist_binary() {
|
function openim::util::kill_exist_binary() {
|
||||||
local binary_path="$1"
|
local binary_path="$1"
|
||||||
local pids=$(pgrep -f "$binary_path")
|
local pids=$(pgrep -f "$binary_path")
|
||||||
@ -2506,11 +2288,8 @@ function openim::util::kill_exist_binary() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [[ "$*" =~ openim::util:: ]];then
|
if [[ "$*" =~ openim::util:: ]];then
|
||||||
eval $*
|
eval $*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user