1.直接启动
#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=XXXX-api-1.0.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else #nohup java -jar $APP_NAME > /dev/null 2>&1 & nohup java -jar $APP_NAME -config.spring=./application.properties & echo "${APP_NAME} start success" fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi } #输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi } #重启 restart(){ stop start } #根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac
2.以服务的方式启动
# 授权可执行
chmod +x XXX-api-1.0.jar
# 创建软链接
ln -s /home/xxx/XXXX-api/XXXX-api-1.0.jar /etc/init.d/syt-XXXX-api
# 启停服务
service xxx-XXXX-api start|stop|restart
# 使用service xx start命令后可能出现Unable to find Java需添加java软链接
ln -s /usr/local/jdk1.8.0_231/bin/java /sbin/java
3.将sql日志写入文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--在properties文件中找到对应的配置项--> <springProperty scope="context" name="logging.path" source="logging.path"/> <springProperty scope="context" name="logging.level" source="logging.level"/> <!--控制台日志输出--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--普通文件日志输出--> <appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!--正式上线可启用(不打印sql日志)--> <!--<level>${logging.level}</level>--> <level>debug</level> </filter> <file>${logging.path}/all.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logging.path}/all.%d.%i.log</fileNamePattern> <!--日志文件保留天数--> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--错误文件日志输出--> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter> <file>${logging.path}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logging.path}/error.%d.%i.log</fileNamePattern> <!--日志文件保留天数--> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <root level="${logging.level}"> <appender-ref ref="STDOUT"/> <appender-ref ref="ALL"/> <appender-ref ref="ERROR"/> </root> </configuration>