nohup運(yùn)行Java tail查看日志方式
nohup運(yùn)行Java tail查看日志
后臺(tái)運(yùn)行命令:nohup
nohup命令
:nohup是不掛斷的意思( no hang up)。- 如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺得在退出帳戶時(shí)該進(jìn)程還不會(huì)結(jié)束,那么可以使用nohup命令。
- 該命令忽略所有掛(SIGHUP)信號(hào),可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。
該命令的一般格式為:
nohup yourcommand &
yourcommand
:?jiǎn)?dòng)對(duì)象命令。可以跟該命令需要的各種參數(shù)。- &是指在后臺(tái)運(yùn)行,但當(dāng)用戶推出(掛起)的時(shí)候,命令自動(dòng)也跟著退出. nohup與&結(jié)合起來,可以實(shí)現(xiàn)不掛斷的后臺(tái)運(yùn)行。
實(shí)現(xiàn)屏幕輸出記錄到日志文件
nohup yourcommand 2>&1 &
- 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
- 2>&1是將標(biāo)準(zhǔn)錯(cuò)誤(2)重定向到標(biāo)準(zhǔn)輸出(&1),標(biāo)準(zhǔn)輸出(&1)再被重定向輸入到日志文件中。
如果希望將日志輸出到別的文件中,可以增加一個(gè)文件路徑參數(shù)。
如下:
nohup yourcommand >myout.log 2>&1 &
其中myout.log是保存輸出的文件名稱;
運(yùn)行Java
nohup java -jar XXX.jar &
命令介紹
當(dāng)您在命令行中執(zhí)行 nohup java -jar XXX.jar & 命令時(shí),nohup 是一個(gè)在 Unix/Linux 系統(tǒng)中使用的命令,用于在后臺(tái)運(yùn)行程序,并忽略 HUP(Hangup)信號(hào),保證程序在用戶注銷或終端關(guān)閉時(shí)仍然可以繼續(xù)運(yùn)行。
nohup 命令會(huì)將程序的輸出重定向到一個(gè)名為 nohup.out 的文件,默認(rèn)情況下,該文件會(huì)在當(dāng)前目錄下創(chuàng)建。
因此,當(dāng)您執(zhí)行 nohup java -jar XXX.jar & 后,程序的輸出(包括日志)將會(huì)被重定向到 nohup.out 文件中。
添加額外參數(shù)
例如,我們需要在命令行設(shè)置端口信息
nohup java -jar XXX.jar --server.port=8080 &
修改日志輸出地址
nohup java -jar XXX.jar --server.port=8080 > /path/to/logfile.log &
> /path/to/logfile.log 部分將日志輸出重定向到指定的日志文件中。請(qǐng)將 /path/to/logfile.log 替換為您希望使用的實(shí)際日志文件路徑。
通過執(zhí)行上述命令,您將在后臺(tái)運(yùn)行 XXX.jar 文件,并將日志輸出到指定的日志文件中。
請(qǐng)注意,如果指定的日志文件路徑不存在,系統(tǒng)將自動(dòng)創(chuàng)建該文件。
實(shí)時(shí)監(jiān)測(cè)日志輸出內(nèi)容命令:tail
1、tail 命令可用于查看文件的內(nèi)容,參數(shù) -f 常用于查閱正在改變的日志文件,如實(shí)時(shí)查看 Java 應(yīng)用程序輸出的日志信息。
2、tail -f filename 會(huì)把 filename 文件里的最尾部的內(nèi)容顯示在屏幕上,并且不斷刷新,只要 filename 更新就可以看到最新的文件內(nèi)容。
參數(shù) 描述
-f
循環(huán)讀取-q
不顯示處理信息-v
顯示詳細(xì)的處理信息-c
<數(shù)目> 顯示的字節(jié)數(shù)-n
<行數(shù)> 顯示文件的尾部 n 行內(nèi)容--pid=PID
與-f合用,表示在進(jìn)程ID,PID死掉之后結(jié)束-q
--quiet, --silent 從不輸出給出文件名的首部-s
--sleep-interval=S 與-f合用,表示在每次反復(fù)的間隔休眠S秒
常見用法舉例
舉例 描述
tail notes.log 顯示當(dāng)前目錄下 notes.log 文件的最后 10 行信息 tail -f notes.log 跟蹤當(dāng)前目錄下名為 notes.log 的文件的增長(zhǎng)情況,按 ctrl + c 可以退出跟蹤 tail -c 10 notes.log 顯示當(dāng)前目錄下 notes.log 文件的最后 10 個(gè)字符 tail -f -n 50 nohup.out 實(shí)時(shí)顯示 nohup.out 文件的最后 50 條信息,行數(shù)可以自己定義。 tail -f xxx.log ----實(shí)時(shí)刷新最新日志 tail -100f xxx.log --------實(shí)時(shí)刷新最新的100行日志 tail -100f xxx.log | grep [關(guān)鍵字] -------查找最新的一百行中與關(guān)鍵字匹配的行 tail -100f xxx.log | grep '2019-10-29 16:4[0-9]' ------查找最新的100行中時(shí)間范圍在2019-10-29 16:40-2019-10-29 16:49范圍中的行 tail -1000f xxx.log | grep -A 5 [關(guān)鍵字] ----------查看最新的1000行中與關(guān)鍵字匹配的行加上匹配行后的5行
舉例 描述
- tail 命令是nohup命令的好搭檔。配合-f參數(shù),可以實(shí)時(shí)監(jiān)視向日志文件增加的信息。
tail -f myout.log
- tail -f 等同于–follow=descriptor,根據(jù)文件描述符進(jìn)行追蹤,當(dāng)文件改名或被刪除,追蹤停止
- tail -F 等同于–follow=name --retry,根據(jù)文件名進(jìn)行追蹤,并保持重試,即該文件被刪除或改名后,如果再次創(chuàng)建相同的文件名,會(huì)繼續(xù)追蹤
- tailf 等同于tail -f -n 10,與tail -f不同的是,如果文件不增長(zhǎng),它不會(huì)去訪問磁盤文件,所以tailf特別適合那些便攜機(jī)上跟蹤日志文件,因?yàn)樗鼫p少了磁盤訪問,可以省電。
監(jiān)測(cè)程序是否在正常運(yùn)行中:ps
ps命令也可以和nohup命令配合使用,用于顯示當(dāng)前進(jìn)程 (process) 的狀態(tài)。可以監(jiān)視后臺(tái)程序是否在正常運(yùn)行中或者已經(jīng)掛掉。
ps -ef|grep yourcommand
grep 的參數(shù)
(縮寫來自Globally search a Regular Expression and Print)是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。
-a
或--text
: 不要忽略二進(jìn)制的數(shù)據(jù)。-A<顯示行數(shù)>
或--after-context=<顯示行數(shù)>
: 除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。-b
或--byte-offset
: 在顯示符合樣式的那一行之前,標(biāo)示出該行第一個(gè)字符的編號(hào)。-B<顯示行數(shù)>
或--before-context=<顯示行數(shù)>
: 除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。-c
或--count
: 計(jì)算符合樣式的列數(shù)。-C<顯示行數(shù)>
或--context=<顯示行數(shù)>
或-<顯示行數(shù)>
: 除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。-d <動(dòng)作>
或--directories=<動(dòng)作>
: 當(dāng)指定要查找的是目錄而非文件時(shí),必須使用這項(xiàng)參數(shù),否則grep指令將回報(bào)信息并停止動(dòng)作。-e<范本樣式>
或--regexp=<范本樣式>
: 指定字符串做為查找文件內(nèi)容的樣式。-E
或--extended-regexp
: 將樣式為延伸的正則表達(dá)式來使用。
-f<規(guī)則文件>
或 --file=<規(guī)則文件>
: 指定規(guī)則文件,其內(nèi)容含有一個(gè)或多個(gè)規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個(gè)規(guī)則樣式。
-F
或--fixed-regexp
: 將樣式視為固定字符串的列表。-G
或--basic-regexp
: 將樣式視為普通的表示法來使用。-h
或--no-filename
: 在顯示符合樣式的那一行之前,不標(biāo)示該行所屬的文件名稱。-H
或--with-filename
: 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。-i
或--ignore-case
: 忽略字符大小寫的差別。-l
或--file-with-matches
: 列出文件內(nèi)容符合指定的樣式的文件名稱。-L
或--files-without-match
: 列出文件內(nèi)容不符合指定的樣式的文件名稱。-n
或--line-number
: 在顯示符合樣式的那一行之前,標(biāo)示出該行的列數(shù)編號(hào)。-o
或--only-matching
: 只顯示匹配PATTERN 部分。-q
或--quiet
或--silent
: 不顯示任何信息。-r
或--recursive
: 此參數(shù)的效果和指定"-d recurse"參數(shù)相同。-s
或--no-messages
: 不顯示錯(cuò)誤信息。-v
或--revert-match
: 顯示不包含匹配文本的所有行。-V
或--version
: 顯示版本信息。-w
或--word-regexp
: 只顯示全字符合的列。-x --line-regexp
: 只顯示全列符合的列。-y
: 此參數(shù)的效果和指定"-i"參數(shù)相同。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同
在Spring?Boot微服務(wù)中,MyBatis-Plus通過其Boot?Starter和豐富的配置屬性,極大的簡(jiǎn)化了MyBatis的集成和配置工作,尤其是對(duì)于全局設(shè)置和常用插件的使用,本文給大家介紹Spring?Boot?微服務(wù)中集成?MyBatis-Plus與集成原生?MyBatis?有哪些配置上的不同,感興趣的朋友一起看看吧2025-04-04SpringBoot 如何實(shí)現(xiàn)自定義Redis序列化
這篇文章主要介紹了SpringBoot 如何實(shí)現(xiàn)自定義Redis序列化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10關(guān)于Controller 層返回值的公共包裝類的問題
本文給大家介紹Controller 層返回值的公共包裝類-避免每次都包裝一次返回-InitializingBean增強(qiáng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09java組件SmartUpload和FileUpload實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了java組件SmartUpload和FileUpload實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Java實(shí)現(xiàn)FTP服務(wù)器功能實(shí)例代碼
FTP(File Transfer Protocol 文件傳輸協(xié)議)是Internet 上用來傳送文件的協(xié)議,本文給大家分享Java實(shí)現(xiàn)FTP服務(wù)器功能實(shí)例代碼,對(duì)java實(shí)現(xiàn)ftp服務(wù)器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12詳解SpringBoot中Session超時(shí)原理說明
本篇文章主要介紹了詳解SpringBoot中Session超時(shí)原理說明,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf
這篇文章主要介紹了基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11