Java部署項目命令學習小結

前言: 暫無html

零:java -h

     和不少linux命令同樣,咱們第一步先經過「java -h」命令查看java命令的使用語法,其輸出以下java

[root@wxapp203 basesoft]# java -h Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) where options include: -d32          use a 32-bit data model if available -d64          use a 64-bit data model if available -server       to select the "server" VM The default VM is server, because you are running on a server-class machine. -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files> A : separated list of directories, JAR archives, and ZIP archives to search for class files. -D<name>=<value> set a system property -verbose:[class|gc|jni] enable verbose output -version      print product version and exit

有圖咱們可知java有兩種格式(對應兩種功能)的使用方法,linux

功能一:執行一個class文件spring

功能二:執行一個jar文件shell

一:java [-options] -jar jarfile [args...]

   可選參數[-options] : 沒使用過,但其介紹可猜想 服務器

   必選參數 -jar         :指定該命令是運行的是個jar或war文件oracle

   必選參數 **jarfile   :指定運行的文件app

   可選參數[args.....] :  用過一個就是‘&’指定該jar文件後臺掛起,下面介紹。this

備註:可執行spring boot的war包項目spa

二:不指定任何參數運行jar文件

  java  -jar  ***jarFile

  該使用方式,當退出控制檯jar項目也會退出(大多數狀況都不實用)

三:經過在***jarFile文件後指定參數「&」

      java  -jar  ***jarFile  &

      該方式啓動jar項目,當退出通知臺該jar項目也會一直運行,可解決二的問題(以前我也是這樣啓動的),但後來發現,即便我退出了控制檯,項目裏面打印的日誌文件會輸出到當前控制檯(即兩個控制檯不是一個)。後經分析可知,該命令沒有指定該進程的輸出流到哪裏,默認輸出流(和項目裏的日誌輸出不同,即便輸出的東西是同樣的)是當前控制檯。因此要解決該問題就要解決指定該輸出流到哪裏?故可參考以下命令

四:指定該項目(進程)的輸出流

     java  -jar  ***jarFile  > ./test.log  &

     可選參數:> ./test.log (注意中間空格) 指定進程(項目)的輸出了到當前目錄下的test.log文件

                     備註>該參數只指定了標準輸出流,並無指定標準錯誤輸出

     可選參數:’&’ 後臺掛起

五 :標準使用方式

      爲保險起見咱們也能夠把標準錯誤輸出流寫到文件中去(也就是說若是上面進程出現錯誤了,仍是會把錯誤信息輸出到當前控制檯的),

       java  -jar  ***jarFile  > ./test.log  2>&1 &

      備註:2>&1  >2表明標準錯誤輸出流  1表明標準輸出流   &是合併的意思。0表明輸入流

      備註:由於咱們已經在項目中有輸出日誌(也就是說上面的命令會輸出兩個同樣的日誌內容  一個是項目中打印的日誌(由你的項目決定),一個就是該命令產生的日誌test.log(有服務器系統決定)),爲節省資源咱們能夠忽略服務器系統打印的日誌。故咱們可使用以下命令

  java  -jar  ***jarFile  > /dev/null  2>&1 &  

       備註:該命令把輸出全部輸出流輸出到文件/dev/null下,該文件是系統設計的,即輸入到該文件的東西當即被拋棄不會產生多餘資源(便可變相實現不輸出的效果)

六:附加   nohup (短語:後臺運行)

     查看該語法使用   nohup --help  

[root@wxapp203 basesoft]# nohup  --help Usage: nohup COMMAND [ARG]... or: nohup OPTION Run COMMAND, ignoring hangup signals. --help display this help and exit --version output version information and exit If standard input is a terminal, redirect it from /dev/null. //標準輸入流 重定向到 /dev/null If standard output is a terminal, append output to `nohup.out' if possible, //即沒有指定輸出流是,默認追加到當前目錄下的nohup.out(無需本身建立)文件中。
`$HOME/nohup.out' otherwise.
If standard error is a terminal, redirect it to standard output. //標準錯誤輸出流,重定向到輸出流中,即2>&1
To save output to FILE, use `nohup COMMAND
> FILE'. //也能夠指定輸出流到文件 NOTE: your shell may have its own version of nohup, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

   故:咱們可使用   nohup  java  -jar  ***jarFile  > /dev/null   &   來替代標準五的使用

 例如   

$ nohup java -jar fwh_biz-0.0.1-SNAPSHOT.war > /dev/null &    //使用命令 [2] 10112 //返回進程id nohup: ignoring input and redirecting stderr to stdout //提示咱們 忽略了輸入流 而且把標準錯誤輸出流,重定向到輸出流中了,而咱們把輸出流重定向到/dev/null中,故什麼都不會輸出
[1] Killed nohup java -jar fwh_biz-0.0.1-SNAPSHOT.war
備註:這樣看來nohup的功能就是包裝(從效果上看它包裝了流的走向和一個提示功能)了咱們以前的命令.

    參考資料:1.http://www.javashuo.com/article/p-stwsseoo-mo.html (博客)   

2. http://www.runoob.com/linux/linux-shell-io-redirections.html(shell教程)

3.https://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/java.html (官方文檔)

相關文章
相關標籤/搜索