自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Linux下的syslog守護(hù)進(jìn)程

系統(tǒng) Linux
syslog是Linux下默認(rèn)的日志守護(hù)進(jìn)程。任何希望生成日志信息的程序都可以通過syslog 接口實(shí)現(xiàn)該目的。

【引自暮回_梓的博客】syslog是Linux下默認(rèn)的日志守護(hù)進(jìn)程。任何希望生成日志信息的程序都可以通過syslog 接口實(shí)現(xiàn)該目的。

同時(shí),幾乎所有的網(wǎng)絡(luò)設(shè)備都可以通過syslog協(xié)議,將日志信息以UDP的形式傳送給遠(yuǎn)端服務(wù)器,遠(yuǎn)端接收日志服務(wù)器必須通過syslogd監(jiān)聽UDP端口514,并根據(jù) syslog.conf 配置文件張的配置處理。配置文件 /etc/rsyslog.conf 中規(guī)定了syslogd如何根據(jù)設(shè)備和信息的重要級(jí)別來報(bào)告信息。

這里只需要有個(gè)大致了解即可,下面都會(huì)提到這些東西。

關(guān)于配置文件:

CentOS之前的版本下,配置文件為/【etc/syslog.conf 】,具體從哪一版開始不清楚,但是從CentOS6.5之后,配置文件名變更為【/etc/rsyslog.conf 】。

syslog是支持日志分類輸出到某個(gè)特定文件中的,但是有幾個(gè)限制:

1、syslog日志輸出支持分類,但不支持每個(gè)進(jìn)程單獨(dú)輸出到某個(gè)文件(因?yàn)閟yslog并不是作為一套完整的日志庫而產(chǎn)生的);

2、syslog輸出的日志文件位置并不是任意的,默認(rèn)僅僅限于【/var/log/】目錄下,如果指定到其他位置,視為無效;

在該文件中,拋過大部分的注釋信息,主要內(nèi)容基本都下圖格式:  

 

從前向后,依次為:

【服務(wù).優(yōu)先級(jí) <tab> action字段】。

其中,【服務(wù).優(yōu)先級(jí)】一起統(tǒng)稱為選擇條件,如下圖所示。條件選擇是對(duì)服務(wù)進(jìn)行了分類,便于syslog對(duì)日志的輸出管理。同時(shí)一行的配置中,允許出現(xiàn)多個(gè)選擇條件,多個(gè)選擇條件使用 ; 隔開。  

 

服務(wù)(facility),用來指定syslog的功能,主要包括:

kern          內(nèi)核信息,首先通過 klogd 傳遞;

user          用戶進(jìn)程;

mail          郵件;

daemon        后臺(tái)進(jìn)程;

authpriv      授權(quán)信息;

syslog        系統(tǒng)日志;

lpr           打印信息;

news          新聞組信息;

uucp          由uucp生成的信息

cron          計(jì)劃和任務(wù)信息。

mark          syslog 內(nèi)部功能用于生成時(shí)間戳

local0----local7 與自定義程序使用,例如使用 local5 做為 ssh 功能

*                  通配符代表除了 mark 以外的所有功能

優(yōu)先級(jí)(level),指定了syslog的優(yōu)先級(jí),從高到底依次為:

emerg 或 panic   該系統(tǒng)不可用(最緊急消息)

alert            需要立即被修改的條件(緊急消息)

crit             阻止某些工具或子系統(tǒng)功能實(shí)現(xiàn)的錯(cuò)誤條件(重要消息)

err              阻止工具或某些子系統(tǒng)部分功能實(shí)現(xiàn)的錯(cuò)誤條件(出錯(cuò)消息)

warning          預(yù)警信息(警告消息)

notice           具有重要性的普通條件(普通但重要的消息)

info             提供信息的消息(通知性消息)

debug            不包含函數(shù)條件或問題的其他信息(調(diào)試級(jí)-信息量最多)

none             沒有重要級(jí),通常用于排錯(cuò)(不記錄任何日志消息)

*                所有級(jí)別,除了none

action:

1. /var/log/lastlog : 記錄每個(gè)使用者最近簽入系統(tǒng)的時(shí)間, 因此當(dāng)使用者簽入時(shí), 就會(huì)顯示其上次簽入的時(shí)間, 您應(yīng)該注意一下這個(gè)時(shí)間, 若不是您上次簽入的時(shí)間, 表示您的帳號(hào)可能被人盜用了. 此檔可用 /usr/bin/lastlog 指令讀取.

