乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux 日志系統(tǒng)組成詳解

       qweertt4747 2017-02-10

      Linux 日志系統(tǒng)有三部分組成:
      一、使用什么工具記錄系統(tǒng)產(chǎn)生的日志信息?
            syslog服務(wù)腳本管理的兩個(gè)進(jìn)程: syslogd、klogd 來(lái)記錄系統(tǒng)產(chǎn)生的日志信息;
            klogd     進(jìn)程是專(zhuān)門(mén)為內(nèi)核產(chǎn)生的日志信息服務(wù)的。
            syslogd  進(jìn)程是專(zhuān)門(mén)為應(yīng)用程序服務(wù)(除了內(nèi)核)產(chǎn)生的日志信息服務(wù)的;
             只有調(diào)用了 logger 接口,應(yīng)用程序才可以調(diào)用 syslogd工具幫助記錄日志信息。

      二、只要系統(tǒng)服務(wù)在運(yùn)行,就會(huì)產(chǎn)生日志信息,我們使用專(zhuān)門(mén)的工具把它記錄到磁盤(pán)上了,為了方便   

              分析日志,日志文件不能太大、很久以前的日志文件我們應(yīng)該把它刪掉。這些工作由誰(shuí)完成呢?
              使用 logrotate 命令來(lái)滾動(dòng),syslog記錄的日志文件。

      三、為了讓人們從繁忙的工作中解脫出來(lái)。自動(dòng)化管理:日志文件的滾動(dòng)、備份、壓縮等工作。
              使用兩個(gè)忠實(shí)的勞動(dòng)者(進(jìn)程):crond 和 anacron ,完成上述的所有工作。

       wkiom1ozvtndg8k0aafoccmsyjo100.jpg

      看看它們各部分的實(shí)現(xiàn)過(guò)程:
      1、syslog
             syslog 只是用來(lái)管理 sysogd 和 klogd 的服務(wù)腳本。它們的配置文件在 /etc/syslog.conf

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
          [root@node2 logs]# cat /etc/syslog.conf
             
           # Log anything (except mail) of level info or higher.
           # Don't log private authentication messages!
             *.info;mail.none;authpriv.none;cron.none                /var/log/messages
           # 星號(hào)(*) 表示通配所有的 priority
           # *.info  表示記錄所有priority的info級(jí)別的日志信息。注意不緊包括 info 級(jí)別的,還包括比 info 級(jí)別高的所有日志信息都會(huì)被記錄下來(lái)。如:notice、warn、err、...、panic
           # *.info;mail.none;authpriv.none;cron.none   表示星號(hào)(*)通配的所有 priority但不包括 mail、authpriv、cron.
           # 意思是說(shuō),mail、authpriv、cron 系統(tǒng)的日志信息不會(huì)被記錄到 /var/log/messages 中來(lái)。
           
           # Log all the mail messages in one place.
             mail.*                                                  -/var/log/maillog
           # 星號(hào)(*)  表示通配所有的 priority.
           # mail.*   表示記錄系統(tǒng) mail 產(chǎn)生的所有級(jí)別的日志信息。
           # -/var/log/maillog  橫線(xiàn)(-)表示系統(tǒng) mail 產(chǎn)生的日志信息是異步寫(xiě)入磁盤(pán)的。意思是先把它存在 page cache 緩沖池中。再根據(jù)某種策略把它一次性刷寫(xiě)到磁盤(pán)中。
           # mail 是一個(gè)很繁忙的系統(tǒng),產(chǎn)生的日志信息量非常大。如果每次產(chǎn)生的日志信息就立即把它寫(xiě)到磁盤(pán)上的話(huà),效率是很低的。磁盤(pán)IO速度很慢的。原因,系統(tǒng)默認(rèn)是啟動(dòng)
           # 兩個(gè)臟頁(yè)刷寫(xiě)線(xiàn)程的。可以通過(guò)/proc接口查看 [root@node2 ~]# cat /proc/sys/vm/nr_pdflush_threads 。Linux 會(huì)根據(jù)系統(tǒng)繁忙程度啟動(dòng)更多的線(xiàn)程來(lái)為刷寫(xiě)臟頁(yè)服務(wù)的。
           # 當(dāng)然我們也可以調(diào)節(jié)該內(nèi)核參數(shù)。但是要根據(jù)我們硬件CPU的顆數(shù)來(lái)調(diào)節(jié)。
           # Everybody gets emergency messages
             *.emerg                                                 *
            
           # *.emerg  *    表示所有系統(tǒng)的emerg等級(jí)的日志信息都發(fā)給所有用戶(hù)。
           # Save boot messages also to boot.log
            local7.*                                                /var/log/boot.log
           # 該項(xiàng)記錄的是系統(tǒng)引導(dǎo)過(guò)程的所有級(jí)別的日志信息。

          配置文件格式:
                       facility.priority         /path
          facility             是用來(lái)定義由誰(shuí)產(chǎn)生的日志信息:那個(gè)軟件、子系統(tǒng)運(yùn)行過(guò)程中產(chǎn)生的日志信息。
          priority             是用來(lái)定義記錄什么類(lèi)型的日志信息。是應(yīng)用程序產(chǎn)生的所有信息都把它記錄到日志

                                   文件中呢,還是只記錄該應(yīng)用程序的錯(cuò)誤日志信息等等。
          /path/file_name      是用來(lái)定義把日志信息寫(xiě)到哪里去。

          查看常見(jiàn)的facility和priority:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      [root@node2 ~]# man syslog.conf
                # 常見(jiàn)的 facility
                The  facility  is  one of the following keywords: auth, authpriv, cron,
             daemon, kern, lpr, mail, mark, news, security (same as  auth),  syslog,
             user,  uucp and local0 through local7.
                 
         # 常見(jiàn)的 priority
                The priority is one of the  following  keywords,  in  ascending  order:
             debug,  info, notice, warning, warn (same as warning), err, error (same
             as err), crit, alert, emerg,  panic  (same  as  emerg).

             syslog 有統(tǒng)一的日志文件格式,方便管理員閱讀。
             Linux 系統(tǒng)日志文件的標(biāo)準(zhǔn)格式:
                                       事件發(fā)生的時(shí)間    哪臺(tái)主機(jī)的日志    產(chǎn)生日志信息的系統(tǒng)    系統(tǒng)發(fā)生的事件
             它們各字段之間使用空格隔開(kāi)。

      1
      2
      [root@node2 ~]# tail /var/log/cron
      Jun 12 10:00:01 node2 crond[5487]: (root) CMD (/usr/lib/sa/sa1 1 1)Jun 12 10:01:01 node2 crond[5490]:(root) CMD (run-parts /etc/cron.hourly)

          說(shuō)明:
                 事件發(fā)生的時(shí)間:         Jun 12 10:01:01
                 哪臺(tái)主機(jī)的日志:         node2
                產(chǎn)生日志信息的系統(tǒng):     crond[5490]
                系統(tǒng)發(fā)生的事件:         CMD (run-parts /etc/cron.hourly)

      1
      2
      3
      [root@node2 ~]# tail -2 /var/log/messages
      Jun 11 22:13:54 node2 syslogd 1.4.1: restart.
      Jun 11 22:13:54 node2 kernel: klogd 1.4.1, log source /proc/kmsg started.

       2、日志文件的滾動(dòng):
             所有的日志文件都會(huì)隨著時(shí)間的推移和訪(fǎng)問(wèn)次數(shù)的增加而迅速增大,因此必須對(duì)日志文件進(jìn)行定期

            清理以免造成磁盤(pán)空間不必要的浪費(fèi)。同時(shí)這也得以后日志分析方便。
            日志滾動(dòng)處理程序 logrotate,能夠自動(dòng)(當(dāng)然自動(dòng)就是把日志滾動(dòng)做成周期性任務(wù)來(lái)完成的)完成日志

            的壓縮、備份、刪除和日志郵寄等工作。
            每個(gè)日志文件都可以被設(shè)置成每日、每周或每月處理,也能設(shè)置當(dāng)日志文件太大時(shí)立即滾動(dòng)。
             logrotate 的工作原理:把被滾動(dòng)的日志文件定義logrotate的配置文件(/etc/logrotate.d/fine_name),

            并定義好日志滾動(dòng)事略。
           日志滾動(dòng)處理程序讀取配置文件,然后就會(huì)根據(jù)用戶(hù)定義的滾動(dòng)策略來(lái)分析日志文件,是否對(duì)日志

            文件進(jìn)程滾動(dòng)。
           logrotate 的配置文件分為兩段:主配置文件(/etc/logrotate.conf)和子配置文件定義在/etc/logrotate.d/

           目錄中(需要使用include把該目錄包含進(jìn)來(lái) )
          定義一個(gè)日志文件的滾動(dòng)配置文件格式:
                    日志文件的全路徑 {
                  logrotate 指令
             }
          了解一個(gè)日志滾動(dòng)處理程序 logrotate 是怎樣對(duì) syslogd 和 kelogd 記錄的日志文件進(jìn)程滾動(dòng)的?

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      [root@node2 ~]# cat  /etc/logrotate.conf
      # see "man logrotate" for details
      # rotate log files weekly 定義清理日志的周期.
      # 已經(jīng)把使用命令【logrotate】進(jìn)行日志滾動(dòng)的服務(wù)定義成了周期性任務(wù)計(jì)劃。
      # 但是每天的4點(diǎn)02分會(huì)執(zhí)行一次, 
      # [root@node2 ~]ll /etc/cron.daily/logrotate
      # -rwxr-xr-x 1 root root 180 Feb 27  2009 /etc/cron.daily/logrotate
      # 文件 /etc/cron.daily/logrotate 實(shí)際上是運(yùn)
      #行 /usr/sbin/logrotate /etc/logrotate.conf 
      # 也就是說(shuō),每天的4點(diǎn)02分就使用命令【logrotate】對(duì)定義在/etc/logrotate.d 目錄下
      # 的符合滾動(dòng)條件的應(yīng)用程序的日志文件
      # 進(jìn)程滾動(dòng)。
           weekly
      # keep 4 weeks worth of backlogs 保存過(guò)去4周的日志文件
           rotate 4
      # 滾動(dòng)日志的同時(shí)創(chuàng)建新的空的日志文件
      # create new (empty) log files after rotating old ones
           create
      # uncomment this if you want your log files compressed 是否使用壓縮功能
           #compress
      # RPM packages drop log rotation information into this directory 
      # 把/etc/logrotate.d目錄的文件包含進(jìn)來(lái)。
      # 如果主配置文件/etc/logrotate.conf與/etc/logrotate.d目錄下的配置文件定義了相
      # 同的指令,則覆蓋主配置文件中的指令。否則的話(huà)使用主配置文件中的指令。
           include /etc/logrotate.d
      # no packages own wtmp -- we'll rotate them here 
          /var/log/wtmp {
               monthly
               minsize 1M
               create 0664 root utmp
               rotate 1
          }
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      [root@node2 ~]# cat /etc/logrotate.d/syslog
      # 對(duì) /var/log/messages、/var/log/secure、 /var/log/maillog、
      #/var/log/spooler、/var/log/boot.log和/var/log/cron日志文件進(jìn)行日志滾動(dòng)。 
       /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
          # 調(diào)用日志滾動(dòng)通用函數(shù)
          sharedscripts
          # 在日志滾動(dòng)之后執(zhí)行,postrotate與endscript之間的命令
          postrotate
             /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
              /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
          endscript
         }

           如果我們寫(xiě)好了一個(gè)日志滾動(dòng)的配置文件,怎樣知道日志滾動(dòng)處理程序根據(jù)配置文件對(duì)日志文件的

           操作是否成功呢。
           則要使用 logrotate 命令的選項(xiàng)以指定配置文件進(jìn)程測(cè)試了。
          【logrotate】命令格式
           logrotate [選項(xiàng)] <configfile>
            -d:       詳細(xì)顯示指令執(zhí)行過(guò)程,便于排錯(cuò)或了解程序執(zhí)行的情況。
            -f:       強(qiáng)行啟動(dòng)日志文件的滾動(dòng)操作。忽視 logrotate 中定義的日志滾動(dòng)條件??梢杂脕?lái)測(cè)試所配置

            的日志滾動(dòng)是否正確。

            決定使用 logrotate 應(yīng)用程序來(lái)做 httpd 服務(wù)器的日志滾動(dòng).
         1)、在/etc/logrotate.d/目錄下,新建文件 httpd 做為 httpd 服務(wù)的日志文件的滾動(dòng)配置文件。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      [root@node2 ~]# cat /etc/logrotate.d/httpd
      /usr/local/apache2/logs/access.log  /usr/local/apache2/logs/error.log {
         missingok         # 若日志文件丟失則創(chuàng)建一個(gè)新的日志文件
         notifempty
         rotate   4
         size  2M          # 當(dāng)日志文件達(dá)到 2M 以后才做日志文件的滾動(dòng)
         sharedscripts
         postrotate
             /bin/kill -1 `cat /var/run/httpd.pid  2>/dev/null` 2>/dev/null
         endscript
       }

      注意:
              要想使用命令【logrotate】的 -f 參數(shù)來(lái)測(cè)試剛配置好的日志滾動(dòng)配置文件,記得一定要使用指令

               rotate n 來(lái)備份幾個(gè)滾動(dòng)后日志文件。如果沒(méi)有使用rotate
               指令的話(huà),【logrotate -f /etc/logrotate.d/configfile】是不會(huì)備份滾動(dòng)后的日志的。

               一執(zhí)行【logrotate -f /etc/logrotate.d/configfile】就會(huì)看到一個(gè)現(xiàn)象:被滾動(dòng)的日志文件被清空了。
               使用 -f 選項(xiàng),如果我們的配置文件中有錯(cuò)誤,也會(huì)顯示出來(lái)的。便于我們修改。
                也可以使用【date】來(lái)調(diào)整系統(tǒng)時(shí)間,來(lái)執(zhí)行/etc/cron.daily/logrotate任務(wù)。就可以看到結(jié)果了。

       

      2)、模擬應(yīng)用程序logrotate執(zhí)行的時(shí)候,httpd服務(wù)器的日志是否滾動(dòng)

      1
      2
      3
      4
         [root@node2 ~]# ll /usr/local/apache2/logs/
         total 53172
         -rw-r--r-- 1 root root 25702370 Jun 11 16:19 access.log
         -rw-r--r-- 1 root root      833 Jun 11 16:18 error.log

      使用 logrotate 命令的 -f 選項(xiàng)強(qiáng)制執(zhí)行日志文件的滾動(dòng)

      1
      [root@node2 ~]# logrotate   -f /etc/logrotate.d/httpd

      再檢查 httpd 服務(wù)器的日志是否滾動(dòng)了?期待或

      1
      2
      3
      4
      5
      6
         [root@node2 ~]# ll /usr/local/apache2/logs/
         total 53176
         -rw-r--r-- 1 root root        0 Jun 11 16:27 access.log
         -rw-r--r-- 1 root root 25702370 Jun 11 16:19 access.log.1
         -rw-r--r-- 1 root root        0 Jun 11 16:27 error.log
         -rw-r--r-- 1 root root      833 Jun 11 16:27 error.log.1

      說(shuō)明:
          從結(jié)果可以得知:
                       使用命令【logrotate】實(shí)現(xiàn)了對(duì) httpd 服務(wù)器的日志文件做了日志滾動(dòng)。

       

      3、怎么讓日志滾動(dòng)自動(dòng)執(zhí)行呢?
             Linux 系統(tǒng)中有兩個(gè)守護(hù)進(jìn)程 crond 和 anacron ,用于自動(dòng)執(zhí)行系統(tǒng)和用戶(hù)的周期性任務(wù)。
             crond 與 anacron 是完全不同的兩個(gè)用于定期執(zhí)行任務(wù)的守護(hù)進(jìn)程。
             crond 假定服務(wù)器是 7x24 小時(shí)運(yùn)行的,當(dāng)有一段關(guān)機(jī)時(shí)間就會(huì)遺漏這一時(shí)間段

             應(yīng)該執(zhí)行的 crond 任務(wù)。
             anacron 是為了執(zhí)行因?yàn)闀r(shí)間不連續(xù),crond 而遺漏的任務(wù)。
            這樣,它們兩攜手起來(lái)就不會(huì)因?yàn)榉?wù)器關(guān)機(jī)或系統(tǒng)時(shí)間改變而遺漏計(jì)劃任務(wù)了。
           周期性任務(wù)計(jì)劃又分為:系統(tǒng)的周期性任務(wù)計(jì)劃(定義在/etc/crontab)和用戶(hù)的周期性任務(wù)計(jì)劃

          (定義在/var/spool/cron/$user)。
          crond 守護(hù)進(jìn)程是如何完成周期性任務(wù)計(jì)劃的執(zhí)行的呢?
           crond 首先會(huì)會(huì)讀取,系統(tǒng)的周期性任務(wù)計(jì)劃(定義在/etc/crontab)和用戶(hù)的周期性任務(wù)計(jì)劃

          (定義在/var/spool/cron/$user),crond 守護(hù)進(jìn)程時(shí)時(shí)監(jiān)控著,
          是否到了周期性任務(wù)計(jì)劃的執(zhí)行時(shí)間。當(dāng)任務(wù)計(jì)劃中的時(shí)間和日期與系統(tǒng)的當(dāng)前時(shí)間和日期相同

          時(shí),就執(zhí)行相應(yīng)的周期性任務(wù)計(jì)劃。crond 任務(wù)執(zhí)行結(jié)束后,
         任何輸出將作為郵件發(fā)送給安排周期性任務(wù)的所有者。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
        [root@node2 ~]# cat /etc/crontab
         SHELL=/bin/bash
         PATH=/sbin:/bin:/usr/sbin:/usr/bin
         MAILTO=root
         HOME=/
         # run-parts
         01 * * * * root run-parts /etc/cron.hourly
         02 4 * * * root run-parts /etc/cron.daily
         22 4 * * 0 root run-parts /etc/cron.weekly
         42 4 1 * * root run-parts /etc/cron.monthly

        說(shuō)明:
             這是定義系統(tǒng)的周期性任務(wù)計(jì)劃的配置文件。
             02 4 * * * root run-parts /etc/cron.daily  表示:每天4點(diǎn)02分,使用root用戶(hù)去執(zhí)行命令(腳本)run-parts /etc/cron.daily
             其中 /etc/cron.daily 是命令或腳本(run-parts)的參數(shù)。
             而 /etc/cron.daily 目錄中定義很多要執(zhí)行的可執(zhí)行腳本,這些腳本就是要執(zhí)行的任務(wù)。
        
         查看每天的計(jì)劃任務(wù)有哪些?

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
         [root@node2 ~]# tree /etc/cron.daily/
         /etc/cron.daily/
         |-- 0anacron
         |-- 0logwatch -> /usr/share/logwatch/scripts/logwatch.pl
         |-- cups
         |-- logrotate      ---------> logrotate 日志滾動(dòng)的任務(wù)
         |-- makewhatis.cron
         |-- mlocate.cron
         |-- prelink
         |-- rpm
         `-- tmpwatch
         0 directories, 9 files

      查看腳本 run-parts 是任務(wù)執(zhí)行任務(wù)的

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      [root@node2 ~]# cat /usr/bin/run-parts
      #!/bin/bash
      # run-parts - concept taken from Debian
      # keep going when something fails
       set +e
      if [ $# -lt 1 ]; then
              echo "Usage: run-parts <dir>"
              exit 1
      fi
         if [ ! -d $1 ]; then
              echo "Not a directory: $1"
              exit 1
         fi
      # Ignore *~ and *, scripts
         for in $1/*[^~,] ; do
                [ -d $i ] && continue
          # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts 排除一些格式的文件
                "${i%.rpmsave}" != "${i}" ] && continue
                "${i%.rpmorig}" != "${i}" ] && continue
                "${i%.rpmnew}" != "${i}" ] && continue
                "${i%.swp}" != "${i}" ] && continue
                "${i%,v}" != "${i}" ] && continue
                
          # 執(zhí)行 /etc/cron.daily/的具有可執(zhí)行權(quán)限的文件。
                if [ -x $i ]; then
                        $i 2>&1 | awk -v "progname=$i" \
                                      'progname {
                                           print progname ":\n"
                                           progname="";
                                       }
                                       { print; }'
                fi
        done
        exit 0
        說(shuō)明:
            腳本 run-parts 是先判斷目錄/etc/cron.daily 的文件,符合條件的再讓它去執(zhí)行。
        查看 /etc/cron.daily/logrotate 任務(wù)腳本
        [root@node2 ~]# cat /etc/cron.daily/logrotate
        #!/bin/sh
        /usr/sbin/logrotate /etc/logrotate.conf
        EXITVALUE=$?
          if [ $EXITVALUE != 0 ]; then
              /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
          fi
       exit 0

       

      說(shuō)明:
            腳本 run-parts 是先判斷目錄/etc/cron.daily 的文件,符合條件的再讓它去執(zhí)行。

           查看 /etc/cron.daily/logrotate 任務(wù)腳本

      1
      2
      3
      4
      5
      6
      7
      8
      [root@node2 ~]# cat /etc/cron.daily/logrotate
      #!/bin/sh
      /usr/sbin/logrotate /etc/logrotate.conf
      EXITVALUE=$?
      if [ $EXITVALUE != 0 ]; then
           /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
      fi
       exit 0

       說(shuō)明:
          /usr/sbin/logrotate /etc/logrotate.conf
          logrotate   日志滾動(dòng)程序根據(jù)配置文件configfile(/etc/logrotate.conf)來(lái)對(duì)日志的滾動(dòng)、備份、壓縮等操作。


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多