一般情況下運(yùn)行jar包邪媳,當(dāng)前是可運(yùn)行的jar包捐顷,直接命令
java -jar common.jar
按下ctrl+C ,關(guān)閉當(dāng)前ssh或者直接關(guān)閉窗口雨效,當(dāng)前程序都會退出簿煌。
我們在命令的結(jié)尾添加 “&” 粪摘,&表示該程序可以在后臺執(zhí)行
java -jar common.jar &
但是在當(dāng)窗口關(guān)閉時,程序也會中止運(yùn)行
nohup java -jar common.jar &
命令最前面?zhèn)€nohub關(guān)鍵字,這樣程序就會不掛斷運(yùn)行命令, 當(dāng)ssh終端關(guān)閉時,程序仍然在運(yùn)行伍玖,當(dāng)前程序的日志會被寫入到當(dāng)前目錄的nohup.out文件中
我們可以改下輸入的日志文件
nohup java -jar common.jar > log.out &
當(dāng)前程序的日志會被寫入到當(dāng)前目錄的log.out文件中
如果不想寫日志耗啦,可以將日志重定向到 /dev/null 中岳守,/dev/null代表linux的空設(shè)備文件艾杏,所有往這個文件里面寫入的內(nèi)容都會丟失
nohup java -jar common.jar > /dev/null &
標(biāo)準(zhǔn)輸出就會不再存在,沒有任何地方能夠找到輸出的內(nèi)容
nohup java -jar common-api.jar >/dev/null 2>log.error &
只輸出錯誤信息到日志文件极颓,標(biāo)準(zhǔn)輸出不寫入日志文件朱盐,直接丟棄
nohup java -jar common-api.jar >/dev/null 2>&1 &
標(biāo)準(zhǔn)輸出(stdout)重定向到/dev/null中(丟棄標(biāo)準(zhǔn)輸出),然后標(biāo)準(zhǔn)錯誤輸出(stderror)由于重用了標(biāo)準(zhǔn)輸出的描述符讼昆,所以標(biāo)準(zhǔn)錯誤輸出也被定向到了/dev/null中托享,錯誤輸出同樣也被丟棄了
nohup java -jar common-api.jar >log.out 2>&1 &
標(biāo)準(zhǔn)輸出重定向到log.out中,然后錯誤輸出由于重用了標(biāo)準(zhǔn)輸出的描述符浸赫,所以錯誤輸出也被定向到了log.out中
但是不管那種情況闰围,如果日志輸出,日志文件都會增加很快既峡,造成單個文件很大羡榴。所以需要拆分文件
1:定時作業(yè),每天將日志文件復(fù)制一份运敢,然后將當(dāng)前的日志文件清空校仑。
2:借助 cronolog來分隔日志
nohup java -jar common-api.jar | /usr/local/cronolog/sbin/cronolog logs/console-%Y-%m-%d.out &
這樣每天會產(chǎn)生一個console開頭的日志文件。