命令参数
!NOTE 示例
-s|--start
:启动服务,后跟端口号-stop
:停止服务,后跟端口号-c|--copy
:备份并更新项目文件-l|--log
:查看日志,后跟端口号- 示例:
sh xxx.sh -s 12000
启动端口为 12000 的服务
# 项目名称 APP_NAME=safirst-etmf-api-1.0.0.jar # 根据端口号启动服务 start_port() { echo "准备启动服务,端口号:$PORT" pid=$(netstat -an | grep $PORT | awk '{print $4}') echo "当前进程信息:$pid" if [[ -n $pid ]]; then echo "端口号 $PORT 的服务已在运行" else echo "正在启动服务..." nohup java -jar $APP_NAME --server.port=${PORT} --logging.file.name=/mnt/nas/etmf/irzhd-logs-api-$PORT-105/spring.log > /dev/null & fi exit 1 } # 备份并更新项目文件 copy_c() { FILE_NAME=$(date -d last-day +%Y%m%d) echo "开始备份项目..." cp $APP_NAME ${APP_NAME}_${FILE_NAME} echo "备份完成:${APP_NAME}_${FILE_NAME}" echo "正在更新项目文件..." cp /mnt/nas/jar/$APP_NAME . echo "项目更新成功" exit 1 } # 停止指定端口的服务 stop_s() { echo "正在停止端口 $PORT 的服务..." ps -ef | grep $PORT | grep -v grep | awk '{print $2}' | xargs kill -9 echo "服务已停止" exit 1 } # 查看日志 log_port() { tail -f /mnt/nas/etmf/irzhd-logs-api-$PORT-105/spring.log exit 1 } # 使用说明 usage() { echo "Usage: ${0} [-s|--start] [-stop] [-c|--copy] [-l|--log]" 1>&2 exit 1 } # 参数解析 while [[ $# -gt 0 ]]; do key=${1} case ${key} in -s|--start) PORT=${2} if [[ ! -n $PORT ]]; then echo "请提供端口号,例如:-s 12000" exit 1 else echo "正在启动端口号:$PORT" shift 2 start_port fi ;; -c|--copy) copy_c shift 2 ;; -stop) PORT=${2} if [[ ! -n $PORT ]]; then echo "请提供端口号,例如:-stop 12000" exit 1 else stop_s shift 2 fi ;; -l|--log) PORT=${2} if [[ ! -n $PORT ]]; then echo "请提供端口号,例如:-l 12000" exit 1 else log_port shift 2 fi ;; *) usage shift ;; esac done
评论区
评论加载中...