mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-12-03 02:42:19 +08:00
fix: refactoring scripts
This commit is contained in:
parent
7077083aca
commit
5f71f27c63
@ -49,13 +49,6 @@ print_services_and_ports() {
|
|||||||
echo "+-------------------------+----------+"
|
echo "+-------------------------+----------+"
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_error() {
|
|
||||||
echo "An error occurred. Printing ${STDERR_LOG_FILE} contents:"
|
|
||||||
cat "${STDERR_LOG_FILE}"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
trap handle_error ERR
|
|
||||||
|
|
||||||
# Assuming OPENIM_SERVER_NAME_TARGETS and OPENIM_SERVER_PORT_TARGETS are defined
|
# Assuming OPENIM_SERVER_NAME_TARGETS and OPENIM_SERVER_PORT_TARGETS are defined
|
||||||
# Similarly for OPENIM_DEPENDENCY_TARGETS and OPENIM_DEPENDENCY_PORT_TARGETS
|
# Similarly for OPENIM_DEPENDENCY_TARGETS and OPENIM_DEPENDENCY_PORT_TARGETS
|
||||||
@ -71,7 +64,6 @@ echo "++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
|||||||
openim::log::info "\n## Check all dependent service ports"
|
openim::log::info "\n## Check all dependent service ports"
|
||||||
echo "++ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}"
|
echo "++ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}"
|
||||||
|
|
||||||
set +e
|
|
||||||
|
|
||||||
# Later, after discarding Docker, the Docker keyword is unreliable, and Kubepods is used
|
# Later, after discarding Docker, the Docker keyword is unreliable, and Kubepods is used
|
||||||
if grep -qE 'docker|kubepods' /proc/1/cgroup || [ -f /.dockerenv ]; then
|
if grep -qE 'docker|kubepods' /proc/1/cgroup || [ -f /.dockerenv ]; then
|
||||||
@ -92,15 +84,17 @@ openim::log::info "\n## Check OpenIM service name"
|
|||||||
. $(dirname ${BASH_SOURCE})/install/openim-msgtransfer.sh openim::msgtransfer::check
|
. $(dirname ${BASH_SOURCE})/install/openim-msgtransfer.sh openim::msgtransfer::check
|
||||||
|
|
||||||
openim::log::info "\n## Check all OpenIM service ports"
|
openim::log::info "\n## Check all OpenIM service ports"
|
||||||
echo "+++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
echo "+++ The process being checked:"
|
||||||
openim::util::check_ports ${OPENIM_SERVER_PORT_LISTARIES[@]}
|
for item in "${OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER[@]}"; do
|
||||||
|
echo "$item"
|
||||||
|
done
|
||||||
|
result=$(openim::util::check_process_names ${OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER[@]})
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo "+++ cat openim log file >>> ${LOG_FILE}"
|
echo "+++ cat openim log file >>> ${LOG_FILE}"
|
||||||
openim::log::error_exit "The service does not start properly, please check the port, query variable definition!"
|
openim::log::error "check process failed.\n $result"
|
||||||
|
return 1
|
||||||
else
|
else
|
||||||
echo "++++ Check all openim service ports successfully !"
|
echo "++++ Check all openim service ports successfully !"
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
trap - ERR
|
|
||||||
@ -99,6 +99,18 @@ IFS=" " read -ra OPENIM_SERVER_PORT_TARGETS <<< "$(openim::common::service_port)
|
|||||||
readonly OPENIM_SERVER_PORT_TARGETS
|
readonly OPENIM_SERVER_PORT_TARGETS
|
||||||
readonly OPENIM_SERVER_PORT_LISTARIES=("${OPENIM_SERVER_PORT_TARGETS[@]##*/}")
|
readonly OPENIM_SERVER_PORT_LISTARIES=("${OPENIM_SERVER_PORT_TARGETS[@]##*/}")
|
||||||
|
|
||||||
|
OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER=()
|
||||||
|
for target in openim::golang::server_targets_no_transfer; do
|
||||||
|
OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER+=("${OPENIM_OUTPUT_HOSTBIN}/${target}")
|
||||||
|
done
|
||||||
|
readonly OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER
|
||||||
|
|
||||||
|
OPENIM_ALL_SERVICE_LIBRARIES=()
|
||||||
|
for target in openim::golang::server_targets; do
|
||||||
|
OPENIM_ALL_SERVICE_LIBRARIES+=("${OPENIM_OUTPUT_HOSTBIN}/${target}")
|
||||||
|
done
|
||||||
|
readonly OPENIM_ALL_SERVICE_LIBRARIES
|
||||||
|
|
||||||
openim::common::dependency_name() {
|
openim::common::dependency_name() {
|
||||||
local targets=(
|
local targets=(
|
||||||
redis
|
redis
|
||||||
|
|||||||
@ -47,24 +47,37 @@ function openim::api::start() {
|
|||||||
|
|
||||||
openim::log::info "Starting ${SERVER_NAME} ..."
|
openim::log::info "Starting ${SERVER_NAME} ..."
|
||||||
|
|
||||||
|
readonly OPENIM_API_SERVER_LIBRARIES="${OPENIM_OUTPUT_HOSTBIN}/${SERVER_NAME}"
|
||||||
|
result=$(openim::util::stop_services_with_name ${OPENIM_API_SERVER_LIBRARIES})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
printf "+------------------------+--------------+\n"
|
printf "+------------------------+--------------+\n"
|
||||||
printf "| Service Name | Port |\n"
|
printf "| Service Name | Port |\n"
|
||||||
printf "+------------------------+--------------+\n"
|
printf "+------------------------+--------------+\n"
|
||||||
|
|
||||||
|
|
||||||
local length=${#OPENIM_API_SERVICE_LISTARIES[@]}
|
local length=${#OPENIM_API_SERVICE_LISTARIES[@]}
|
||||||
|
|
||||||
for ((i=0; i<length; i++)); do
|
for ((i=0; i<length; i++)); do
|
||||||
printf "| %-22s | %6s |\n" "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}"
|
printf "| %-22s | %6s |\n" "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}"
|
||||||
printf "+------------------------+--------------+\n"
|
printf "+------------------------+--------------+\n"
|
||||||
# Stop services on the specified ports before starting new ones
|
# Stop services on the specified ports before starting new ones
|
||||||
openim::util::stop_services_on_ports "${OPENIM_API_PORT_LISTARIES[$i]}"
|
# openim::util::stop_services_on_ports "${OPENIM_API_PORT_LISTARIES[$i]}"
|
||||||
openim::util::stop_services_on_ports "${OPENIM_API_PROMETHEUS_PORT_LISTARIES[$i]}"
|
# openim::util::stop_services_on_ports "${OPENIM_API_PROMETHEUS_PORT_LISTARIES[$i]}"
|
||||||
openim::log::info "OpenIM ${OPENIM_API_SERVICE_LISTARIES[$i]} config path: ${OPENIM_API_CONFIG}"
|
openim::log::info "OpenIM ${OPENIM_API_SERVICE_LISTARIES[$i]} config path: ${OPENIM_API_CONFIG}"
|
||||||
|
|
||||||
# Start the service with Prometheus port if specified
|
# Start the service with Prometheus port if specified
|
||||||
openim::api::start_service "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}" "${OPENIM_API_PROMETHEUS_PORT_LISTARIES[$i]}"
|
result=$(openim::api::start_service "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}" "${OPENIM_API_PROMETHEUS_PORT_LISTARIES[$i]}")
|
||||||
sleep 2
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
else
|
||||||
|
openim::log::info "$result"
|
||||||
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function openim::api::start_service() {
|
function openim::api::start_service() {
|
||||||
@ -85,7 +98,9 @@ function openim::api::start_service() {
|
|||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
openim::log::error_exit "Failed to start ${binary_name} on port ${service_port}."
|
openim::log::error_exit "Failed to start ${binary_name} on port ${service_port}."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################### Linux Systemd ######################################
|
###################################### Linux Systemd ######################################
|
||||||
|
|||||||
@ -50,12 +50,16 @@ function openim::crontask::start() {
|
|||||||
openim::log::info "Start OpenIM Cron, binary root: ${SERVER_NAME}"
|
openim::log::info "Start OpenIM Cron, binary root: ${SERVER_NAME}"
|
||||||
openim::log::status "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}"
|
openim::log::status "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}"
|
||||||
|
|
||||||
openim::util::stop_services_with_name ${OPENIM_CRONTASK_BINARY}
|
result=$(openim::util::stop_services_with_name ${OPENIM_CRONTASK_BINARY})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}"
|
openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}"
|
||||||
|
|
||||||
nohup ${OPENIM_CRONTASK_BINARY} -c ${OPENIM_PUSH_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
nohup ${OPENIM_CRONTASK_BINARY} -c ${OPENIM_PUSH_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
||||||
openim::util::check_process_names ${SERVER_NAME}
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,11 @@ function openim::msggateway::start() {
|
|||||||
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
|
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
|
||||||
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGGATEWAY_BINARY}"
|
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGGATEWAY_BINARY}"
|
||||||
|
|
||||||
openim::util::stop_services_with_name ${OPENIM_MSGGATEWAY_BINARY}
|
result=$(openim::util::stop_services_with_name ${OPENIM_MSGGATEWAY_BINARY})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# OpenIM message gateway service port
|
# OpenIM message gateway service port
|
||||||
OPENIM_MESSAGE_GATEWAY_PORTS=$(openim::util::list-to-string ${OPENIM_MESSAGE_GATEWAY_PORT} )
|
OPENIM_MESSAGE_GATEWAY_PORTS=$(openim::util::list-to-string ${OPENIM_MESSAGE_GATEWAY_PORT} )
|
||||||
@ -66,8 +70,7 @@ function openim::msggateway::start() {
|
|||||||
|
|
||||||
nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]} --ws_port ${OPENIM_WS_PORTS_ARRAY[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]} --ws_port ${OPENIM_WS_PORTS_ARRAY[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
||||||
done
|
done
|
||||||
|
return 0
|
||||||
openim::util::check_process_names ${SERVER_NAME}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################### Linux Systemd ######################################
|
###################################### Linux Systemd ######################################
|
||||||
|
|||||||
@ -34,7 +34,11 @@ function openim::msgtransfer::start() {
|
|||||||
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
|
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
|
||||||
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGTRANSFER_BINARY}"
|
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGTRANSFER_BINARY}"
|
||||||
|
|
||||||
openim::util::stop_services_with_name ${OPENIM_MSGTRANSFER_BINARY}
|
result=$(openim::util::stop_services_with_name ${OPENIM_MSGTRANSFER_BINARY})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Message Transfer Prometheus port list
|
# Message Transfer Prometheus port list
|
||||||
MSG_TRANSFER_PROM_PORTS=(openim::util::list-to-string ${MSG_TRANSFER_PROM_PORT} )
|
MSG_TRANSFER_PROM_PORTS=(openim::util::list-to-string ${MSG_TRANSFER_PROM_PORT} )
|
||||||
@ -63,8 +67,8 @@ function openim::msgtransfer::start() {
|
|||||||
fi
|
fi
|
||||||
nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} -n ${i} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} -n ${i} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
||||||
done
|
done
|
||||||
|
return 0
|
||||||
openim::util::check_process_names "${OPENIM_OUTPUT_HOSTBIN}/${SERVER_NAME}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function openim::msgtransfer::check() {
|
function openim::msgtransfer::check() {
|
||||||
@ -88,6 +92,33 @@ function openim::msgtransfer::check() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openim::msgtransfer::check_for_stop() {
|
||||||
|
PIDS=$(pgrep -f "${OPENIM_OUTPUT_HOSTBIN}/openim-msgtransfer") || PIDS="0"
|
||||||
|
if [ "$PIDS" = "0" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
NUM_PROCESSES=$(echo "$PIDS" | wc -l | xargs)
|
||||||
|
|
||||||
|
if [ "$NUM_PROCESSES" -gt 0 ]; then
|
||||||
|
openim::log::error "Found $NUM_PROCESSES processes for $OPENIM_OUTPUT_HOSTBIN/openim-msgtransfer"
|
||||||
|
for PID in $PIDS; do
|
||||||
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
|
echo -e "\033[31m$(ps -p $PID -o pid,cmd)\033[0m"
|
||||||
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
echo -e "\033[31m$(ps -p $PID -o pid,comm)\033[0m"
|
||||||
|
else
|
||||||
|
openim::log::error "Unsupported OS type: $OSTYPE"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
openim::log::error "Processes have not been stopped properly."
|
||||||
|
else
|
||||||
|
openim::log::success "All openim-msgtransfer processes have been stopped properly."
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
###################################### Linux Systemd ######################################
|
###################################### Linux Systemd ######################################
|
||||||
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
|
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,11 @@ function openim::push::start() {
|
|||||||
OPENIM_PUSH_PORTS_ARRAY=$(openim::util::list-to-string ${OPENIM_PUSH_PORT} )
|
OPENIM_PUSH_PORTS_ARRAY=$(openim::util::list-to-string ${OPENIM_PUSH_PORT} )
|
||||||
PUSH_PROM_PORTS_ARRAY=$(openim::util::list-to-string ${PUSH_PROM_PORT} )
|
PUSH_PROM_PORTS_ARRAY=$(openim::util::list-to-string ${PUSH_PROM_PORT} )
|
||||||
|
|
||||||
openim::util::stop_services_with_name ${SERVER_NAME}
|
result=$(openim::util::stop_services_with_name ${SERVER_NAME})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
openim::log::status "push port list: ${OPENIM_PUSH_PORTS_ARRAY[@]}"
|
openim::log::status "push port list: ${OPENIM_PUSH_PORTS_ARRAY[@]}"
|
||||||
openim::log::status "prometheus port list: ${PUSH_PROM_PORTS_ARRAY[@]}"
|
openim::log::status "prometheus port list: ${PUSH_PROM_PORTS_ARRAY[@]}"
|
||||||
@ -75,8 +79,8 @@ function openim::push::start() {
|
|||||||
openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}"
|
openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}"
|
||||||
nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} -c ${OPENIM_PUSH_CONFIG} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} -c ${OPENIM_PUSH_CONFIG} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
||||||
done
|
done
|
||||||
|
return 0
|
||||||
|
|
||||||
openim::util::check_process_names ${SERVER_NAME}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################### Linux Systemd ######################################
|
###################################### Linux Systemd ######################################
|
||||||
|
|||||||
@ -121,11 +121,13 @@ function openim::rpc::start() {
|
|||||||
printf "+------------------------+-------+-----------------+\n"
|
printf "+------------------------+-------+-----------------+\n"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
result=$(openim::util::stop_services_with_name ${OPENIM_API_SERVER_LIBRARIES})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
fi
|
||||||
|
|
||||||
# start all rpc services
|
# start all rpc services
|
||||||
for ((i = 0; i < ${#OPENIM_RPC_SERVICE_LISTARIES[*]}; i++)); do
|
for ((i = 0; i < ${#OPENIM_RPC_SERVICE_LISTARIES[*]}; i++)); do
|
||||||
# openim::util::stop_services_with_name ${OPENIM_RPC_SERVICE_LISTARIES
|
|
||||||
openim::util::stop_services_on_ports ${OPENIM_RPC_PORT_LISTARIES[$i]}
|
|
||||||
openim::util::stop_services_on_ports ${OPENIM_RPC_PROM_PORT_LISTARIES[$i]}
|
|
||||||
|
|
||||||
openim::log::info "OpenIM ${OPENIM_RPC_SERVICE_LISTARIES[$i]} config path: ${OPENIM_RPC_CONFIG}"
|
openim::log::info "OpenIM ${OPENIM_RPC_SERVICE_LISTARIES[$i]} config path: ${OPENIM_RPC_CONFIG}"
|
||||||
|
|
||||||
@ -138,15 +140,25 @@ function openim::rpc::start() {
|
|||||||
|
|
||||||
for ((j = 0; j < ${#OPENIM_RPC_SERVICE_PORTS_ARRAY[@]}; j++)); do
|
for ((j = 0; j < ${#OPENIM_RPC_SERVICE_PORTS_ARRAY[@]}; j++)); do
|
||||||
openim::log::info "Starting ${OPENIM_RPC_SERVICE_LISTARIES[$i]} service, port: ${OPENIM_RPC_SERVICE_PORTS[j]}, prometheus port: ${OPENIM_RPC_PROM_PORTS[j]}, binary root: ${OPENIM_OUTPUT_HOSTBIN}/${OPENIM_RPC_SERVICE_LISTARIES[$i]}"
|
openim::log::info "Starting ${OPENIM_RPC_SERVICE_LISTARIES[$i]} service, port: ${OPENIM_RPC_SERVICE_PORTS[j]}, prometheus port: ${OPENIM_RPC_PROM_PORTS[j]}, binary root: ${OPENIM_OUTPUT_HOSTBIN}/${OPENIM_RPC_SERVICE_LISTARIES[$i]}"
|
||||||
openim::rpc::start_service "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_SERVICE_PORTS[j]}" "${OPENIM_RPC_PROM_PORTS[j]}"
|
result=$(openim::rpc::start_service "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_SERVICE_PORTS[j]}" "${OPENIM_RPC_PROM_PORTS[j]}")
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "stop ${SERVER_NAME} failed"
|
||||||
|
else
|
||||||
|
openim::log::info "$result"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]}
|
result=$(openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]})
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
openim::log::error "check ${SERVER_NAME} failed"
|
||||||
|
else
|
||||||
|
openim::log::info "$result"
|
||||||
|
fi
|
||||||
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
|
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function openim::rpc::start_service() {
|
function openim::rpc::start_service() {
|
||||||
@ -161,6 +173,7 @@ function openim::rpc::start_service() {
|
|||||||
cmd="${cmd} --prometheus_port ${prometheus_port}"
|
cmd="${cmd} --prometheus_port ${prometheus_port}"
|
||||||
fi
|
fi
|
||||||
nohup ${cmd} >> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
nohup ${cmd} >> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################### Linux Systemd ######################################
|
###################################### Linux Systemd ######################################
|
||||||
|
|||||||
@ -122,7 +122,6 @@ function openim::tools::pre-start() {
|
|||||||
for tool in "${OPENIM_TOOLS_PRE_START_NAME_LISTARIES[@]}"; do
|
for tool in "${OPENIM_TOOLS_PRE_START_NAME_LISTARIES[@]}"; do
|
||||||
openim::log::info "Starting ${tool}..."
|
openim::log::info "Starting ${tool}..."
|
||||||
openim::tools::start_service ${tool} ${OPNEIM_CONFIG}
|
openim::tools::start_service ${tool} ${OPNEIM_CONFIG}
|
||||||
sleep 0.2
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +130,6 @@ function openim::tools::post-start() {
|
|||||||
for tool in "${OPENIM_TOOLS_POST_START_NAME_LISTARIES[@]}"; do
|
for tool in "${OPENIM_TOOLS_POST_START_NAME_LISTARIES[@]}"; do
|
||||||
openim::log::info "Starting ${tool}..."
|
openim::log::info "Starting ${tool}..."
|
||||||
openim::tools::start_service ${tool}
|
openim::tools::start_service ${tool}
|
||||||
sleep 0.2
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -84,6 +84,24 @@ openim::golang::server_targets() {
|
|||||||
echo "${targets[@]}"
|
echo "${targets[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openim::golang::server_targets_no_transfer() {
|
||||||
|
local targets=(
|
||||||
|
openim-api
|
||||||
|
openim-cmdutils
|
||||||
|
openim-crontask
|
||||||
|
openim-msggateway
|
||||||
|
openim-push
|
||||||
|
openim-rpc-auth
|
||||||
|
openim-rpc-conversation
|
||||||
|
openim-rpc-friend
|
||||||
|
openim-rpc-group
|
||||||
|
openim-rpc-msg
|
||||||
|
openim-rpc-third
|
||||||
|
openim-rpc-user
|
||||||
|
)
|
||||||
|
echo "${targets[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
IFS=" " read -ra OPENIM_SERVER_TARGETS <<< "$(openim::golang::server_targets)"
|
IFS=" " read -ra OPENIM_SERVER_TARGETS <<< "$(openim::golang::server_targets)"
|
||||||
readonly OPENIM_SERVER_TARGETS
|
readonly OPENIM_SERVER_TARGETS
|
||||||
readonly OPENIM_SERVER_BINARIES=("${OPENIM_SERVER_TARGETS[@]##*/}")
|
readonly OPENIM_SERVER_BINARIES=("${OPENIM_SERVER_TARGETS[@]##*/}")
|
||||||
|
|||||||
@ -457,6 +457,81 @@ openim::util::check_process_names() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openim::util::check_process_names_for_stop() {
|
||||||
|
# Function to get the port of a process
|
||||||
|
get_port() {
|
||||||
|
local pid=$1
|
||||||
|
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 details of processes
|
||||||
|
local not_started=()
|
||||||
|
local started=()
|
||||||
|
|
||||||
|
openim::log::info "Checking processes: $*"
|
||||||
|
# Iterate over each given process name
|
||||||
|
for process_name in "$@"; do
|
||||||
|
# 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
|
||||||
|
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")
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Print information
|
||||||
|
if [[ ${#not_started[@]} -ne 0 ]]; then
|
||||||
|
openim::log::info "Not started processes:"
|
||||||
|
for process_name in "${not_started[@]}"; do
|
||||||
|
openim::log::error "Process $process_name is not started."
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${#started[@]} -ne 0 ]]; then
|
||||||
|
echo
|
||||||
|
openim::log::info "Started processes:"
|
||||||
|
for info in "${started[@]}"; do
|
||||||
|
openim::log::info "$info"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return status
|
||||||
|
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
|
||||||
|
echo ""
|
||||||
|
openim::log::success "All processes are running."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# openim::util::check_process_names docker-pr
|
# openim::util::check_process_names docker-pr
|
||||||
|
|
||||||
# The `openim::util::stop_services_on_ports` function stops services running on specified ports.
|
# The `openim::util::stop_services_on_ports` function stops services running on specified ports.
|
||||||
@ -573,26 +648,8 @@ openim::util::stop_services_with_name() {
|
|||||||
not_stopped+=("$server_name")
|
not_stopped+=("$server_name")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
return 0
|
||||||
|
|
||||||
# Print information about services whose processes couldn't be stopped.
|
|
||||||
if [[ ${#not_stopped[@]} -ne 0 ]]; then
|
|
||||||
openim::log::info "Services that couldn't be stopped:"
|
|
||||||
for name in "${not_stopped[@]}"; do
|
|
||||||
openim::log::status "Failed to stop the $name service."
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print information about services whose processes were successfully stopped.
|
|
||||||
if [[ ${#stopped[@]} -ne 0 ]]; then
|
|
||||||
echo
|
|
||||||
openim::log::info "Stopped services:"
|
|
||||||
for name in "${stopped[@]}"; do
|
|
||||||
openim::log::info "Successfully stopped the $name service."
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
openim::log::success "All specified services were stopped."
|
|
||||||
echo ""
|
|
||||||
}
|
}
|
||||||
# sleep 333333&
|
# sleep 333333&
|
||||||
# sleep 444444&
|
# sleep 444444&
|
||||||
@ -2822,6 +2879,46 @@ function openim::util::gen_os_arch() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function openim::util::check_process_names_for_stop() {
|
||||||
|
local all_stopped=true
|
||||||
|
|
||||||
|
for service in "${OPENIM_ALL_SERVICE_LIBRARIES[@]}"; do
|
||||||
|
PIDS=$(pgrep -f "${service}") || PIDS="0"
|
||||||
|
if [ "$PIDS" = "0" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
all_stopped=false
|
||||||
|
NUM_PROCESSES=$(echo "$PIDS" | wc -l | xargs)
|
||||||
|
|
||||||
|
if [ "$NUM_PROCESSES" -gt 0 ]; then
|
||||||
|
openim::log::error "Found $NUM_PROCESSES processes for ${service}"
|
||||||
|
for PID in $PIDS; do
|
||||||
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
|
echo -e "\033[31m$(ps -p $PID -o pid,cmd)\033[0m"
|
||||||
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
echo -e "\033[31m$(ps -p $PID -o pid,comm)\033[0m"
|
||||||
|
else
|
||||||
|
openim::log::error "Unsupported OS type: $OSTYPE"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
openim::log::error "Processes for ${service} have not been stopped properly."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$all_stopped" = true ]; then
|
||||||
|
openim::log::success "All processes have been stopped properly."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [[ "$*" =~ openim::util:: ]];then
|
if [[ "$*" =~ openim::util:: ]];then
|
||||||
eval $*
|
eval $*
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -54,19 +54,18 @@ function execute_scripts() {
|
|||||||
openim::log::status "Starting script: ${script_path##*/}" # Log the script name.
|
openim::log::status "Starting script: ${script_path##*/}" # Log the script name.
|
||||||
|
|
||||||
# Execute the script with the constructed argument.
|
# Execute the script with the constructed argument.
|
||||||
"$script_path" "$arg"
|
result=$("$script_path" "$arg")
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
# Check if the script executed successfully.
|
openim::log::error "Start script: ${script_path##*/} failed"
|
||||||
if [[ $? -eq 0 ]]; then
|
openim::log::error "$result"
|
||||||
openim::log::info "${script_path##*/} executed successfully."
|
return 1
|
||||||
else
|
|
||||||
openim::log::errexit "Error executing ${script_path##*/}."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
openim::log::errexit "Script ${script_path##*/} is missing or not executable."
|
openim::log::errexit "Script ${script_path##*/} is missing or not executable."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
sleep 0.5
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -79,6 +78,18 @@ ${TOOLS_START_SCRIPTS_PATH} openim::tools::pre-start
|
|||||||
openim::log::info "\n## Starting OpenIM services"
|
openim::log::info "\n## Starting OpenIM services"
|
||||||
execute_scripts
|
execute_scripts
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
openim::log::info "\n## Check OpenIM service name"
|
||||||
|
. $(dirname ${BASH_SOURCE})/install/openim-msgtransfer.sh openim::msgtransfer::check
|
||||||
|
|
||||||
|
echo "+++ The process being checked:"
|
||||||
|
for item in "${OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER[@]}"; do
|
||||||
|
echo "$item"
|
||||||
|
done
|
||||||
|
|
||||||
|
openim::util::check_process_names ${OPENIM_ALL_SERVICE_LIBRARIES_NO_TRANSFER[@]}
|
||||||
|
|
||||||
openim::log::info "\n## Post Starting OpenIM services"
|
openim::log::info "\n## Post Starting OpenIM services"
|
||||||
${TOOLS_START_SCRIPTS_PATH} openim::tools::post-start
|
${TOOLS_START_SCRIPTS_PATH} openim::tools::post-start
|
||||||
|
|
||||||
|
|||||||
@ -28,12 +28,20 @@ source "${OPENIM_ROOT}/scripts/install/common.sh"
|
|||||||
|
|
||||||
openim::log::info "\n# Begin to stop all openim service"
|
openim::log::info "\n# Begin to stop all openim service"
|
||||||
|
|
||||||
echo "++ Ready to stop port: ${OPENIM_SERVER_PORT_LISTARIES[@]}"
|
|
||||||
|
|
||||||
openim::util::stop_services_on_ports ${OPENIM_SERVER_PORT_LISTARIES[@]}
|
|
||||||
|
|
||||||
echo -e "\n++ Stop all processes in the path ${OPENIM_OUTPUT_HOSTBIN}"
|
echo -e "\n++ Stop all processes in the path ${OPENIM_OUTPUT_HOSTBIN}"
|
||||||
|
|
||||||
openim::util::stop_services_with_name "${OPENIM_OUTPUT_HOSTBIN}"
|
openim::util::stop_services_with_name "${OPENIM_OUTPUT_HOSTBIN}"
|
||||||
|
# todo OPENIM_ALL_SERVICE_LIBRARIES
|
||||||
|
|
||||||
openim::log::success "✨ All processes to be killed"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
result=$(openim::util::check_process_names_for_stop)
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo "+++ cat openim log file >>> ${LOG_FILE}"
|
||||||
|
openim::log::error "stop process failed.\n$(result)"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
openim::log::success "✨ All processes to be stopped"
|
||||||
Loading…
x
Reference in New Issue
Block a user