學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > linux操作系統(tǒng)日志

linux操作系統(tǒng)日志

時間: 春健736 分享

linux操作系統(tǒng)日志

  系統(tǒng)日志是一種非常關(guān)鍵的組件,因為系統(tǒng)日志可以讓你充分了解自己的環(huán)境。這種系統(tǒng)日志信息對于決定故障的根本原因或者縮小系統(tǒng)攻擊范圍來說是非常關(guān)鍵的,因為系統(tǒng)日志可以讓你了解故障或者襲擊發(fā)生之前的所有事件。學(xué)習(xí)啦小編為大家?guī)砹薼inux操作系統(tǒng)日志詳解,希望大家喜歡。

  linux操作系統(tǒng)日志

  Linux系統(tǒng)擁有非常靈活和強大的日志功能,可以保存幾乎所有的操作記錄,并可以從中檢索出我們需要的信息。

  大部分Linux發(fā)行版默認(rèn)的日志守護(hù)進(jìn)程為 syslog,位于 /etc/syslog 或 /etc/syslogd,默認(rèn)配置文件為 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 發(fā)送信息。

  Linux系統(tǒng)內(nèi)核和許多程序會產(chǎn)生各種錯誤信息、警告信息和其他的提示信息,這些信息對管理員了解系統(tǒng)的運行狀態(tài)是非常有用的,所以應(yīng)該把它們寫到日志文件中去。完成這個過程的程序就是syslog。syslog可以根據(jù)日志的類別和優(yōu)先級將日志保存到不同的文件中。例如,為了方便查閱,可以把內(nèi)核信息與其他信息分開,單獨保存到一個獨立的日志文件中。默認(rèn)配置下,日志文件通常都保存在“/var/log”目錄下。

  日志類型

  下面是常見的日志類型,但并不是所有的Linux發(fā)行版都包含這些類型:

  類型 說明

  auth 用戶認(rèn)證時產(chǎn)生的日志,如login命令、su命令。

  authpriv 與 auth 類似,但是只能被特定用戶查看。

  console 針對系統(tǒng)控制臺的消息。

  cron 系統(tǒng)定期執(zhí)行計劃任務(wù)時產(chǎn)生的日志。

  daemon 某些守護(hù)進(jìn)程產(chǎn)生的日志。

  ftp FTP服務(wù)。

  kern 系統(tǒng)內(nèi)核消息。

  local0.local7 由自定義程序使用。

  lpr 與打印機活動有關(guān)。

  mail 郵件日志。

  mark 產(chǎn)生時間戳。系統(tǒng)每隔一段時間向日志文件中輸出當(dāng)前時間,每行的格式類似于 May 26 11:17:09 rs2 -- MARK --,可以由此推斷系統(tǒng)發(fā)生故障的大概時間。

  news 網(wǎng)絡(luò)新聞傳輸協(xié)議(nntp)產(chǎn)生的消息。

  ntp 網(wǎng)絡(luò)時間協(xié)議(ntp)產(chǎn)生的消息。

  user 用戶進(jìn)程。

  uucp UUCP子系統(tǒng)。

  日志優(yōu)先級

  常見的日志優(yōu)先級請見下標(biāo):

  優(yōu)先級 說明

  emerg 緊急情況,系統(tǒng)不可用(例如系統(tǒng)崩潰),一般會通知所有用戶。

  alert 需要立即修復(fù),例如系統(tǒng)數(shù)據(jù)庫損壞。

  crit 危險情況,例如硬盤錯誤,可能會阻礙程序的部分功能。

  err 一般錯誤消息。

  warning 警告。

  notice 不是錯誤,但是可能需要處理。

  info 通用性消息,一般用來提供有用信息。

  debug 調(diào)試程序產(chǎn)生的信息。

  none 沒有優(yōu)先級,不記錄任何日志消息。

  常見日志文件

  所有的系統(tǒng)應(yīng)用都會在 /var/log 目錄下創(chuàng)建日志文件,或創(chuàng)建子目錄再創(chuàng)建日志文件。例如:

  文件/目錄 說明

  /var/log/boot.log 開啟或重啟日志。

  /var/log/cron 計劃任務(wù)日志

  /var/log/maillog 郵件日志。

  /var/log/messages 該日志文件是許多進(jìn)程日志文件的匯總,從該文件可以看出任何入侵企圖或成功的入侵。

  /var/log/httpd 目錄 Apache HTTP 服務(wù)日志。

  /var/log/samba 目錄 samba 軟件日志

  /etc/syslog.conf 文件

  /etc/syslog.conf 是 syslog 的配置文件,會根據(jù)日志類型和優(yōu)先級來決定將日志保存到何處。典型的 syslog.conf 文件格式如下所示:

  *.err;kern.debug;auth.notice /dev/console

  daemon,auth.notice /var/log/messages

  lpr.info /var/log/lpr.log

  mail.* /var/log/mail.log

  ftp.* /var/log/ftp.log

  auth.* @see.xidian.edu.cn

  auth.* root,amrood

  netinfo.err /var/log/netinfo.log

  install.* /var/log/install.log

  *.emerg *

  *.alert |program_name

  mark.* /dev/console

  第一列為日志類型和日志優(yōu)先級的組合,每個類型和優(yōu)先級的組合稱為一個選擇器;后面一列為保存日志的文件、服務(wù)器,或輸出日志的終端。syslog 進(jìn)程根據(jù)選擇器決定如何操作日志。

  對配置文件的幾點說明:

  日志類型和優(yōu)先級由點號(.)分開,例如 kern.debug 表示由內(nèi)核產(chǎn)生的調(diào)試信息。

  kern.debug 的優(yōu)先級大于 debug。

  星號(*)表示所有,例如 *.debug 表示所有類型的調(diào)試信息,kern.* 表示由內(nèi)核產(chǎn)生的所有消息。

  可以使用逗號(,)分隔多個日志類型,使用分號(;)分隔多個選擇器。

  對日志的操作包括:

  將日志輸出到文件,例如 /var/log/maillog 或 /dev/console。

  將消息發(fā)送給用戶,多個用戶用逗號(,)分隔,例如 root, amrood。

  通過管道將消息發(fā)送給用戶程序,注意程序要放在管道符(|)后面。

  將消息發(fā)送給其他主機上的 syslog 進(jìn)程,這時 /etc/syslog.conf 文件后面一列為以@開頭的主機名,例如@see.xidian.edu.cn。

  logger 命令

  logger 是Shell命令,可以通過該命令使用 syslog 的系統(tǒng)日志模塊,還可以從命令行直接向系統(tǒng)日志文件寫入一行信息。

  logger命令的語法為:

  logger [-i] [-f filename] [-p priority] [-t tag] [message...]

  每個選項的含義如下:

  選項 說明

  -f filename 將 filename 文件的內(nèi)容作為日志。

  -i 每行都記錄 logger 進(jìn)程的ID。

  -p priority 指定優(yōu)先級;優(yōu)先級必須是形如 facility.priority 的完整的選擇器,默認(rèn)優(yōu)先級為 user.notice。

  -t tag 使用指定的標(biāo)簽標(biāo)記每一個記錄行。

  message 要寫入的日志內(nèi)容,多條日志以空格為分隔;如果沒有指定日志內(nèi)容,并且 -f filename 選項為空,那么會把標(biāo)準(zhǔn)輸入作為日志內(nèi)容。

  例如,將ping命令的結(jié)果寫入日志:

  $ ping 192.168.0.1 | logger -it logger_test -p local3.notice&

  $ tail -f /var/log/userlog

  Oct 6 12:48:43 kevein logger_test[22484]: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

  Oct 6 12:48:43 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=49.7 ms

  Oct 6 12:48:44 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=68.4 ms

  Oct 6 12:48:45 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=315 ms

  Oct 6 12:48:46 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=279 ms

  Oct 6 12:48:47 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=347 ms

  Oct 6 12:48:49 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=6 ttl=253 time=701 ms

  Oct 6 12:48:50 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=7 ttl=253 time=591 ms

  Oct 6 12:48:51 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=8 ttl=253 time=592 ms

  Oct 6 12:48:52 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=9 ttl=253 time=611 ms

  Oct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 ms

  ping命令的結(jié)果成功輸出到 /var/log/userlog 文件。

  命令 logger -it logger_test -p local3.notice 各選項的含義:

  -i:在每行都記錄進(jìn)程ID;

  -t logger_test:每行記錄都加上“logger_test”這個標(biāo)簽;

  -p local3.notice:設(shè)置日志類型和優(yōu)先級。

  日志轉(zhuǎn)儲

  日志轉(zhuǎn)儲也叫日志回卷或日志輪轉(zhuǎn)。Linux中的日志通常增長很快,會占用大量硬盤空間,需要在日志文件達(dá)到指定大小時分開存儲。

  syslog 只負(fù)責(zé)接收日志并保存到相應(yīng)的文件,但不會對日志文件進(jìn)行管理,因此經(jīng)常會造成日志文件過大,尤其是WEB服務(wù)器,輕易就能超過1G,給檢索帶來困難。

  大多數(shù)Linux發(fā)行版使用 logrotate 或 newsyslog 對日志進(jìn)行管理。logrotate 程序不但可以壓縮日志文件,減少存儲空間,還可以將日志發(fā)送到指定 E-mail,方便管理員及時查看日志。

  例如,規(guī)定郵件日志 /var/log/maillog 超過1G時轉(zhuǎn)儲,每周一次,那么每隔一周 logrotate 進(jìn)程就會檢查 /var/log/maillog 文件的大?。?/p>

  如果沒有超過1G,不進(jìn)行任何操作。

  如果在1G~2G之間,就會創(chuàng)建新文件 /var/log/maillog.1,并將多出的1G日志轉(zhuǎn)移到該文件,以給 /var/log/maillog 文件瘦身。

  如果在2G~3G之間,會繼續(xù)創(chuàng)建新文件 /var/log/maillog.2,并將 /var/log/maillog.1 的內(nèi)容轉(zhuǎn)移到該文件,將 /var/log/maillog 的內(nèi)容轉(zhuǎn)移到 /var/log/maillog.1,以保持 /var/log/maillog 文件不超過1G。

  可以看到,每次轉(zhuǎn)存都會創(chuàng)建一個新文件(如果不存在),命名格式為日志文件名加一個數(shù)字(從1開始自動增長),以保持當(dāng)前日志文件和轉(zhuǎn)存后的日志文件不超過指定大小。

  logrotate 的主要配置文件是 /etc/logrotate.conf,/etc/logrotate.d 目錄是對 /etc/logrotate.conf 的補充,或者說為了不使 /etc/logrotate.conf 過大而設(shè)置。

  可以通過 cat 命令查看它的內(nèi)容:

  $cat /etc/logrotate.conf

  # see "man logrotate" for details //可以查看幫助文檔

  # rotate log files weekly

  weekly //設(shè)置每周轉(zhuǎn)儲一次

  # keep 4 weeks worth of backlogs

  rotate 4 //最多轉(zhuǎn)儲4次

  # create new (empty) log files after rotating old ones

  create //當(dāng)轉(zhuǎn)儲后文件不存儲時創(chuàng)建它

  # uncomment this if you want your log files compressed

  #compress //以壓縮方式轉(zhuǎn)儲

  # RPM packages drop log rotation information into this directory

  include /etc/logrotate.d //其他日志文件的轉(zhuǎn)儲方式,包含在該目錄下

  # no packages own wtmp -- we'll rotate them here

  /var/log/wtmp { //設(shè)置/var/log/wtmp日志文件的轉(zhuǎn)儲參數(shù)

  monthly //每月轉(zhuǎn)儲

  create 0664 root utmp //轉(zhuǎn)儲后文件不存在時創(chuàng)建它,文件所有者為root,所屬組為utmp,對應(yīng)的權(quán)限為0664

  rotate 1 //最多轉(zhuǎn)儲一次

  }

  注意:include 允許管理員把多個分散的文件集中到一個,類似于C語言的 #include,將其他文件的內(nèi)容包含進(jìn)當(dāng)前文件。

  include 非常有用,一些程序會把轉(zhuǎn)儲日志的配置文件放在 /etc/logrotate.d 目錄,這些配置文件會覆蓋或增加 /etc/logrotate.conf 的配置項,如果沒有指定相關(guān)配置,那么采用 /etc/logrotate.conf 的默認(rèn)配置。

  所以,建議將 /etc/logrotate.conf 作為默認(rèn)配置文件,第三方程序在 /etc/logrotate.d 目錄下自定義配置文件。

  logrotate 也可以作為命令直接運行來修改配置文件。

看過“linux操作系統(tǒng)日志 ”的人還看了:

1.linux系統(tǒng)日志查看命令

2.Linux系統(tǒng)常用命令合集

3.操作系統(tǒng)教程大全

4.Linux系統(tǒng)使用技巧八則

5.如何保護(hù)Linux操作系統(tǒng)安全技巧

656243