Spring Boot 部署与服务配置

本文介绍 SpringBoot 的配置选项,包括内嵌服务器配置、使用 Profile 区分环境、指定外部配置文件等内容,并提供了部署到 JavaEE 容器的方法及 Linux 应用的启动脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。

项目构建我们使用Maven或Gradle,这将使项目依赖、jar包管理、以及打包部署变的非常方便。

一、内嵌 Server 配置

Spring Boot将容器内置后,它通过配置文件的方式类修改相关server配置。
先看一下下面的图,为关于server的配置列项:
配置
配置

其中常用的配置只有少数几个,已经用紫色标记起来。红框圈起来的部分,看名称分类就可以明白其作用。
对server的几个常用的配置做个简单说明:

<code class="hljs vala has-numbering"><span class="hljs-preprocessor"># 项目contextPath,一般在正式发布版本中,我们不配置</span>
server.context-path=/myspringboot
<span class="hljs-preprocessor"># 错误页,指定发生错误时,跳转的URL。请查看BasicErrorController源码便知</span>
server.error.path=/error
<span class="hljs-preprocessor"># 服务端口</span>
server.port=<span class="hljs-number">9090</span>
<span class="hljs-preprocessor"># session最大超时时间(分钟),默认为30</span>
server.session-timeout=<span class="hljs-number">60</span>
<span class="hljs-preprocessor"># 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置</span>
<span class="hljs-preprocessor"># server.address=192.168.16.11</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

Tomcat
Tomcat为Spring Boot的默认容器,下面是几个常用配置:

<code class="hljs ruby has-numbering"><span class="hljs-comment"># tomcat最大线程数,默认为200</span>
server.tomcat.max-threads=<span class="hljs-number">800</span>
<span class="hljs-comment"># tomcat的URI编码</span>
server.tomcat.uri-encoding=<span class="hljs-constant">UTF</span>-<span class="hljs-number">8</span>
<span class="hljs-comment"># 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:C:\Users\Shanhy\AppData\Local\Temp)</span>
server.tomcat.basedir=<span class="hljs-constant">H</span><span class="hljs-symbol">:/springboot-tomcat-tmp</span>
<span class="hljs-comment"># 打开Tomcat的Access日志,并可以设置日志格式的方法:</span>
<span class="hljs-comment">#server.tomcat.access-log-enabled=true</span>
<span class="hljs-comment">#server.tomcat.access-log-pattern=</span>
<span class="hljs-comment"># accesslog目录,默认在basedir/logs</span>
<span class="hljs-comment">#server.tomcat.accesslog.directory=</span>
<span class="hljs-comment"># 日志文件目录</span>
logging.path=<span class="hljs-constant">H</span><span class="hljs-symbol">:/springboot-tomcat-tmp</span>
<span class="hljs-comment"># 日志文件名称,默认为spring.log</span>
logging.file=myapp.log</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

Jetty
如果你要选择Jetty,也非常简单,就是把pom中的tomcat依赖排除,并加入Jetty容器的依赖,如下:

<code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">dependencies</span>></span>
  <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">exclusions</span>></span>
      <span class="hljs-tag"><<span class="hljs-title">exclusion</span>></span>
        <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
        <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-tomcat<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
      <span class="hljs-tag"></<span class="hljs-title">exclusion</span>></span>
    <span class="hljs-tag"></<span class="hljs-title">exclusions</span>></span>
  <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span>
  <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-jetty<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
  <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-title">dependencies</span>></span> </code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

打包
打包方法:
CMD进入项目目录,使用 mvn clean package 命令打包,以我的项目工程为例:

<code class="hljs lasso has-numbering">E:<span class="hljs-subst">\</span>spring<span class="hljs-attribute">-boot</span><span class="hljs-attribute">-sample</span><span class="hljs-subst">></span>mvn clean package</code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets_01.png" /></a></div>

可以追加参数 -Dmaven.test.skip=true 跳过测试。
打包后的文件存放于项目下的target目录中,如:spring-boot-sample-0.0.1-SNAPSHOT.jar
如果pom配置的是war包,则为spring-boot-sample-0.0.1-SNAPSHOT.war

二、部署到JavaEE容器

  1. 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SpringBootSampleApplication</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">SpringBootServletInitializer</span>{</span>

    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);

    <span class="hljs-annotation">@Override</span>
    <span class="hljs-keyword">protected</span> SpringApplicationBuilder <span class="hljs-title">configure</span>(SpringApplicationBuilder builder) {
        <span class="hljs-keyword">return</span> builder.sources(<span class="hljs-keyword">this</span>.getClass());
    }

}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>
  1. 修改pom文件中jar 为 war
<code class="hljs xml has-numbering"><span class="hljs-comment"><!-- <packaging>jar</packaging> --></span>
<span class="hljs-tag"><<span class="hljs-title">packaging</span>></span>war<span class="hljs-tag"></<span class="hljs-title">packaging</span>></span></code><ul class="pre-numbering"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets_01.png" /></a></div>
  1. 修改pom,排除tomcat插件
