前言 今天在測試環境發佈 服務,發現死活找不到錯誤的地方,錯誤日誌也生成,然後就一頓 ,一頓 ,發現日誌就截止到我發服務之前, 服務結束的地方,如圖所示。 WTF,why,我是丈二和尚摸不著頭腦,後來我發現他這個服務不是像我之前那種 啟動的,他這個是使用 啟動的。 正文 第六感告訴我,系統啟動日誌中 ...
前言
今天在測試環境發佈SpringBoot
服務,發現死活找不到錯誤的地方,錯誤日誌也生成,然後就一頓tail
,一頓cat
,發現日誌就截止到我發服務之前,dubbo
服務結束的地方,如圖所示。
WTF,why,我是丈二和尚摸不著頭腦,後來我發現他這個服務不是像我之前那種nohup java -jar xxx.jar
啟動的,他這個是使用systemctl restart service@xx
啟動的。
正文
第六感告訴我,系統啟動日誌中肯定有貓膩,說完就乾,一頓搜索。journalctl這個是我想要的查看linux各種服務啟動指令。
journalctl -f | grep "xxxx" 比較粗略展示log
journalctl -xe| grep "xxxx" 比較詳細展示log
結果如我所料,如圖我沒許可權創建文件,emmmm,我好像找到我的鍋了(之前為了本地調試改了日誌的文件夾),真的手欠啊。
感受
其實我覺得這個鍋不全是我的,之前接觸的很多jar包發佈都不是基於linux系統服務的這種形式,不是說不好,而是我覺得這種方式在我們找問題的時候並不友好,因為他不會像以前jenkins調用sh執行jar -jar指令的那種方式,能把一些比較明顯的錯誤信息展示出來。個人覺得用這種方式發佈jar不是特別好,當然他可以給我們帶來很多方便,自啟動這些。
補充理論
systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查詢服務是否開機啟動
systemctl enable *.service #開機運行服務
systemctl disable *.service #取消開機運行
systemctl start *.service #啟動服務
systemctl stop *.service #停止服務
systemctl restart *.service #重啟服務
systemctl reload *.service #重新載入服務配置文件
systemctl status *.service #查詢服務運行狀態
systemctl --failed #顯示啟動失敗的服務
journalctl -f | grep "xxxx" 比較粗略展示log
journalctl -xe| grep "xxxx" 比較詳細展示log
本文由 Janker 創作,採用 CC BY 3.0 CN協議 進行許可。 可自由轉載、引用,但需署名作者且註明文章出處。如轉載至微信公眾號,請在文末添加作者公眾號二維碼。