• Linux命令执行.sh文件


    Linux系统中用命令如何运行.sh文件的方法

    一、直接./加上文件名.sh,如运行hello.sh为./hello.sh【hello.sh必须有x权限】

    二、直接sh 加上文件名.sh,如运行hello.sh为sh hello.sh【hello.sh可以没有x权限】

    1:当前目录执行xshell

    1.1:cd到.sh文件所在的目录:/home/datelog/uploadserver_wql

    1.2:命令:./wql.sh 若该文件没有执行权限,则给该文件赋权限

    1.3:赋权限命令:chmod u+x wql.sh

    1.4:./执行.sh文件:./wql.sh(用“./”加文件名.sh执行时,必须给.sh文件加x执行权限) 

    1.5:或者sh执行文件:sh wql.sh(该命令不需要赋权限) 

    2:绝对路径执行.sh文件

    2.1:/home/datelog/uploadserver_wql/wql.sh

    2.2:或者执行命令:sh /home/datelog/uploadserver_wql/wql.sh

    下面介绍一种快捷启动或者停止站点的方式

    例如下图目录结构,我们的项目站点放在/export/App/ag-springboot目录下面

    bin目录放的start.sh 和 stop.sh 文件;conf目录下放的是配置文件application.properties;lib目录下存放的是jar包ag-springboot-1.0.0.jar

    启动服务命令:

    [root@localhost ~]# cd /export/App/ag-springboot/bin
    [root@localhost ~]# sh start.sh

    停止服务命令:

    [root@localhost ~]# cd /export/App/ag-springboot/bin
    [root@localhost ~]# sh stop.sh

    start.sh 中代码如下:

    #!/bin/bash
    
    #----------以下变量可以在脚本中直接使用----------------
    # $def_app_id           应用id
    # $def_app_name         应用名称
    # $def_app_domain       应用域名
    # $def_app_deploy_path  兼容老部署,废弃
    # $def_path_app_log     应用日志路径 如:/export/Logs/
    # $def_path_app_data    如:/export/Data
    # $def_group_id         分组 id
    # $def_instance_id      实例id
    # $def_instance_name    实例名称 server1
    # $def_instance_path    实例完成路径 /export/Instances/jone/server1/
    # $def_host_ip
    #--------------------------
    
    #set -o errexit
    readonly APP_NAME=ag-springboot          #定义当前应用的名称
    readonly JAR_VERSION=1.0.0         #打包的JAR版本
    #获取当前应用的进程 id
    function get_pid
    {
      pgrep -f "$EXE_JAR"
    }
    
    BASEDIR=$(cd $(dirname $0) && pwd)/..            # 获取运行脚本的上级目录
    
    readonly JAVA_HOME=$JAVA_HOME
    readonly JAVA=$JAVA_HOME/bin/java
    
    EXE_JAR="$APP_NAME-$JAR_VERSION.jar"
    echo "$EXE_JAR"
    
    echo "Starting $APP_NAME ...."
    [[ -x $JAVA ]] || {
        echo "ERROR: no executable java found at $JAVA" >&2
        exit 1
    }
    
    JVM_OPTS=" -server -Xms512m -Xmx512m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError "
    profile=pro
    #日志配置
    log_path=/export/Logs/ag-springboot
    log_file=$log_path/catalina.out
    log_file_backup=${log_file}.$(date "+%Y-%m-%d-%H_%M_%S").log
    
    if [[ ! -d "log_path" ]]; then
        mkdir -p ${log_path}
        echo "log_path dir created"
    fi
    
    if [ -f "${log_file}" ];then
        cp ${log_file} ${log_file_backup}
        echo "" > ${log_file}
    fi
    
    [[ -z $(get_pid) ]] || {
        echo "ERROR:  $APP_NAME already running" >&2
        exit 1
    }
    
    echo 'JDK路径:'$JAVA_HOME
    echo '当前路径:'$BASEDIR
    echo '日志路径:'$log_path
    echo '当前的启动环境:'${profile:=pro}
    
    setsid $JAVA $JVM_OPTS -jar $BASEDIR/lib/$EXE_JAR --spring.profiles.active=$profile --spring.config.location=../conf/ > $log_file 2>&1 &
    
    sleep 0.5
    [[ -n $(get_pid) ]] || {
        echo "ERROR: $APP_NAME failed to start" >&2
        exit 1
    }
    
    echo "$APP_NAME is up runnig :)"
    View Code

    stop.sh 中代码如下:

    #!/bin/bash
    
    set -o errexit
    set -o nounset
    
    readonly APP_NAME=ag-springboot          #定义当前应用的名称
    readonly JAR_VERSION=1.0.0         #打包的JAR版本
    EXE_JAR="$APP_NAME-$JAR_VERSION.jar"
    #获取当前应用的进程 id
    function get_running_pid
    {
      pgrep -f "$EXE_JAR"
    }
    
    readonly SELF_DIR=$(cd $(dirname $0) && pwd)
    
    function stop
    {
        local -i timeout=20
        local -i interval=1
        local -r service_pid=$(get_running_pid) || true # ignore error
        [[ -n $service_pid ]] || {
            echo "WARNING: process not found, nothing to stop" >&2
            exit 0
        }
        echo "Stopping application with PID:$service_pid ..."
        kill $service_pid
        while (( timeout > 0 )) && get_running_pid > /dev/null; do
            echo -n "."ƒ
            sleep $interval
            timeout=$(( timeout - interval ))
        done
        if get_running_pid > /dev/null; then
            echo "WARNING: process still alive, sending SIGKILL ..." >&2
            kill -9 "$service_pid"
        fi
    }
    function main
    {
        get_running_pid > /dev/null || {
            echo "WARNING: process not found, nothing to stop" >&2
            exit 0  # Ignore error
        }
        stop
    }
    main "$@"
    View Code

    application.properties 配置文件中代码如下:

    server.port=8181
    spring.application.name=ag-springboot
    
    logging.config=classpath:logback.xml
    View Code
  • 相关阅读:
    AcWing 171. 送礼物
    AcWing 167. 木棒
    AcWing 166. 数独
    AcWing 168. 生日蛋糕
    AcWing 180 排书
    A*与IDA* 算法介绍
    AcWing 170. 加成序列[曾用名:加法链]
    AcWing 普通队列与循环队列写法
    AcWing 181. 回转游戏
    AcWing 1129. 热浪【单源最短路】
  • 原文地址:https://www.cnblogs.com/li150dan/p/15184704.html
Copyright © 2020-2023  润新知