指定Springboot应用启动端口及设置Linux下后台启动
最近开发了一个小项目使用到了Springboot,部署的时候由于采用jar方式,运维表示和传统的war方式相比有些不习惯。
想要让其后台运行以及能够设置启动端口。
和传统的容器部署相比,springboot在内部用properties文件指定了启动的端口,而传统方式(以tomcat为例)是通过
容器的conf中的server.xml指定的端口。
其实达到目的很简单。命令如下:
制定启动时端口
java -jar -Dserver.port=9999 boot.jar
通过-Dserver.port=xxxx xxxx即为想要指定的端口号,只要注意没被占用即可
设置Linux下后台运行
java -jar -Dserver.port=9999 boot.jar &
&放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,
我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。
如:
snowalker > run &
[1] 11319
snowalker >
进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319
例:[1]表示job ID是1,11319表示进程ID是11319。
切换到后台的进程,仍然可以用ps命令查看。
补充
前后台间切换
可以通过bg <jobid>(background)和fg<jobid>(foreground)命令将其在前后台间状态切换。
守护进程
如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。
守护进程值得是系统长期运行的后台进 程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,
当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。
snowalker > ps xj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
953 1190 1190 1190 ? -1 Ss 1000 0:00 /bin/sh /usr/bin/startkde
1 1490 1482 1482 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –seamless
1 1491 1477 1477 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –display
创建守护进程最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。成功调用该函数的结果是:
创建一个新的Session,当前进程成为Session Leader,当前进程的id就是Session的id
创建一个新的进程组,当前进程成为进程组的Leader,当前进程的id就是进程组的id
如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。
&&
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;
当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。
有 时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行
失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返
回值来控制其后面命令的执行。
语法格式如下:
command1 && command2 [&& command3 ...]
- 命令之间使用 && 连接,实现 逻辑与的功能。
- 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。 –短路的功能
command1 || command2 [|| command3 ...]
命令之间使用 || 连接,实现 逻辑或的功能。
- 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,
即实现短路逻辑或操作。 - 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。 –直到返回真的地方停止执行。