1. 程式人生 > >Spring boot 工程升級指令碼詳解

Spring boot 工程升級指令碼詳解


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