Linux下啟動Tomcat啟動并顯示控制臺日志信息
Windows下啟動tomcat,一般直接運(yùn)行startup.bat,啟動后顯示一些控制臺啟動的日志信息,就好像我們在編程序時候打印在控制臺中的一樣的。如果沒有這些信息我們就好像沒有眼睛的盲人瞎折騰,根本就搞不定這些問題。好好的去理解這個很有必要。借助前人的優(yōu)秀的設(shè)計標(biāo)準(zhǔn)的打印在logs的日記中,存在的只是我們沒有去看而已,碰巧沒有出問題,懶得出看。如果想查看日志文件的信息怎么辦啊!有兩種手段,看你喜歡哪種!
1. 可以通過運(yùn)行??./catalina.sh?
? run啟動,就可以像windows中一樣查看tomcat啟動信息了
2. 還是使用??./startup.sh?
?,不過我們可以通過去查看logs下面的目錄catalina.out中去查看日志的信息,這個比較簡單了吧??cat catalina.out 或者tail -f catalina.out?
?
3. 上面的問題已經(jīng)解決了還是不能啟動無非就是端口號被占用,數(shù)據(jù)庫連接不上,程序有問題,驚呆了…??`kill -9 xxxxx?
?先殺死你回家在看看再說。到底啟動沒有可以看看下面的繼續(xù)進(jìn)行。
查看啟動的進(jìn)程命令行
Linux下直接啟動./startup.sh但是查看不到啟動日志信息,通過??ps –ef|grep tomcat?
?查看,實際已經(jīng)啟動,或者通過??ps -ef |grep java?
?
因為tomact是java寫的,java可以查看一下到底啟動了沒有,是不是很簡單。除此之外對于一個web程序來說,端口綁定被占用也是常有發(fā)生的,看看端口的信息是否正常,通常的命令是??netstat -tln?
?這個只是查看到了當(dāng)前的端口的占用的情況,并不知道是那個進(jìn)程占用了,所以還需要加一個參數(shù) -p ??netstat -tlnp?
?曉得了哪個程序占用了,直接把這個進(jìn)程干掉就行了。除了這個之外呢,有時候這個端口太多了,怎么辦呢?過濾一下子處理。??netstat -tlnp |grep 8080?
?除了上面的這個可以查看端口的占用來看但是我記不住啊,怎么辦還有個比較牛的命令也是很不錯哦的分享給大家。??lsof -i:8080 或者 lsof -i|grep 8080?
?
lsof簡介
lsof(list open files)是一個列出當(dāng)前系統(tǒng)打開文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以如傳輸控制協(xié)議 (TCP) 和用戶數(shù)據(jù)報協(xié)議 (UDP) 套接字等,系統(tǒng)在后臺都為該應(yīng)用程序分配了一個文件描述符,無論這個文件的本質(zhì)如何,該文件描述符為應(yīng)用程序與基礎(chǔ)操作系統(tǒng)之間的交互提供了通用接口。因為應(yīng)用程序打開文件的描述符列表提供了大量關(guān)于這個應(yīng)用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統(tǒng)監(jiān)測以及排錯將是很有幫助的。具體怎么使用可以查看man lsof 或者info lsof這個是linux給予我們最大的好處,隨時可以查,但是基本的東西還是需要記住一點(diǎn)點(diǎn),使用的時候才能手到擒來。要學(xué)會自己查找資料嘛 ??man lsof?
??這里面有很多的參數(shù),我這只想了解-i參數(shù)代表網(wǎng)絡(luò)。查詢具體的端口號??lsof -i:8080 或者 lsof -i|grep 8080?
?
在終端下輸入lsof即可顯示系統(tǒng)打開的文件,因為lsof需要訪問核心內(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)程打開的文件(感覺這個很有用,查看當(dāng)前目錄下打開的進(jìn)程)
5. lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長
在查看catalina.out的時候夠累
每次啟動一次錯誤的信息太多了…..簡直不想在看下去了!怎么辦怎么辦呢??我就是想清空文件而已就是這么簡單,看看方法使用重定向搞定分分鐘,使用起來特別爽,你也可以來試試。
1. ??$ : > filename?
?
2. ??$ > filename?
?
3. ??$ echo "" > filename?
? 我喜歡使用這種好理解
4. ??$ echo > filename?
?
5. ??$ cat /dev/null > filename?
?
tail - 輸出文件尾部/動態(tài)監(jiān)視文件尾部
相對于上面這個來說,這個簡單了很多!直接查看文件的尾部就可以知道到時是不是啟動了。error你在哪里。
用途:tail命令可以輸出文件的尾部內(nèi)容,默認(rèn)情況下它顯示文件的最后十行。它常用來動態(tài)監(jiān)視文件的尾部內(nèi)容的增長情況,比如用來監(jiān)視日志文件的變化。與tail命令對應(yīng)的是head命令,用來顯示文件頭部內(nèi)容。
-
?
?tail file?
? 輸出指定文件file的尾部內(nèi)容,默認(rèn)輸出最后十行內(nèi)容 -
?
?tail file1 file2 ...?
?指定多個文件時,會顯示每個文件的文件名稱,再顯示該文件的尾部內(nèi)容 -
?
?tail -n file?
??顯示文件最后n 行。tail -n可以顯示最后n行的文本內(nèi)容。那么有沒有一種方式顯示從n行開始的文本內(nèi)容,答案是肯定的。??tail -n +4 file?
?表示顯示文件file從第4行開始的內(nèi)容。從1開始計數(shù)。 -
?
?tail -f file?
? 動態(tài)跟蹤文件file的增長情況,tail會每隔一秒去檢查一下文件是否增加新的內(nèi)容,如果增加就追加在原來的輸出后面顯示。但這種情況,必須保證在執(zhí)行tail命令時,文件已經(jīng)存在。如果想終止tail -f的輸出,按Ctrl+C中斷tail程序即可.
在Linux的下面部署了tomcat
在Linux的下面部署了tomcat,為了安全我們使用非root用戶進(jìn)行啟動,但是在域名綁定時無法直接訪問80端口號。眾所周知,在unix下,非root用戶不能監(jiān)聽1024以上的端口號,這個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
參考
本文摘自 :https://blog.51cto.com/u