原文地址:http://www.isee.xyz/a/5ea2a30dcfe99271725ca17b
nohup
nohup
是no hang up
不掛起的意思,如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺(jué)得在退出帳戶(hù)時(shí)該進(jìn)程還不會(huì)結(jié)束诊沪,那么可以使用nohup
命令浑塞。該命令可以在你退出帳戶(hù)/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程烙丛。==該命令運(yùn)行后是前臺(tái)進(jìn)程==
eg: nobup java -jar xxx.jar
&
&
指讓程序后臺(tái)運(yùn)行
eg:java -jar xxx.jar &
兩者特點(diǎn)
使用nohup運(yùn)行程序:
結(jié)果默認(rèn)會(huì)輸出到nohup.out
使用Ctrl + C發(fā)送SIGINT信號(hào)跳纳,程序關(guān)閉
關(guān)閉session發(fā)送SIGHUP信號(hào)疟暖,程序免疫
使用&后臺(tái)運(yùn)行程序:
結(jié)果會(huì)輸出到終端
使用Ctrl + C發(fā)送SIGINT信號(hào)紊搪,程序免疫
關(guān)閉session發(fā)送SIGHUP信號(hào)蜜葱,程序關(guān)閉
使用兩者結(jié)合讓程序后臺(tái)運(yùn)行
結(jié)合上面兩個(gè)命令可以讓程序后臺(tái)運(yùn)行,關(guān)閉窗口或者 ctrl+c
都不會(huì)中斷進(jìn)程
nohup java -jar xxx.jar &
耀石,
日志文件的處理
類(lèi)型 | 文件描述符 | 含義 |
---|---|---|
標(biāo)準(zhǔn)輸入(standard input) | 0 | 從鍵盤(pán)輸入 |
標(biāo)準(zhǔn)輸出(standard output) | 1 | 輸出到屏幕(控制臺(tái)) |
錯(cuò)誤輸出(error output) | 2 | 輸出到屏幕(控制臺(tái)) |
使用nohup java -jar xxx.jar
命令會(huì)默認(rèn)生成一個(gè) nohup.out
文件來(lái)記錄日志牵囤,標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都會(huì)在該文件中。
如果我們要將日志輸出到指定的其他文件時(shí)可以使用輸出符號(hào) >
指定你的文件娶牌。例如將文件輸出到log.txt
中可以使用命令:nohup java -jar xxx.jar 1>log.txt
字符1
可以省略奔浅,這樣標(biāo)準(zhǔn)輸出日志會(huì)輸出到 log.txt
文件中,但是錯(cuò)誤的日志怎么處理呢诗良?我需要使用到==命令的重定向綁定==汹桦。修改命令為:nohup java -jar xxx.jar >log.txt 2>&1 &
將錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出1
中,這樣標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都會(huì)在log.txt
文件中鉴裹。
如果不需要日志該如何設(shè)置
有的時(shí)候程序中已經(jīng)指定了日志的位置舞骆,那么就不需要nohup.out
文件了钥弯,這時(shí)候要丟棄這個(gè)文件。
/dev/null
代表linux的空設(shè)備文件督禽,所有往這個(gè)文件里面寫(xiě)入的內(nèi)容都會(huì)丟失脆霎,俗稱(chēng)黑洞
,
我們可以把日志輸出指向這里: nohup java -jar xxx.jar >/dev/null 2>&1
總結(jié)
==后臺(tái)啟動(dòng)并且不需要nohup.out
文件的命令:==
nohup java -jar xxx.jar >/dev/null 2>&1 &