2. /var/run/utmp : 記錄每個(gè)使用者簽入系統(tǒng)的時(shí)間, who, users, finger 等指令會(huì)查這個(gè)檔案.

3. /var/log/wtmp : 記錄每個(gè)使用者簽入及簽出的時(shí)間, last 這個(gè)指令會(huì)查這個(gè)檔案. 這個(gè)檔案也記錄 shutdown 及 reboot 的動(dòng)作.

4. /var/log/secure : 登錄系統(tǒng)的信息

5. /var/log/maillog : 記錄 sendmail 及 pop 等相關(guān)訊息.

6. /var/log/cron : 記錄 crontab 的相關(guān)訊息 ,定時(shí)器的信息

7. /var/log/dmesg : /bin/dmesg 會(huì)將這個(gè)檔案顯示出來, 它是開機(jī)時(shí)的畫面訊息.

8. /var/log/xferlog : 記錄那些位址來 ftp 拿取那些檔案.

9. /var/log/messages : 系統(tǒng)大部份的訊息皆記錄在此, 包括 login, check password , failed login, ftp, su 等.

調(diào)用syslog的守護(hù)進(jìn)程:

syslog也是一個(gè)守護(hù)進(jìn)程,準(zhǔn)確的說應(yīng)該是rsyslog,位于/etc/rc.d/init.d/rsyslog,這是syslog的啟動(dòng)腳本。當(dāng)我們修改了啟動(dòng)交而不能文件中的內(nèi)容之后,需要使用【service rsyslog restart】命令重啟該服務(wù)。

syslog不僅僅用來記錄本機(jī)文件的日志信息,更多的是作為一個(gè)日志服務(wù)器,用來接收遠(yuǎn)程系統(tǒng)的信息。對(duì)該服務(wù)的啟動(dòng),有兩個(gè)常用選項(xiàng):

-r:將當(dāng)前主機(jī)作為日志服務(wù)器,監(jiān)聽514端口上進(jìn)來的UDP包,接收遠(yuǎn)程系統(tǒng)的信息。沒有該選項(xiàng),將不會(huì)接收來自遠(yuǎn)程系統(tǒng)的信息。

-h:使得當(dāng)前日志服務(wù)器能夠傳送日志信息,

如何配置一個(gè)中央日志服務(wù)器:

1、編輯/etc/sysconfig/rsyslog(CentOS6.5之前的版本該文件叫做syslog),該文件中可以聲明,啟動(dòng)該服務(wù)的時(shí)的啟動(dòng)選項(xiàng)。

-r:上面提到過,表示允許接收外來日志消息;

-m **:將默認(rèn)的時(shí)間戳標(biāo)記信息出現(xiàn)頻率變?yōu)樽约褐付ǖ闹怠緀g: -m240,表示每240分鐘在日志文件中增加一行時(shí)間戳消息】;

-x:表示不希望讓中央日志服務(wù)器解析其他機(jī)器的FQDN(完全合格域名,指的是主機(jī)名+全路徑);

SYSLOGD_OPTIONS="-r -x -m 240 -c 5"

2、重啟rsyslog服務(wù)

service rsyslog restart

3、關(guān)閉防火墻(iptables),允許514號(hào)端口上的連接通過;

4、對(duì)客戶機(jī)進(jìn)行配置syslog

方法一:在客戶機(jī)上syslog的配置文件中,對(duì)有關(guān)配置行的操作動(dòng)作部分用“@”字符指向中央日志服務(wù)器,而不用指向本機(jī)的 /var/log/.....

  1. # Log all the mail messages in one place. 
  2.  
  3. mail.* @192.168.3.24  

方法二:在DNS中定義一個(gè)機(jī)器,命名隨意,這里以“loghost”為例,然后將客戶機(jī)的配置文件改為如下形式。這樣就可以避免以后如果發(fā)生日志服務(wù)器更換的情況,不用再一個(gè)一個(gè)修改客戶機(jī)的syslog配置文件。

  1. # Log all the mail messages in one place. 
  2.  
  3. mail.* @loghost  

對(duì)客戶機(jī)配置完畢之后,以及需要進(jìn)行重啟。

