nohup.out日志文件太大了,且一直增長,命令查看日志受阻

創(chuàng)新互聯(lián)建站專注于江夏企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都商城網(wǎng)站開發(fā)。江夏網(wǎng)站建設(shè)公司,為江夏等地區(qū)提供建站服務(wù)。全流程按需定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
①切割大文件變成多個小文件
②每天定時保存前一天的日志,重新記錄當天日志
1.利用split命令切割
①按文件大小切割大文件:
切割文件:將ohup.out文件每500M切割一個文件放到/home/nginx/logs/newlog/目錄下
②按文件行數(shù)切割大文件:
查詢文件行數(shù):
wc -l b.log
2038711 b.log
按50W行切割一個文件:
split -l 500000 -d -a 4 /home/nginx/logs/b.log /home/nginx/logs/newlog/
2.定時備份前一天日志,重新記錄當天日志splitlog.sh
3.定時執(zhí)行
查看定時任務(wù):
crontab -l
編輯定時任務(wù):
crontab -e
重啟定時任務(wù):
刪除10天以前的日志文件,此日期為文件本身的時間,非日志內(nèi)容時間
其實要說回答很簡單,但是要給你做出來稍微費工夫,因為沒有環(huán)境可以測試,你可以寫一段shell代碼來提取,也可以用sed/awk/grep等命令來做,但是命令的復(fù)雜度不亞于寫一段shell代碼。shell代碼我給你算法吧。(括號里是參考代碼,bash)
初始化變量(flg=0)
循環(huán)讀取每一行文件(while line in `cat $log`)
變量開始[sip/2.0]為真時( if [ $flg -eq 1 ]; then )
輸出當前行到結(jié)果文件中( echo $line $retFile )
如果是用戶結(jié)束 ( chkEnd $line #chkEnd 是個shell函數(shù)檢查是不是結(jié)束
if [ $? -eq 1 ]; then)
變量變量開始[sip/2.0]設(shè)置為假 (flg=0)
#如果是用戶結(jié)束(fi)
否則(else)
如果當前行含有[sip/2.0]( echo $line | grep "[sip/2.0"
if [ $? -eq 0 ]; then)
輸出當前行到結(jié)果文件中(echo $line $retFile)
變量變量開始[sip/2.0]設(shè)置為真(flg=1)
#如果當前行含有[sip/2.0](fi)
#變量開始[sip/2.0]為真時(fi)
last
-a 把從何處登入系統(tǒng)的主機名稱或ip地址,顯示在最后一行。
-d 指定記錄文件。指定記錄文件。將IP地址轉(zhuǎn)換成主機名稱。
-f 記錄文件 指定記錄文件。
-n 顯示列數(shù)或-顯示列數(shù) 設(shè)置列出名單的顯示列數(shù)。
-R 不顯示登入系統(tǒng)的主機名稱或IP地址。
-x 顯示系統(tǒng)關(guān)機,重新開機,以及執(zhí)行等級的改變等信息
以下看所有的重啟、關(guān)機記錄
last | grep reboot
last | grep shutdown
history
列出所有的歷史記錄:
[zzs@Linux] # history
只列出最近10條記錄:
[zzs@linux] # history 10 (注,history和10中間有空格)
使用命令記錄號碼執(zhí)行命令,執(zhí)行歷史清單中的第99條命令
[zzs@linux] #!99 (!和99中間沒有空格)
重復(fù)執(zhí)行上一個命令
[zzs@linux] #!!
執(zhí)行最后一次以rpm開頭的'命令(!? ?代表的是字符串,這個String可以隨便輸,Shell會從最后一條歷史命令向前搜索,最先匹配的一條命令將會得到執(zhí)行。)
[zzs@linux] #!rpm
逐屏列出所有的歷史記錄:
[zzs@linux]# history | more
立即清空history當前所有歷史命令的記錄
[zzs@linux] #history -c
cat, tail 和 watch
系統(tǒng)所有的日志都在 /var/log 下面自己看(具體用途可以自己查,附錄列出一些常用的日志)
cat /var/log/syslog 等
cat /var/log/*.log
tail -f
如果日志在更新,如何實時查看 tail -f /var/log/messages
還可以使用 watch -d -n 1 cat /var/log/messages
-d表示高亮不同的地方,-n表示多少秒刷新一次。
該指令,不會直接返回命令行,而是實時打印日志文件中新增加的內(nèi)容,
這一特性,對于查看日志是非常有效的。如果想終止輸出,按 Ctrl+C 即可。
除此之外還有more, less ,dmesg|more,這里就不作一一列舉了,因為命令太多了,關(guān)鍵看個人喜好和業(yè)務(wù)需求.個人常用的就是以上那些
linux日志文件說明
/var/log/message 系統(tǒng)啟動后的信息和錯誤日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 與安全相關(guān)的日志信息
/var/log/maillog 與郵件相關(guān)的日志信息
/var/log/cron 與定時任務(wù)相關(guān)的日志信息
/var/log/spooler 與UUCP和news設(shè)備相關(guān)的日志信息
/var/log/boot.log 守護進程啟動和停止相關(guān)的日志消息
/var/log/wtmp 該日志文件永久記錄每個用戶登錄、注銷及系統(tǒng)的啟動、停機的事件
在生產(chǎn)環(huán)境中,往往沒有條件給我們?nèi)ebug排查,更多時候我們是通過日志來看具體的報錯日期。
但是日志往往是一直在實時更新,而且記錄條數(shù)龐大,很難直接定位到錯誤信息。這個時候,就可以利用sed命令來截取指定時間段內(nèi)的日志(也是網(wǎng)上大多數(shù)博主的做法)。
具體命令如下:
這條命令可以查詢2020.10.13號當天9點到9點十分中間的所有的日志信息。
但是這條命令的使用有兩個前提(很多網(wǎng)上的博主都沒有提到)
第一,日志輸出的日期格式是要滿足命令中的格式 ,如果不是的話就跟著實際的格式改
第二,輸入的日期必須要真實存在?。?! ,比如說9點整剛好沒有日志輸出,那么這條命令就會失效
更加通配的命令可以是這樣, 使用 號*
這樣無論九點整的時候是否有日志產(chǎn)生,就都可以獲取到9點整到現(xiàn)在的所有日志了
使用 ,將截取到的內(nèi)容輸出到指定的文件中,方便進一步查看
ps:在實際操作中,我們一般會在后面加grep命令做進一步的關(guān)鍵字過濾
當前題目:linux截取日志的命令 linux 怎么取出日志
URL鏈接:http://www.jbt999.com/article46/hjjohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、動態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、微信小程序、網(wǎng)站改版、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)