我負責管理我們最近(從 Windows)遷移到 Linux 伺服器的各種 MySQL 資料庫。他們運行良好,一切都很好。然而,今天早上我需要檢查錯誤日誌,但這些日誌現在已寫入/var/log/syslog
.
我的系統管理員今天休息了,我一輩子都不知道如何讀取這些資料。
我可以使用以下方式取得最新數據
tail -f /var/log/syslog
但是要如何存取今天凌晨 1:00 以後的資料呢?或從昨天開始。
我試過:
grep mysqld /var/log/syslog | less
但這顯示了早上 6 點以後的數據
然後我嘗試了
grep '^Nov 4 01' /var/log/syslog | less
但這只向我展示了一長串^
答案1
系統日誌獲取旋轉的定期進行。結果如下:
$ ls /var/log/syslog*
/var/log/syslog /var/log/syslog.1 ... /var/log/syslog.7.gz
要在常規和輪換系統日誌檔案中 grep 模式“mysqld”,請使用 zgrep,它能夠 grep 未壓縮和壓縮檔案:
$ zgrep mysqld /var/log/syslog* | less
若要 grep 尋找包含「mysql」和特定日期的行,請使用 -E 開關,該開關啟用擴展常用表達:
$ zgrep -E 'Nov 4 01.+mysqld' /var/log/syslog* | less