syslog的函數(shù)接口:

  1. #include <syslog.h> 
  2.      void openlog(const char *ident, int  option,  int  facil- ity); 
  3.           # ident:對(duì)哪個(gè)進(jìn)程進(jìn)行日志記錄,為進(jìn)程名 
  4.           # option常用選項(xiàng): 
  5.                LOG_CONS: 
  6.                LOG_PID:打印的每一條日志信息包含當(dāng)前進(jìn)程的PID 
  7.           # facil-ity常用選項(xiàng): 
  8.                LOG_USER:打印的每一條日志信息包含當(dāng)前用戶的等級(jí)信息 
  9.      void syslog(int priority, const char *format, ...); 
  10.           # format:輸出日志信息的參數(shù)列表,用法類同printf 
  11.      void closelog(void);  

測(cè)試用例:

  1. #include <stdio.h> 
  2. #include <syslog.h> 
  3. int main(int argc,char* argv[]) 
  4.     openlog(argv[0],LOG_CONS | LOG_PID, LOG_USER); 
  5.     int count = 0; 
  6.     while(count < 5) 
  7.     { 
  8.         syslog(LOG_INFO, "%d, log info test ..."count); 
  9.         count++; 
  10.     } 
  11.     closelog(); 
  12.     return 0; 
  13.  

為了同時(shí)測(cè)試配置文件,在syslog的配置文件中添加一行內(nèi)容如下:

  1. user.* /var/log/0.1 # 該文件默認(rèn)只能在/var/log下,放在其它目錄下無效 

重啟rsyslog服務(wù);

執(zhí)行原程序,就可以在/var/log/看到0.log文件,打開文件,內(nèi)容如下:

  1. [root@www ~]# cat /var/log/0.log 
  2.  
  3. Apr  7 23:13:12 www ./test_log[4063]: 0, log info test ... 
  4.  
  5. Apr  7 23:13:12 www ./test_log[4063]: 1, log info test ... 
  6.  
  7. Apr  7 23:13:12 www ./test_log[4063]: 2, log info test ... 
  8.  
  9. Apr  7 23:13:12 www ./test_log[4063]: 3, log info test ... 
  10.  
  11. Apr  7 23:13:12 www ./test_log[4063]: 4, log info test ...  

簡(jiǎn)單的例子看到這里就夠了,我看到網(wǎng)上很多人都在討論如何使用syslog針對(duì)特定的某一進(jìn)程輸出日志文件,但都沒有很好的解決方案。盡管在配置文件中提供了local0~local7自定義服務(wù),但也并不是***的,很多情況下并不能真正實(shí)現(xiàn)我們的目的。

這里我想說的是,Linux下的syslog,它出現(xiàn)的目的并不是為了提供用戶每個(gè)進(jìn)程的日志輸出,syslog只是用來作為對(duì)于服務(wù)管理的整套機(jī)制,它針對(duì)的是一類服務(wù),用來做日志服務(wù)器,實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)網(wǎng)絡(luò)中日志的維護(hù)(對(duì)日志的維護(hù),實(shí)際上就是對(duì)整個(gè)計(jì)算機(jī)群的維護(hù))。同時(shí),真正的工程中,并不會(huì)使用syslog作為全套的日志管理工具,在Linux下有提供了很多完整的日志庫工具,比如log4cplus、zlog等。 

責(zé)任編輯:龐桂玉 來源: 51CTO博客
相關(guān)推薦

2010-06-28 14:52:30

cron進(jìn)程

2010-03-02 16:37:53

Linux Quagg

2009-11-24 11:35:59

2012-05-08 11:01:45

linux守護(hù)進(jìn)程

2013-01-15 15:18:46

Linux守護(hù)進(jìn)程

2014-08-01 15:38:37

Linux進(jìn)程管理

2011-03-29 12:45:07

Zabbix進(jìn)程

2009-06-22 11:13:00

linuxJava運(yùn)行環(huán)境

2010-03-16 13:41:09

Python進(jìn)程

2024-10-07 09:03:15

2009-09-16 08:43:51

linux進(jìn)程線程

2010-01-05 10:00:48

Linux進(jìn)程間通信

2010-07-15 15:54:10

Perl守護(hù)進(jìn)程

2019-05-08 11:10:05

Linux進(jìn)程語言

2009-10-27 08:57:50

linux殺死進(jìn)程

2019-02-26 11:15:25

進(jìn)程多線程多進(jìn)程

2024-08-29 13:23:04

WindowsGo語言

2013-12-19 15:01:03

LinuxLinux進(jìn)程

2013-11-06 15:35:49

LinuxLinux進(jìn)程

2009-07-15 17:52:23

sqlite jdbc
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)