<code class="hljs xml has-numbering">        <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span>
            <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
            <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
            <span class="hljs-tag"><<span class="hljs-title">exclusions</span>></span>
                <span class="hljs-tag"><<span class="hljs-title">exclusion</span>></span>
                    <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
                    <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-tomcat<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
                <span class="hljs-tag"></<span class="hljs-title">exclusion</span>></span>
            <span class="hljs-tag"></<span class="hljs-title">exclusions</span>></span>
        <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>
  1. 打包部署到容器
    使用命令 mvn clean package 打包后,同一般J2EE项目一样部署到web容器。

三、使用Profile区分环境

spring boot 可以在 “配置文件”、“Java代码类”、“日志配置” 中来配置profile区分不同环境执行不同的结果

1、配置文件
使用配置文件application.yml 和 application.properties 有所区别
以application.properties 为例,通过文件名来区分环境 application-{profile}.properties
application.properties

<code class="hljs avrasm has-numbering">app<span class="hljs-preprocessor">.name</span>=MyApp
server<span class="hljs-preprocessor">.port</span>=<span class="hljs-number">8080</span>
spring<span class="hljs-preprocessor">.profiles</span><span class="hljs-preprocessor">.active</span>=dev</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets_01.png" /></a></div>

application-dev.properties

<code class="hljs fix has-numbering"><span class="hljs-attribute">server.port</span>=<span class="hljs-string">8081</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

application-stg.properties

<code class="hljs fix has-numbering"><span class="hljs-attribute">server.port</span>=<span class="hljs-string">8082</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets_01.png" /></a></div>

在启动程序的时候通过添加 –spring.profiles.active={profile} 来指定具体使用的配置
例如我们执行 java -jar demo.jar –spring.profiles.active=dev 那么上面3个文件中的内容将被如何应用?
Spring Boot 会先加载默认的配置文件,然后使用具体指定的profile中的配置去覆盖默认配置。

app.name 只存在于默认配置文件 application.properties 中,因为指定环境中不存在同样的配置,所以该值不会被覆盖
server.port 默认为8080,但是我们指定了环境后,将会被覆盖。如果指定stg环境,server.port 则为 8082
spring.profiles.active 默认指定dev环境,如果我们在运行时指定 –spring.profiles.active=stg 那么将应用stg环境,最终 server.port 的值为8082

2、Java类中@Profile注解
下面2个不同的类实现了同一个接口,@Profile注解指定了具体环境

<code class="hljs java has-numbering"><span class="hljs-comment">// 接口定义</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">SendMessage</span> {</span>

    <span class="hljs-comment">// 发送短信方法定义</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">send</span>();

}

<span class="hljs-comment">// Dev 环境实现类</span>
<span class="hljs-annotation">@Component</span>
<span class="hljs-annotation">@Profile</span>(<span class="hljs-string">"dev"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DevSendMessage</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">SendMessage</span> {</span>

    <span class="hljs-annotation">@Override</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">send</span>() {
        System.out.println(<span class="hljs-string">">>>>>>>>Dev Send()<<<<<<<<"</span>);
    }

}

<span class="hljs-comment">// Stg环境实现类</span>
<span class="hljs-annotation">@Component</span>
<span class="hljs-annotation">@Profile</span>(<span class="hljs-string">"stg"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StgSendMessage</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">SendMessage</span> {</span>

    <span class="hljs-annotation">@Override</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">send</span>() {
        System.out.println(<span class="hljs-string">">>>>>>>>Stg Send()<<<<<<<<"</span>);
    }

}

<span class="hljs-comment">// 启动类</span>
<span class="hljs-annotation">@SpringBootApplication</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ProfiledemoApplication</span> {</span>

    <span class="hljs-annotation">@Value</span>(<span class="hljs-string">"${app.name}"</span>)
    <span class="hljs-keyword">private</span> String name;

    <span class="hljs-annotation">@Autowired</span>
    <span class="hljs-keyword">private</span> SendMessage sendMessage;

    <span class="hljs-annotation">@PostConstruct</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span>(){
        sendMessage.send();<span class="hljs-comment">// 会根据profile指定的环境实例化对应的类</span>
    }

}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

3、logback-spring.xml也支持有节点来支持区分

