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