优化linux启停脚本
This commit is contained in:
@@ -1,13 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
PREFIX='./'
|
||||
CMD=$0
|
||||
if [[ $CMD == $PREFIX* ]]; then
|
||||
CMD=${CMD:2}
|
||||
# 获取脚本真实路径(兼容Linux和macOS)
|
||||
if [ -L "$0" ]; then
|
||||
# 处理符号链接
|
||||
if command -v greadlink >/dev/null 2>&1; then
|
||||
SCRIPT_PATH=$(greadlink -f "$0")
|
||||
elif command -v readlink >/dev/null 2>&1; then
|
||||
SCRIPT_PATH=$(readlink -f "$0")
|
||||
else
|
||||
# 使用perl作为备选
|
||||
SCRIPT_PATH=$(perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$0" 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
SCRIPT_PATH="$0"
|
||||
fi
|
||||
SCRIPT_DIR=$(dirname "`pwd`/$CMD")
|
||||
PROJECT_DIR=`dirname "$SCRIPT_DIR"`
|
||||
|
||||
# 最终回退方案
|
||||
if [ -z "$SCRIPT_PATH" ] || [ ! -f "$SCRIPT_PATH" ]; then
|
||||
SCRIPT_PATH="$0"
|
||||
fi
|
||||
|
||||
# 计算项目根目录
|
||||
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
|
||||
PROJECT_DIR=$(cd "$SCRIPT_DIR" && cd .. && pwd 2>/dev/null)
|
||||
|
||||
# 验证项目目录是否存在
|
||||
if [ ! -d "$PROJECT_DIR" ]; then
|
||||
echo "ERROR: Failed to determine project directory!" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 不要修改进程标记,作为进程属性关闭使用
|
||||
PROCESS_FLAG="kafka-console-ui-process-flag:${PROJECT_DIR}"
|
||||
pkill -f $PROCESS_FLAG
|
||||
echo 'Stop Kafka-console-ui!'
|
||||
|
||||
# 停止前检查进程是否存在
|
||||
if pgrep -f "$PROCESS_FLAG" >/dev/null; then
|
||||
# 先尝试正常停止
|
||||
pkill -f "$PROCESS_FLAG"
|
||||
|
||||
# 等待进程退出
|
||||
TIMEOUT=10
|
||||
while [ $TIMEOUT -gt 0 ]; do
|
||||
if ! pgrep -f "$PROCESS_FLAG" >/dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
TIMEOUT=$((TIMEOUT - 1))
|
||||
done
|
||||
|
||||
# 检查是否仍有进程存在
|
||||
if pgrep -f "$PROCESS_FLAG" >/dev/null; then
|
||||
# 强制终止
|
||||
pkill -9 -f "$PROCESS_FLAG"
|
||||
echo "Stop Kafka-console-ui! (force killed)"
|
||||
else
|
||||
echo "Stop Kafka-console-ui! (gracefully stopped)"
|
||||
fi
|
||||
else
|
||||
echo "Kafka-console-ui is not running."
|
||||
fi
|
||||
52
bin/start.sh
52
bin/start.sh
@@ -1,29 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 设置jvm堆大小及栈大小,栈大小最少设置为256K,不要小于这个值,比如设置为128,太小了
|
||||
# 设置jvm堆大小及栈大小
|
||||
JAVA_MEM_OPTS="-Xmx512m -Xms512m -Xmn256m -Xss256k"
|
||||
|
||||
PREFIX='./'
|
||||
CMD=$0
|
||||
if [[ $CMD == $PREFIX* ]]; then
|
||||
CMD=${CMD:2}
|
||||
# 获取脚本真实路径(兼容Linux和macOS)
|
||||
if [ -L "$0" ]; then
|
||||
# 处理符号链接
|
||||
if command -v greadlink >/dev/null 2>&1; then
|
||||
# macOS使用greadlink(需brew install coreutils)
|
||||
SCRIPT_PATH=$(greadlink -f "$0")
|
||||
else
|
||||
# Linux使用readlink
|
||||
SCRIPT_PATH=$(readlink -f "$0")
|
||||
fi
|
||||
else
|
||||
SCRIPT_PATH="$0"
|
||||
fi
|
||||
SCRIPT_DIR=$(dirname "`pwd`/$CMD")
|
||||
PROJECT_DIR=`dirname "$SCRIPT_DIR"`
|
||||
|
||||
# 如果上述方法失败(如macOS无greadlink),使用替代方案
|
||||
if [ -z "$SCRIPT_PATH" ] || [ ! -f "$SCRIPT_PATH" ]; then
|
||||
# 使用perl跨平台解决方案
|
||||
SCRIPT_PATH=$(perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$0" 2>/dev/null)
|
||||
fi
|
||||
|
||||
# 最终回退方案
|
||||
if [ -z "$SCRIPT_PATH" ] || [ ! -f "$SCRIPT_PATH" ]; then
|
||||
SCRIPT_PATH="$0"
|
||||
fi
|
||||
|
||||
# 计算项目根目录
|
||||
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
|
||||
PROJECT_DIR=$(cd "$SCRIPT_DIR" && cd .. && pwd)
|
||||
CONF_FILE="$PROJECT_DIR/config/application.yml"
|
||||
TARGET="$PROJECT_DIR/lib/kafka-console-ui.jar"
|
||||
|
||||
#设置h2文件根目录
|
||||
DATA_DIR=$PROJECT_DIR
|
||||
# 设置h2文件根目录
|
||||
DATA_DIR="$PROJECT_DIR"
|
||||
|
||||
# 日志目录,默认为当前工程目录下
|
||||
# 这个是错误输出,如果启动命令有误,输出到这个文件,应用日志不会输出到error.out,应用日志输出到上面的kafka-console-ui.log中
|
||||
ERROR_OUT="$PROJECT_DIR/error.out"
|
||||
# 不要修改进程标记,作为进程属性关闭使用,如果要修改,请把shutdown.sh里的该属性的值保持一致
|
||||
# 日志目录
|
||||
LOG_HOME="$PROJECT_DIR"
|
||||
PROCESS_FLAG="kafka-console-ui-process-flag:${PROJECT_DIR}"
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS $JAVA_MEM_OPTS -Dfile.encoding=utf-8"
|
||||
|
||||
nohup java -jar $JAVA_OPTS $TARGET --spring.config.location="$CONF_FILE" --logging.home="$PROJECT_DIR" --data.dir=$DATA_DIR $PROCESS_FLAG 1>/dev/null 2>$ERROR_OUT &
|
||||
# 启动应用
|
||||
nohup java -jar $JAVA_OPTS "$TARGET" \
|
||||
--spring.config.location="$CONF_FILE" \
|
||||
--logging.home="$LOG_HOME" \
|
||||
--data.dir="$DATA_DIR" \
|
||||
"$PROCESS_FLAG" >/dev/null 2>"$ERROR_OUT" &
|
||||
|
||||
echo "Kafka-console-ui Started!"
|
||||
echo "Kafka-console-ui Started! PID: $!"
|
||||
Reference in New Issue
Block a user