<code class="hljs xml has-numbering"><span class="hljs-pi"><?xml version="1.0" encoding="UTF-8"?></span>
<span class="hljs-tag"><<span class="hljs-title">configuration</span>></span>
    <span class="hljs-tag"><<span class="hljs-title">include</span> <span class="hljs-attribute">resource</span>=<span class="hljs-value">"org/springframework/boot/logging/logback/base.xml"</span> /></span>
    <span class="hljs-tag"><<span class="hljs-title">logger</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"org.springframework.web"</span> <span class="hljs-attribute">level</span>=<span class="hljs-value">"INFO"</span>/></span>

    <span class="hljs-tag"><<span class="hljs-title">springProfile</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"default"</span>></span>
        <span class="hljs-tag"><<span class="hljs-title">logger</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"org.springboot.sample"</span> <span class="hljs-attribute">level</span>=<span class="hljs-value">"TRACE"</span> /></span>
    <span class="hljs-tag"></<span class="hljs-title">springProfile</span>></span>

    <span class="hljs-tag"><<span class="hljs-title">springProfile</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"dev"</span>></span>
        <span class="hljs-tag"><<span class="hljs-title">logger</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"org.springboot.sample"</span> <span class="hljs-attribute">level</span>=<span class="hljs-value">"DEBUG"</span> /></span>
    <span class="hljs-tag"></<span class="hljs-title">springProfile</span>></span>

    <span class="hljs-tag"><<span class="hljs-title">springProfile</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"staging"</span>></span>
        <span class="hljs-tag"><<span class="hljs-title">logger</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"org.springboot.sample"</span> <span class="hljs-attribute">level</span>=<span class="hljs-value">"INFO"</span> /></span>
    <span class="hljs-tag"></<span class="hljs-title">springProfile</span>></span>

<span class="hljs-tag"></<span class="hljs-title">configuration</span>></span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

再说一遍文件名不要用logback.xml 请使用logback-spring.xml

四、指定外部的配置文件

有些系统,关于一些数据库或其他第三方账户等信息,由于安全问题,其配置并不会提前配置在项目中暴露给开发人员。
对于这种情况,我们在运行程序的时候,可以通过参数指定一个外部配置文件。
以 demo.jar 为例,方法如下:

<code class="hljs avrasm has-numbering">java -jar demo<span class="hljs-preprocessor">.jar</span> --spring<span class="hljs-preprocessor">.config</span><span class="hljs-preprocessor">.location</span>=/opt/config/application<span class="hljs-preprocessor">.properties</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets_01.png" /></a></div>

其中文件名随便定义,无固定要求。

五、创建一个Linux 应用的sh脚本

下面几个脚本仅供参考,请根据自己需要做调整
start.sh

<code class="hljs bash has-numbering"><span class="hljs-shebang">#!/bin/sh
</span>
rm <span class="hljs-operator">-f</span> tpid

nohup java -jar myapp.jar --spring.config.location=application.yml > /dev/null <span class="hljs-number">2</span>>&<span class="hljs-number">1</span> &

<span class="hljs-built_in">echo</span> $! > tpid

<span class="hljs-built_in">echo</span> Start Success!
</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

stop.sh

<code class="hljs bash has-numbering"><span class="hljs-shebang">#!/bin/sh</span>
APP_NAME=myapp

tpid=`ps -ef|grep <span class="hljs-variable">$APP_NAME</span>|grep -v grep|grep -v kill|awk <span class="hljs-string">'{print $2}'</span>`
<span class="hljs-keyword">if</span> [ <span class="hljs-variable">${tpid}</span> ]; <span class="hljs-keyword">then</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">'Stop Process...'</span>
    kill -<span class="hljs-number">15</span> <span class="hljs-variable">$tpid</span>
<span class="hljs-keyword">fi</span>
sleep <span class="hljs-number">5</span>
tpid=`ps -ef|grep <span class="hljs-variable">$APP_NAME</span>|grep -v grep|grep -v kill|awk <span class="hljs-string">'{print $2}'</span>`
<span class="hljs-keyword">if</span> [ <span class="hljs-variable">${tpid}</span> ]; <span class="hljs-keyword">then</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">'Kill Process!'</span>
    kill -<span class="hljs-number">9</span> <span class="hljs-variable">$tpid</span>
<span class="hljs-keyword">else</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">'Stop Success!'</span>
<span class="hljs-keyword">fi</span>

</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

check.sh

<code class="hljs bash has-numbering"><span class="hljs-shebang">#!/bin/sh</span>
APP_NAME=myapp

tpid=`ps -ef|grep <span class="hljs-variable">$APP_NAME</span>|grep -v grep|grep -v kill|awk <span class="hljs-string">'{print $2}'</span>`
<span class="hljs-keyword">if</span> [ <span class="hljs-variable">${tpid}</span> ]; <span class="hljs-keyword">then</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">'App is running.'</span>
<span class="hljs-keyword">else</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">'App is NOT running.'</span>
<span class="hljs-keyword">fi</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>

kill.sh

<code class="hljs bash has-numbering"><span class="hljs-shebang">#!/bin/sh</span>
APP_NAME=myapp

tpid=`ps -ef|grep <span class="hljs-variable">$APP_NAME</span>|grep -v grep|grep -v kill|awk <span class="hljs-string">'{print $2}'</span>`
<span class="hljs-keyword">if</span> [ <span class="hljs-variable">${tpid}</span> ]; <span class="hljs-keyword">then</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">'Kill Process!'</span>
    kill -<span class="hljs-number">9</span> <span class="hljs-variable">$tpid</span>
<span class="hljs-keyword">fi</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="display: none;"><a target=_blank href="javascript:;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" /></a></div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值