Spring boot 工程升级脚本详解

版权声明:所有原创,转载请在开头注明出处 https://blog.csdn.net/SELECT_BIN/article/details/83152245


1.拷贝文件:

cp -rf /home/sdunicom/groupcenter/up/jar /home/sdunicom/groupcenter/

说明:这个比较基础,cp 目录A 目录B ,作用是把目录A里面的东西拷贝到目录B里面
-r 递归处理,指定目录下的文件和子目录一并处理
-f 强行复制,无论目标是否存在

2.杀进程:


ps -aux|grep spring.profiles.active=prod|grep -v grep|cut -c 9-15|xargs kill -9

说明“grep spring.profiles.active=prod”的输出结果是,所有含有关键字“spring.profiles.active=prod”的进程。

“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。


详解用到的几个命令:
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

解释下grep:

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。

cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

3.起服务:

java -jar -Duser.timezone=GMT+08 ../jar/activiti.jar --spring.profiles.active=test > /dev/null 2>&1 &

说明
java -jar jar包名    -指定要执行的jar包
-Duser.timezone=GMT+08 //设置为北京时间

使用开发工具,运行Application.java文件启动,则增加参数--spring.profiles.active=test

&是把该命令以后台的job的形式运行。那么就剩下command>/dev/null 2>&1,
command>/dev/null较好理解,/dev/null表示一个空设备,就是说把command的执行结果重定向到空设备中,说白了就是不显示任何信息。

/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误

番外篇:
通过命令行设置属性值
相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888,通过使用--server.port属性来设置xxx.jar应用的端口为8888。

在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。

测试不同配置的加载:
     执行java -jar xxx.jar,可以观察到服务端口被设置为8080,也就是默认的开发环境(dev)
 
     执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为9090,也就是测试环境的配置(test)
 
     执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为80,也就是生产环境的配置(prod)

4.升级的时候为了提高效率设置别名

比如查看进程:

ps -ef | grep spring.profiles.active | grep -v grep

 

脚本目录与日志目录切换(尤其对于大型的工程)等等

解释下ps:

ps [选项]
下面对命令选项进行说明:
-e   显示所有进程。
-f    全格式。
-h   不显示标题。
-l    长格式。
-w  宽输出。
a    显示终端上的所有进程,包括其他用户的进程。
r    只显示正在运行的进程。
u  以用户为主的格式来显示程序状况。
x     显示所有程序,不以终端机来区分。

另外:
ps -ef 显示出的结果:
    1.UID       用户ID
    2.PID        进程ID
    3.PPID      父进程ID
    4.C           CPU占用率
    5.STIME     开始时间
    6.TTY         开始此进程的TTY----终端设备
    7.TIME       此进程运行的总时间
    8.CMD       命令名
--------------------- 
作者:猴子年华 
来源:CSDN 
原文:https://blog.csdn.net/lg632/article/details/52556139 
版权声明:本文为博主原创文章,转载请附上博文链接!

别名设置:

4.1.alias

   :查看系统中所有的命令别名

4.2.设定别名

   alias 别名='原命令'

4.3.删除别名

  unalias 别名

4.4.使别名永久生效

   vi  ~/.bashrc  写入这个文件中即可永久生效   编辑完之后记得使环境变量生效: source .bashrc

参考 / 资料收集:

https://www.cnblogs.com/duyinqiang/p/5696342.html

https://www.cnblogs.com/jimboi/p/8108241.html

https://blog.csdn.net/andy572633/article/details/7211546

https://blog.csdn.net/hjxu2016/article/details/55047043

https://www.cnblogs.com/qianjinyan/p/9244746.html

https://www.cnblogs.com/qianjinyan/p/9789765.html

猜你喜欢

转载自blog.csdn.net/SELECT_BIN/article/details/83152245