新聞中心
作為廣泛使用的開源操作系統(tǒng),Linux擁有一系列的優(yōu)秀特性,其中之一就是能夠有效地記錄系統(tǒng)運行時的信息,為開發(fā)者或管理員提供相關的診斷與調(diào)試信息。因此,在維護 Linux 服務器時,日志文件的查看就顯得尤為重要。本文將詳細介紹如何查看 Linux 服務器的日志文件,幫助讀者更好地了解服務器的運行狀態(tài)。

網(wǎng)站的建設創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設計體驗!已為圍欄護欄等企業(yè)提供專業(yè)服務。
一、日志文件的類型
在開始介紹 Linux 服務器日志的查看方法之前,我們需要先了解一下日志文件的類型。通常,Linux 系統(tǒng)會將不同類型的日志信息記錄到不同的文件中,以便進行分類查看和管理。在 Linux 服務器上,主要的日志文件有以下幾種:
1.系統(tǒng)日志文件:包括系統(tǒng)的運行狀態(tài)、內(nèi)核信息、系統(tǒng)啟動信息等。
2.應用程序日志文件:包括各種應用程序的日志信息,如 Web 服務器日志、數(shù)據(jù)庫日志、郵件服務日志等。這些日志文件可以幫助開發(fā)者或管理員診斷應用程序的異常情況。
3.安全日志文件:包括所有安全相關的事件信息,如用戶登錄、授權訪問、嘗試入侵等。這些日志文件可以幫助管理員監(jiān)控系統(tǒng)的安全性。
二、常見的日志查看工具
1. dmesg
dmesg是一種非常常見的查看系統(tǒng)日志的命令行工具。
使用 “dmesg” 命令查看時,可以看到系統(tǒng)在引導過程中發(fā)生的各種信息,如 CPU、內(nèi)存、硬盤等硬件設備的檢測和初始化、內(nèi)核模塊的加載等等。
2. journalctl
journalctl是一個新的日志管理工具,主要用于管理 systemd 生成的日志。
使用 “journalctl” 命令查看時,可以看到系統(tǒng)各組件的活動信息、服務啟動和關閉信息、進程信息等。
3. tl
tl是一個命令行工具(tl命令),用于查看文件末尾的內(nèi)容。
使用 “tl” 命令查看時,可以看到日志文件最新的內(nèi)容。
4. less
less是一個非常強大的命令行文本瀏覽器,可以在文本文件中任意瀏覽,并支持搜索和高亮。
使用”less”命令查看時,可以看到整個文件的內(nèi)容,并可以自由滾動、搜索和高亮顯示。
5. grep
grep是一個非常常用的命令行文本搜索工具,用于在文件中查找指定的文本字符串。
使用 “grep” 命令查看時,可以對日志文件進行關鍵字搜索,以便找到特定的信息。
三、查看系統(tǒng)日志
系統(tǒng)日志包括內(nèi)核信息、系統(tǒng)的運行狀態(tài)、系統(tǒng)啟動信息等,通??梢栽?var/log目錄下找到。
1.查看dmesg日志
使用以下命令可以查看最近一次系統(tǒng)啟動后內(nèi)核的信息。
[[eml protected] ~]# dmesg | less
通過查看dmesg日志,可以獲取到如下信息:
① CPU 和內(nèi)存檢測信息。
② 硬件狀態(tài)信息。
③ 系統(tǒng)服務的啟動和關閉信息。
④ 內(nèi)核模塊的加載和卸載信息。
2.查看syslog日志
syslog日志記錄了系統(tǒng)的運行狀態(tài)和指定的應用或服務的日志信息。syslog日志通常包含多個文件,這些文件可以在/var/log目錄下找到。
使用以下命令查看syslog日志
[[eml protected] ~]# tl -f /var/log/syslog
3.查看auth日志
auth日志文件記錄了與系統(tǒng)認證、授權和安全有關的所有信息,包括sudo命令、SSH登錄、用戶登錄信息等等。
使用以下命令查看auth日志
[[eml protected] ~]# tl -f /var/log/auth.log
四、查看應用程序的日志
在Linux服務器中,各種應用程序如Web服務器、數(shù)據(jù)庫服務器等都會生成自己的日志文件,以便開發(fā)者或管理員了解應用程序的運行狀況以及異常情況的發(fā)生。常見的應用程序日志文件有如下幾種:
1.Apache服務器日志
Apache服務器是Web服務器中應用最廣泛的一種,其日志文件通常包括access_log和error_log兩個文件。通過查看這兩個日志文件,可以了解到對Apache服務器發(fā)出的http請求以及Apache服務器的引擎錯誤信息。
查看Apache服務器的access_log日志文件:
[[eml protected] ~]# tl -f /var/log/httpd/access_log
查看Apache服務器的error_log日志文件:
[[eml protected] ~]# tl -f /var/log/httpd/error_log
2.MySQL數(shù)據(jù)庫日志
MySQL服務器是關系型數(shù)據(jù)庫管理系統(tǒng)中應用最廣泛的一種,其日志文件通常包括error.log、general.log、slow_query.log以及binlog等文件。
查看MySQL的error.log日志文件:
[[eml protected] ~]# tl -f /var/log/mysqld/error.log
查看MySQL的general.log日志文件:
[[eml protected] ~]# tl -f /var/log/mysqld/general.log
3.nginx服務器日志
Nginx是一款優(yōu)秀的Web服務器,其日志文件通常包括access.log和error.log兩個文件。通過查看這兩個日志文件,可以了解到對Nginx服務器發(fā)出的https請求以及Nginx服務器的引擎錯誤信息。
查看Nginx服務器的access.log日志文件:
[[eml protected] ~]# tl -f /var/log/nginx/access.log
查看Nginx服務器的error.log日志文件:
[[eml protected] ~]# tl -f /var/log/nginx/error.log
:
Linux服務器日志的查看可以幫助管理員更好地監(jiān)視服務器的運行狀態(tài)。本文詳細介紹了Linux日志的幾種類型以及查看方法,如dmesg、journalctl、tl、less、grep等工具,以及查看系統(tǒng)日志、查看應用程序的日志等內(nèi)容。通過本文的學習,相信讀者們已經(jīng)掌握了Linux服務器日志的查看方法,并可以更好地維護自己的Linux服務器。
相關問題拓展閱讀:
- 如何查看linux的系統(tǒng)log日志
如何查看linux的系統(tǒng)log日志
日志文件詳細地記錄了系統(tǒng)每天發(fā)生的各種各樣的事件。用戶可以通過日志文件檢查錯誤產(chǎn)生的原因,或者在受到攻擊和黑客入侵時追蹤攻擊者的蹤跡。日志的兩個比較重要的作用是:審核和監(jiān)測。
Linux系統(tǒng)的日志主要分為兩種類型:
1.進程所屬日志
由用戶進程或其他系統(tǒng)服務進程自行生成的日志,比如服務器上的access_log與error_log日志文件。
2.syslog消息
系統(tǒng)syslog記錄的日志,任何希望記錄日志的系統(tǒng)進程或者用戶進程都可以給調(diào)用syslog來記汪念冊錄日志。
日志系統(tǒng)可以劃分為三個子系統(tǒng):
1. 連接時間日志–由多個程序執(zhí)行,把紀錄寫入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系統(tǒng)管理員能夠跟蹤誰在何時登錄到系統(tǒng)。
2. 進程統(tǒng)計–由系統(tǒng)內(nèi)核執(zhí)行。當一個進程終止時,為每個進程往進程統(tǒng)計文件(pacct或acct)中寫一個紀錄。進程統(tǒng)計的目的是為系統(tǒng)中的基本服務提供命令使用統(tǒng)計。
3. 錯誤日志–由syslogd(8)執(zhí)行。各種系統(tǒng)守護進程、用戶程序和內(nèi)核通過syslog(3)向文件/var/log/messages報告值得注意的事件。
2.察看日志文件
Linux系統(tǒng)所有的日志文件都在/var/log下,且必須有root權限才能察看。
日志文件其實是純文本的文件,每一行就是一個消息。察看方式有很多。
1. cat命令。日志文件總是很大的,因為從之一次啟動Linux開始,消息都累積在日志文件中。如果這個文件不只一頁,那么就會因為顯示滾動得太快看不清文件的內(nèi)容。
2. 文本編輯器。更好也不要用文本編輯器打開日志文件,這是因為一方面很耗費內(nèi)存,另一方面不允許隨意改動日志文件。
3.用more或less那樣的分頁顯示程序。
4.用grep查找特定的消息。
每一行表示一個消息,而且都由四個域的固定格式組成:
n時間標簽(timestamp),表示消息發(fā)出的日期和時間
n主機名(hostname)(在我們的例子中主機名為escher),表示生成消息的計算機的名字。如果只有一臺計算機,主機名就可能沒有必要了。但是,如果在網(wǎng)絡環(huán)境中使用syslog,那么就可能要把不同主機的消息發(fā)送到一臺服務器上集中處理。
n生成消息的子系統(tǒng)的名字??梢允恰眐ernel”,表示消息來自內(nèi)核,或者是進程的名字,表示發(fā)出消息的困宏程序的名字。在方括號里的是進程的PID。
n消息(message),剩下的部分就是消息的內(nèi)容。
舉例:
在# 提示符下輸入:tail /var/log/高手messages
Jan 05 21:55:51 localhost last message repeated 3 times
Jan 05 21:55:51 localhost kernel: AGP 0.99 on Intel i810 @ 0xfM
B
Jan 05 21:55:51 localhost kernel: Initialized i830 1.3.on minor
Jan 05 21:55:51 localhost kernel: mtrr: base(0xf) is not aligned on a siz
e(0x12c000) boundary
Jan 05 21:56:35 localhost 1月 28 21:56:35 gdm(pam_unix): session opened f
or user root by (uid=0)
Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 正在啟動(版本 2.
2.0),pid 4162 用戶”root”
Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re
adonly:/etc/gconf/gconf.xml.mandatory”指向位于 0 的只讀配置源
Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re
adwrite:/root/.gconf”指向位于 1 的可寫入配置源
Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re
adonly:/etc/gconf/gconf.xml.defaults”指向位于 2 的只讀配置源
Jan 05 21:58:20 localhost kernel: MSDOS FS: IO charset cp936
值得注意的是,與連接時間日志不同,進程統(tǒng)計子系統(tǒng)默認不激活,它必須啟動。在Linux
系統(tǒng)中啟動進程統(tǒng)計使用accton命令,必須用root身份來運行。accton命令的形式為:accton
file,file必須事先存在。先使用touch命令創(chuàng)建pacct文件:touch
/var/log/pacct,然后運行accton:accton
/var/log/pacct。一旦accton被激活,就可以使用lastcomm命令監(jiān)測系統(tǒng)中任何時候執(zhí)行的命令。若要關閉統(tǒng)計,可以使用不帶任何
參數(shù)的accton命令。
3.日志系統(tǒng)工作原理及配置
3.1 syslog
它同closelog, openlog共同給system logger發(fā)送消息。
Linux內(nèi)核由很多子系統(tǒng)組成,包括網(wǎng)絡、文件訪問、內(nèi)存管理等。子系統(tǒng)需要給用戶傳送一些消息,這些消息內(nèi)容包括消息的來源及其重要性等。所有的子系統(tǒng)都要把消息送到一個可以維護的公用消息區(qū)。于是,就有了一個叫Syslog的程序。
這個程序負責接收消息(比如:系統(tǒng)核心和許多系統(tǒng)程序產(chǎn)生的錯誤信息、警告信息和其他信息,每個信息都包括重要級),并把消息分發(fā)到合適的地方。通常情況
下,所有的消息都被記錄到特定的文件——日志文件中(通常是/var/adm或/var/log目錄下的messages文件),特別重要的消息也會在用
戶終端窗口上顯示出來。
syslog工具有兩個重要文件:syslogd和syslog.Conf
它能接受訪問系統(tǒng)的日志信息并且根據(jù) “/etc/syslog.conf” 配置文件中的指令處理這些信息。守護進程和內(nèi)核提供了訪問系統(tǒng)的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成該信息。
3.2 syslogd守護進程
就象其它復雜的操作系統(tǒng)那樣,Linux也是由很多不同的子系統(tǒng)組成的。有些叫做daemon的程序一直在后臺運行(daemon:守護神之意。也就是
說,他們”默默無聞”,不需要和用戶交互),處理一些象打印、發(fā)送郵件、建立Internet連接,等等日常工作。每一個子系統(tǒng)發(fā)出日志消息的時候都會給
消息指定一個類型。一個消息分成兩個部分:”設備(facility)”和”級別(level)”?!痹O備”標識發(fā)出消息的子系統(tǒng),可以把同一類型的消息組合在一起,”級別”表示消息的重要性,其范圍從debug(最不重要)到emerg(最重要),facility和level組合起來稱為priority。(詳細解釋參照5.3)
/usr/include/sys/syslog.h中對此有相關的定義。
用戶看不到daemon程序,因為它們沒有窗口和用戶界面。但是,這些程序有時候也要給用戶傳遞一些信息。為了實現(xiàn)這個目的,就需要一個特殊的機制。syslogd就是daemon的一個很好的例子,它在后臺運行并且把消息從日志區(qū)轉(zhuǎn)移到日志文件中去。
函數(shù)接口
#include
void openlog( char * , int , int )
其中,可以是以下值的OR組合:
LOG_CONS : 如果消息無法送到syslogd,直接輸出到系統(tǒng)console。
LOG_NDELAY : 立即打開到syslogd的連接,默認連接是在之一次寫入訊息時才打開的。
LOG_PERROR : 將消息也同時送到stderr 上
LOG_PID : 將PID記錄到每個消息中
void syslog( int , char * )
其中,是facility和level的OR組合
void closelog( void )
一般只需要用syslog()函數(shù),其他函數(shù)可以不用。
3.3 syslog.conf
這是一個非常重要的文件。位于”/etc/”目錄下。通知 syslogd 如何根據(jù)設備和信息重要級別來報告信息。
該文件使用下面的形式:
facility.level action
syslog.conf 的之一列facility.level用來指定日志功能和日志級別,中間用.隔開,可以使用*來匹配
所有的日志功能和日志級別。第二列action是消息的分發(fā)目標。
空白行和以#開頭的行是注釋,可以忽略。
Facility.level 字段也被稱做選擇域(seletor)。
nfacility 指定 syslog 功能,主要包括以下這些:
auth 由 pam_pwdb 報告的認證活動。
authpriv 包括特權信息如用戶名在內(nèi)的認證活動
cron 與 cron 和 at 有關的信息。
daemon 與 inetd 守護進程有關的信息。
kern 內(nèi)核信息,首先通過 klogd 傳遞。
lpr 與打印服務有關的信息。
mail 與電子郵件有關的信息
mark syslog 內(nèi)部功能用于生成時間戳
news 來自新聞服務器的信息
syslog 由 syslog 生成的信息
user 由用戶程序生成的信息
uucp 由 uucp 生成的信息
local0—-local7 與自定義程序使用,例如使用 local5 做為 ssh 功能
* 通配符代表除了 mark 以外的所有功能
level 級別,決定訊息的重要性。
與每個功能對應的優(yōu)先級是按一定順序排列的,emerg 是更高級,其次是 alert,依次類推。缺省時,在 /etc/syslog.conf 記錄中指定的級別為該級別和更高級別。如果希望使用確定的級別可以使用兩個運算符號!(不等)和=。
例如:user.=info 表示告知 syslog 接受所有在 info 級別上的 user 功能信息。
n以下的等級重要性逐次遞減:
emerg該系統(tǒng)不可用
alert需要立即被修改的條件
crit阻止某些工具或子系統(tǒng)功能實現(xiàn)的錯誤條件
err阻止工具或某些子系統(tǒng)部分功能實現(xiàn)的錯誤條件
warning預警信息
notice具有重要性的普通條件
info提供信息的消息
debug不包含函數(shù)條件或問題的其他信息
none沒有重要級,通常用于排錯
* 所有級別,除了none
naction 字段為動作域,所表示的活動具有許多靈活性,特別是,可以使用名稱管道的作用是可以使 syslogd 生成后處理信息。
syslog 主要支持以下活動:
file將消息追加到指定的文件尾
terminal 或 print完全的串行或并行設備標志符
@host遠程的日志服務器
username 將消息寫到指定的用戶
named pipe 指定使用 mkfifo 命令來創(chuàng)建的 FIFO 文件的絕對路徑。
*將消息寫到所有的用戶
選擇域指明消息的類型和優(yōu)先級;動作域指明syslogd接收到一個與選擇標準相匹配的消息時所執(zhí)行的動作。每個選項是由設備和優(yōu)先級組成。當指明一個優(yōu)先級時,syslogd將紀錄一個擁有相同或更高優(yōu)先級的消息。比如如果指明”crit”,則所有標為crit、alert和emerg的消息將被紀錄。每行的行動域指明當選擇域選擇了一個給定消息后應該把他發(fā)送到什么地方。
以下是一個實際站點的配置(syslog.conf)文件:
# Store critical stuff in critical
#
*.=crit;kern.none/var/adm/critical
這個將把所有信息以優(yōu)先權的crit保存在/var/adm/critical文件中,除了一些內(nèi)核信息
# Kernel messages are first, stored in the kernel
# file, critical messages and higher ones also go
# to another host and to the console
#
kern.*/var/adm/kernel
kern.crit @finlandia
kern.crit /dev/console
kern.info;kern.!err/var/adm/kernel-info
之一條代碼指引一些內(nèi)核設備訪問文件/var/adm/kernel的信息。
第二條代碼直接引導所有擁有crit和更高優(yōu)先權的內(nèi)核信息訪問遠程主機。如果它們也存儲在遠程主機上,仍舊可以試著找到毀壞的原因。
第四行說明syslogd 保存了所有擁有info 到warning優(yōu)先級的內(nèi)核信息在/var/adm/kernel-info文件夾下。所有err和更高優(yōu)先級的被排除在外。
# The tcp wrapper loggs with mail.info, we display
# all the connections on tty12
#
mail.=info /dev/tty12
這個引導所有使用mail.info (in source LOG_MAIL | LOG_INFO)的信息到/dev/tty12下,第12
個控制臺。例如tcpwrapper
tcpd
(8)載缺省時使用這個
# Store all mail concerning stuff in a file
mail.*;mail.!=info/var/adm/mail
模式匹配了所有具有mail功能的信息,除了擁有info優(yōu)先級的。他們將被保存在文件/var/adm/mail中
# Log all mail.info and news.info messages to info
#
mail,news.=info/var/adm/info
提取所有具有mail.info 或news.info 功能優(yōu)先級的信息存儲在文件/var/adm/info中
# Log info and notice messages to messages file
#
*.=info;*.=notice;\
mail.none /var/log/messages
使所有syslogd日志中具有info 或notice功能的信息存儲在文件/var/log/messages中,除了所有mail功能的信息
# Log info messages to messages file
#
*.=info;\
mail,news.none/var/log/messages
這個聲明使syslogd日志中所有具有info優(yōu)先權的信息存儲在/var/log/messages文件中。但是一些有mail 或news功能的信息不能被存儲。
# Emergency messages will be displayed using wall
#
*.=emerg*
這行代碼告訴syslogd寫所有緊急信息到所有當前登陸用戶日志中。這個將被實現(xiàn)
# Messages of the priority alert will be directed
# to the operator
#
*.alertroot,joey
*.*@finlandia
這個代碼指引所有具有alert 或更高級權限的信息到終端操作。
第二行代碼引導所有信息到叫做finlandia的遠程主機。這個代碼非常有用,特別是在所有syslog信息將被保存到一臺機器上的群集計算機。
3.4 klogd 守護進程
klog是一個從UNIX內(nèi)核接受消息的設備
klogd
守護進程獲得并記錄 Linux 內(nèi)核信息。通常,syslogd 會記錄 klogd
傳來的所有信息。也就是說,klogd會讀取內(nèi)核信息,并轉(zhuǎn)發(fā)到syslogd進程。然而,如果調(diào)用帶有 -f filename 變量的 klogd
時,klogd 就在 filename 中記錄所有信息,而不是傳給 syslogd。當指定另外一個文件進行日志記錄時,klogd
就向該文件中寫入所有級別或優(yōu)先權。Klogd 中沒有和 /etc/syslog.conf 類似的配置文件。使用 klogd 而避免使用
syslogd 的好處在于可以查找大量錯誤。
總結
其中,箭頭代表發(fā)送消息給目標進程或者將信息寫入目標文件。
圖1 Linux日志系統(tǒng)
日志管理及日志保護
logrotate程序用來幫助用戶管理日志文件,它以自己的守護進程工作。logrotate周期性地旋轉(zhuǎn)日志文件,可以周期性地把每個日志文件重命名
成一個備份名字,然后讓它的守護進程開始使用一個日志文件的新的拷貝。在/var/log/下產(chǎn)生如maillog、maillog.1、
maillog.2、boot.log.1、boot.log.2之類的文件。它由一個配置文件驅(qū)動,該文件是
/etc/logroatate.conf。
以下是logroatate.conf文件例子:
# see “man logrotate” for details
# rotate log files weekly
weekly
#以7天為一個周期
# keep 4 weeks worth of backlogs
rotate 4
#每隔4周備份日志文件
# send errors to root
errors root
#發(fā)生錯誤向root報告
# create new (empty) log files after rotating old ones
create
#轉(zhuǎn)完舊的日志文件就創(chuàng)建新的日志文件
# uncomment this if you want your log files compressed
#compress
#指定是否壓縮日志文件
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
# system-specific logs may be configured here
在網(wǎng)絡應用中,有一種保護日志的方式,在網(wǎng)絡中設定一臺秘密的syslog主機,把這臺主機的網(wǎng)卡設為混雜模式,用來監(jiān)聽子網(wǎng)內(nèi)所有的syslog包,這
樣把所有需要傳送日志的主機配置為向一臺不存在的主機發(fā)送日志即可。這樣即使黑客攻陷了目標主機,也無法通過syslog.conf文件找到備份日志的主
機,那只是一個不存在的主機。實際操作中還可以輔以交換機的配置,以確保syslog包可以被備份日志主機上的syslog進程接受到。比如把
syslog.conf中的傳送日志主機設為
@192.168.0.13,但實際網(wǎng)絡中不存在這個日志主機,實際可能是192.168.0.250或者其他主機正在接受syslog包。
linux怎么查看服務器日志的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于linux怎么查看服務器日志,Linux服務器日志查看方法詳解,如何查看linux的系統(tǒng)log日志的信息別忘了在本站進行查找喔。
成都服務器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設,軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務眾多企業(yè)。電話:028-86922220
網(wǎng)站欄目:Linux服務器日志查看方法詳解 (linux怎么查看服務器日志)
文章起源:http://m.fisionsoft.com.cn/article/dpecdes.html


咨詢
建站咨詢
