網上的解釋一堆,寫的亂七八糟的,看的我發懵,親測后整理如下:
首先,在jar包所在目錄下,正常啟動一個名為***.jar包標准命令:
[root@localhost data]# nohup java -jar ***.jar >nohup.log 2>&1 &
啟動之后,會在jar所在目錄生成一個nuhup.log日志文件,記錄控制台的日志輸出。
但這是什么意思呢?
划重點!划重點!!!其實就是兩個要點:輸出什么 和 輸出到哪 。
他們以符號“>”進行划分,符號左邊是輸出什么,符號右邊是輸出到哪。
1.輸出什么
輸出分為標准輸出和錯誤輸出,標准輸出就是全輸出,輸出控制台信息;錯誤輸出只是輸出錯誤日志信息。
> 符號左邊沒有1和2,啥數字也不寫只有一個右箭頭,默認標准輸出。
1> 符號左邊是1,標准輸出。
2> 符號左邊是2,錯誤輸出。
因此上面我們執行的 ***.jar >nohup.log 2>&1命令,可以拆解成 > nohup.log 和 2> &1兩個輸出,只看符號“>”左邊輸出部分,分別代表默認標准輸出到一個地方,然后錯誤日志輸出到另一個地方,咱們后面再講輸出到什么地方。
2.輸出到哪
輸出到哪,分為輸出到指定路徑日志文件和重定向位置。
指定路徑文件好理解,就是指定一個地址而已,如下:
> /data/work/log.log
這樣便是指定輸出到路徑/data/work/log.log文件。
Linux上有一個特例路徑/dev/null ,這路徑就好像永久刪除的回收站,當我們不需要輸出任何信息時,就可以將輸出指向/dev/null,那就不會有任何輸出文件。
至於重定向,就是將文件重定向到一個地址,如下:
> &1 重定向到標准輸出的地址,啥意思,就是輸出到已指定的標准輸出的地址。
> &2 重定向到錯誤輸出的地址,就是輸出到已指定的錯誤輸出的地址。
比如>nohup.log 2>&1 ,意思是前面默認標准輸出到了nohup.log日志下,后面錯誤輸出也指向標准輸出的地址,也即nohup.log日志下。
3.執行輸出 &,最后加一個&符號收尾。
舉例再解釋:
(1)nohup java -jar ***.jar >/data/log.log 2>/data/err.log &
解釋:標准日志輸出到/data/log.log文件,錯誤日志輸出到/data/err.log文件。
(2)nohup java -jar ***.jar >/data/log.log 2>&1 &
解釋:標准日志輸出到/data/log.log文件,錯誤日志重定向也輸出到/data/log.log文件。
(3)nohup java -jar ***.jar >/dev/null 2>/data/err.log &
解釋:標准日志輸出到/dev/null,也就是不輸出標准日志,錯誤日志輸出到/data/err.log文件。
一般采用上面(3)只輸出錯誤日志就可以了,有需要的按照(1)進行輸出。
轉載:http://t.csdn.cn/sLG6V