當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

linux下啟動(dòng)Tomact排查問題
2022-02-14 14:02:03


Linux下啟動(dòng)Tomcat啟動(dòng)并顯示控制臺(tái)日志信息

Windows下啟動(dòng)tomcat,一般直接運(yùn)行startup.bat,啟動(dòng)后顯示一些控制臺(tái)啟動(dòng)的日志信息,就好像我們在編程序時(shí)候打印在控制臺(tái)中的一樣的。如果沒有這些信息我們就好像沒有眼睛的盲人瞎折騰,根本就搞不定這些問題。好好的去理解這個(gè)很有必要。借助前人的優(yōu)秀的設(shè)計(jì)標(biāo)準(zhǔn)的打印在logs的日記中,存在的只是我們沒有去看而已,碰巧沒有出問題,懶得出看。如果想查看日志文件的信息怎么辦啊!有兩種手段,看你喜歡哪種!

1. 可以通過運(yùn)行??./catalina.sh?? run啟動(dòng),就可以像windows中一樣查看tomcat啟動(dòng)信息了

2. 還是使用??./startup.sh??,不過我們可以通過去查看logs下面的目錄catalina.out中去查看日志的信息,這個(gè)比較簡單了吧??cat catalina.out 或者tail -f catalina.out??

3. 上面的問題已經(jīng)解決了還是不能啟動(dòng)無非就是端口號(hào)被占用,數(shù)據(jù)庫連接不上,程序有問題,驚呆了…??`kill -9 xxxxx??先殺死你回家在看看再說。到底啟動(dòng)沒有可以看看下面的繼續(xù)進(jìn)行。

查看啟動(dòng)的進(jìn)程命令行

Linux下直接啟動(dòng)./startup.sh但是查看不到啟動(dòng)日志信息,通過??ps –ef|grep tomcat??查看,實(shí)際已經(jīng)啟動(dòng),或者通過??ps -ef |grep java??

因?yàn)閠omact是java寫的,java可以查看一下到底啟動(dòng)了沒有,是不是很簡單。除此之外對于一個(gè)web程序來說,端口綁定被占用也是常有發(fā)生的,看看端口的信息是否正常,通常的命令是??netstat -tln??這個(gè)只是查看到了當(dāng)前的端口的占用的情況,并不知道是那個(gè)進(jìn)程占用了,所以還需要加一個(gè)參數(shù) -p ??netstat -tlnp??曉得了哪個(gè)程序占用了,直接把這個(gè)進(jìn)程干掉就行了。除了這個(gè)之外呢,有時(shí)候這個(gè)端口太多了,怎么辦呢?過濾一下子處理。??netstat -tlnp |grep 8080??除了上面的這個(gè)可以查看端口的占用來看但是我記不住啊,怎么辦還有個(gè)比較牛的命令也是很不錯(cuò)哦的分享給大家。??lsof -i:8080 或者 lsof -i|grep 8080??

lsof簡介

lsof(list open files)是一個(gè)列出當(dāng)前系統(tǒng)打開文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以如傳輸控制協(xié)議 (TCP) 和用戶數(shù)據(jù)報(bào)協(xié)議 (UDP) 套接字等,系統(tǒng)在后臺(tái)都為該應(yīng)用程序分配了一個(gè)文件描述符,無論這個(gè)文件的本質(zhì)如何,該文件描述符為應(yīng)用程序與基礎(chǔ)操作系統(tǒng)之間的交互提供了通用接口。因?yàn)閼?yīng)用程序打開文件的描述符列表提供了大量關(guān)于這個(gè)應(yīng)用程序本身的信息,因此通過lsof工具能夠查看這個(gè)列表對系統(tǒng)監(jiān)測以及排錯(cuò)將是很有幫助的。具體怎么使用可以查看man lsof 或者info lsof這個(gè)是linux給予我們最大的好處,隨時(shí)可以查,但是基本的東西還是需要記住一點(diǎn)點(diǎn),使用的時(shí)候才能手到擒來。要學(xué)會(huì)自己查找資料嘛 ??man lsof???這里面有很多的參數(shù),我這只想了解-i參數(shù)代表網(wǎng)絡(luò)。查詢具體的端口號(hào)??lsof -i:8080 或者 lsof -i|grep 8080??

在終端下輸入lsof即可顯示系統(tǒng)打開的文件,因?yàn)閘sof需要訪問核心內(nèi)存和各種文件,所以必須以 root用戶的身份運(yùn)行它才能夠充分地發(fā)揮其功能。

還有很多的有用的命令行參數(shù)呢:

1. lsof filename 顯示打開指定文件的所有進(jìn)程

2. lsof -c string 顯示COMMAND列中包含指定字符的進(jìn)程所有打開的文件(比如Java)

3. lsof -u username 顯示所屬user進(jìn)程打開的文件

4. lsof +d /DIR/ 顯示目錄下被進(jìn)程打開的文件(感覺這個(gè)很有用,查看當(dāng)前目錄下打開的進(jìn)程)

5. lsof +D /DIR/ 同上,但是會(huì)搜索目錄下的所有目錄,時(shí)間相對較長

在查看catalina.out的時(shí)候夠累

每次啟動(dòng)一次錯(cuò)誤的信息太多了…..簡直不想在看下去了!怎么辦怎么辦呢??我就是想清空文件而已就是這么簡單,看看方法使用重定向搞定分分鐘,使用起來特別爽,你也可以來試試。

1. ??$ : > filename??

2. ??$ > filename??

3. ??$ echo "" > filename?? 我喜歡使用這種好理解

4. ??$ echo > filename??

5. ??$ cat /dev/null > filename??

tail - 輸出文件尾部/動(dòng)態(tài)監(jiān)視文件尾部

相對于上面這個(gè)來說,這個(gè)簡單了很多!直接查看文件的尾部就可以知道到時(shí)是不是啟動(dòng)了。error你在哪里。

用途:tail命令可以輸出文件的尾部內(nèi)容,默認(rèn)情況下它顯示文件的最后十行。它常用來動(dòng)態(tài)監(jiān)視文件的尾部內(nèi)容的增長情況,比如用來監(jiān)視日志文件的變化。與tail命令對應(yīng)的是head命令,用來顯示文件頭部內(nèi)容。


  1. ??tail file?? 輸出指定文件file的尾部內(nèi)容,默認(rèn)輸出最后十行內(nèi)容
  2. ??tail file1 file2 ...??指定多個(gè)文件時(shí),會(huì)顯示每個(gè)文件的文件名稱,再顯示該文件的尾部內(nèi)容
  3. ??tail -n file???顯示文件最后n 行。tail -n可以顯示最后n行的文本內(nèi)容。那么有沒有一種方式顯示從n行開始的文本內(nèi)容,答案是肯定的。??tail -n +4 file??表示顯示文件file從第4行開始的內(nèi)容。從1開始計(jì)數(shù)。
  4. ??tail -f file?? 動(dòng)態(tài)跟蹤文件file的增長情況,tail會(huì)每隔一秒去檢查一下文件是否增加新的內(nèi)容,如果增加就追加在原來的輸出后面顯示。但這種情況,必須保證在執(zhí)行tail命令時(shí),文件已經(jīng)存在。如果想終止tail -f的輸出,按Ctrl+C中斷tail程序即可.

在Linux的下面部署了tomcat

在Linux的下面部署了tomcat,為了安全我們使用非root用戶進(jìn)行啟動(dòng),但是在域名綁定時(shí)無法直接訪問80端口號(hào)。眾所周知,在unix下,非root用戶不能監(jiān)聽1024以上的端口號(hào),這個(gè)tomcat服務(wù)器就沒辦法綁定在80端口下。所以這里需要使用linux的端口轉(zhuǎn)發(fā)機(jī)制,把到80端口的服務(wù)請求都轉(zhuǎn)到8080端口上。

  • 安裝 iptables-persistent
sudo apt-get update
sudo apt-get install iptables-persistent
  • 添加 80 端口跳轉(zhuǎn)到 8080 規(guī)則
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
  • 保存跳轉(zhuǎn)規(guī)則
sudo service iptables-persistent save

參考


  1. ??http://codingstandards.iteye.com/blog/832575?? tail


本文摘自 :https://blog.51cto.com/u

開通會(huì)員,享受整站包年服務(wù)立即開通 >