Linux下基礎命令(六)

Linux計劃任務與日誌的管理


 

            linux終究按任務與日誌管理

           Linux中的計劃任務

           at計劃任務的使用

           cron計劃任務的使用

            Linux服務器的日誌管理

           日誌的種類和記錄的方式

           實戰自定義ssh服務的日誌存儲

           實戰日誌的回滾

           實戰搭建rsyslog遠程日誌服務器

什麼是計劃任務


 

      大家平常都會有一些比如說:你每天固定幾點起牀?每天按時上班打卡、每月5號準時開工資、每年214你倆口子某某紀念日等這些諸如此類,這些都是定時發生的。或者說是通俗點說:例行公事;還比如說我們還會遇到一些突發事件,臨時幾點過來加個班?剛好晚上幾點聚個餐?

 像上面這些情況,如果事少的話你大腦可以記住,如果事很多,像老闆經理董事長每天的工作安排,通常都是記在一些本上,或者鬧鈴提醒等。

 那麼,咱們的LINUX系統和上面的情況也很類似,我們也可以通過一些設置。來讓電腦定時提醒我們該做什麼事了。或者我們提前設置好,告訴電腦你幾點做什麼幾點做什麼,這種我們就叫它定時任務。而遇到一些需要執行的事情或任務。我們也可以通過命令來告訴電腦一會臨時把這個工作給做一下

總結:在我們LINUX中,我們就是通過crontabat這兩個東西來實現這些功能的

計劃任務的作用:是做一些週期性的任務,在生產中的主要用來定期備份數據

 

 

atcrontab命令的區別


我們從上面的舉例中可以看到,我們一般的工作安排方式分兩種:

 一種是定時性的,也就是例行。就是每隔一定的週期就要重複來做這個事情

 一種是突發性的,就是這次做完了這個事,就沒有下一次了,臨時決定,只執行一次的任務

我們回到LINUX中來看at crontab這兩個命令:

 at:它是一個可以處理僅執行一次就結束的指令

 crontab:它是會把你指定的工作或任務,比如:腳本等,按照你設定的週期一直循環執行下去

 

 

at計劃任務的使用及實戰


語法格式: at 時間

服務:atd

1.         開啓atd服務

[root@centos-6-1~]# service atd start                  #啓動atd服務
正在啓動 atd                                             [確定]
[root@centos-6-1~]# echo $?                     #是否啓動成功
0
[root@centos-6-1~]#
[root@centos-6-1~]# service atd stop                #關閉atd服務
停止 atd                                                [確定]
[root@centos-6-1~]# at                          #如果關閉atd服務at命令是無法執行的
Garbledtime
[root@centos-6-1~]#

[root@centos-6-1~]# chkconfig --list  |grep atd     #查看是否開機自啓動
atd                0:關閉 1:關閉 2:關閉 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#

[root@centos-6-1~]# chkconfig --level 345  atd on      #設置345級別開機自啓動
[root@centos-6-1~]# chkconfig --list  |grep atd
atd                0:關閉 1:關閉 2:關閉 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#

 

實戰--使用at創建計劃任務


 

1.         1933分時,創建/qwer/目錄

[root@centos-6-1~]# date                               #查看當前時間
2017 07 05星期三 19:29:33 CST
[root@centos-6-1~]#

[root@centos-6-1~]# at 19:33   ---注意:如果是上午時間,時間後面加上am(上午9:20表示9:20am
at>mkdir /qwer/                                     #創建/qwer/目錄       
at><EOT>                                                #結束:ctrl+d
job 1 at2017-07-05 19:33
[root@centos-6-1~]#
[root@centos-6-1~]# date                               #查看當前時間
2017 07 05星期三 19:35:22 CST
[root@centos-6-1~]# ll /
總用量 94
drwxr-xr-x.   2 root root 4096 6   7 18:54 aaa
dr-xr-xr-x.   2 root root 4096 6   7 18:02 bin
dr-xr-xr-x.   5 root root 1024 6   7 18:04 boot
-rw-r--r--.   1 root root 2006 9  18 2014CentOS6-Base-163.repo
drwxr-xr-x.  18 root root 3580 7   5 17:03 dev
drwxr-xr-x.  75 root root 4096 7   5 18:10 etc
drwxr-xr-x.   2 root root 4096 9  23 2011 home
dr-xr-xr-x.  10 root root 4096 7   5 18:09 lib
dr-xr-xr-x.   8 root root 12288 7   5 18:08 lib64
drwx------.   2 root root 16384 6   7 18:00 lost+found
drwxr-xr-x.   2 root root 4096 9  23 2011 media
drwxr-xr-x.   2 root root 4096 9  23 2011 mnt
drwxr-xr-x.   2 root root 4096 9  23 2011 opt
dr-xr-xr-x.105 root root     0 7   5 18:24 proc
drwxr-xr-x.   2 root root 4096 7   5 19:33 qwer       #已經創建成功
dr-xr-x---.   2 root root 4096 7   5 19:34 root
dr-xr-xr-x.   2 root root 4096 7   5 18:08 sbin
drwxr-xr-x.   7 root root     0 7   5 18:24 selinux
drwxr-xr-x.   2 root root 4096 9  23 2011 srv
drwxr-xr-x   13 root root     0 7   5 18:24 sys
drwxrwxrwt.   3 root root 4096 7   5 19:34 tmp
drwxr-xr-x.  13 root root 4096 6   7 18:01 usr
drwxr-xr-x.  18 root root 4096 6   7 18:03 var
[root@centos-6-1~]#

1.         19:34時在當前目錄下創建aaa文件

[root@centos-6-1~]# at 19:34
at>
at>
at>
at>touch aaa
at><EOT>
job 2 at2017-07-05 19:34
[root@centos-6-1~]# date
2017 07 05星期三 19:32:58 CST
[root@centos-6-1~]#
[root@centos-6-1~]# ll
總用量 24
-rw-r--r--.1 root root     0 7   5 19:34 aaa                 #創建成功
-rw-------.1 root root   955 6   7 18:05 anaconda-ks.cfg
-rw-r--r--.1 root root 13368 6   7 18:05 install.log
-rw-r--r--.1 root root  3482 6   7 18:03 install.log.syslog
[root@centos-6-1~]#

 

如何查看執行任務


 

這個查看,只能看到還沒有執行的。如果這個任務已經開始執行或者執行完成了,是看不到

 

at -l 查看計劃任務

atq 查看計劃任務

 

1.         19:44abclinuxtouch寫入到aaa文件中

[root@centos-6-1~]# at 19:44                        #19:44創建定時任務
at> echo"abclinuxtouch" >> aaa                      #abclinuxtouch 寫入到aaa
at><EOT>
job 4 at2017-07-05 19:44
[root@centos-6-1~]# date         
2017 07 05星期三 19:43:33 CST
[root@centos-6-1~]# atq                         #查看計劃任務
4   2017-07-05 19:44 a root
[root@centos-6-1~]# at -l                           #查看計劃任務
4   2017-07-05 19:44 a root
[root@centos-6-1~]# date
2017 07 05星期三 19:43:51 CST
[root@centos-6-1~]# cat aaa                        
abclinuxtouch
[root@centos-6-1~]#

 

 

任務的格式:

任務編號

執行的時間

隊列

執行者

3

Fri Oct 28 20:55:00 2016

a

root

 

at計劃任務的特殊寫法


 

[root@xuegod72 ~]# at 20:00 2016-10-1   在某天
[root@xuegod72 ~]# at now +10min   10分鐘後執行
[root@xuegod72 ~]# at 17:00 tomorrow   明天下午5點執行
[root@xuegod72~]# at 6:00 pm +3 days   3天以後的下午6點執行
對於系統來說 :計劃任務 就是在某個特定的時刻,執行一個腳本文件

 

任務的存放位置


創建成功的at計劃任務會在/var/spool/at/目錄下成生一個可執行的腳本文件

[root@centos-6-1~]# at now + 1min               #1分鐘後執行
at>mkdir -r /abc/aaa/bbb/ccc                    #創建遞歸目錄
at><EOT>
job 11 at2017-07-05 21:13
[root@centos-6-1~]# atq                      #查看所有at計劃任務
11  2017-07-05 21:13 a root
[root@centos-6-1~]# date             
2017 07 05星期三 21:12:49 CST
[root@centos-6-1~]# cd /var/spool/at/           #進入at任務的存放位置
[root@centos-6-1at]# ls
a0000b017d4819  spool                         #a0000b017d4819文件就是剛剛新建的at任務
[root@centos-6-1at]#

1.         查看at計劃任務的所執行的命令

[root@centos-6-1at]# at now + 1min                 
at>mkdir -r /abc/adsfsadfqwe                    #創建/abc/adsfsadfqwe目錄  
at><EOT>
job 12 at2017-07-05 21:16
You havenew mail in /var/spool/mail/root
[root@centos-6-1at]#
[root@centos-6-1at]# cd /var/spool/at/
[root@centos-6-1at]# ls
a0000c017d481c  spool
[root@centos-6-1at]# tail -5 a0000c017d481c         #查看計劃任務的執行命令

${SHELL:-/bin/sh}<< 'marcinDELIMITER59f0e5ed'
mkdir -r/abc/adsfsadfqwe                            #執行的命令

marcinDELIMITER59f0e5ed
[root@centos-6-1at]#

 

 

刪除at計劃任務


 

1.         刪除當前at計劃任務編號爲6,9,5的任務

[root@centos-6-1~]# atq                         #查看所有計劃任務
6   2017-07-06 20:00 a root
9   2017-07-06 21:00 a root
5   2017-07-06 21:00 a root
[root@centos-6-1~]# atr          
atrm   atrun 
[root@centos-6-1~]# atrm  5                     #刪除編號爲5的任務
[root@centos-6-1~]# atrm 6                          #刪除編號爲6的任務
[root@centos-6-1~]# atrm 9                          #刪除編號爲9的任務
[root@centos-6-1~]#
[root@centos-6-1~]# ls
aaa  anaconda-ks.cfg  install.log install.log.syslog
[root@centos-6-1~]#
[root@centos-6-1~]#
[root@centos-6-1~]# atq
[root@centos-6-1~]#

 

總結:at計劃任務執行一次,下次就不能再次執行

 

 

crontab定時任務的使用


            介紹

crond命令定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作

cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。

 

linux任務調度的工作主要分爲以下兩類:

 

            系統執行的工作:系統週期性所要執行的工作,如更新whatis數據庫 updatedb數據庫,日誌定期切割,收集系統狀態信息,/tmp定期清理

               

            個人執行的工作:某個用戶定期要做的工作,由每個用戶自行設置

 

1.         啓動crond服務

[root@centos-6-1~]# service crond start
正在啓動 crond                                           [確定]
[root@centos-6-1~]# chkconfig --list | grep crond
crond             0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#

 

 

cron命令參數介紹


 

spacer.gif

 

 

 

cron的參數:

            crontab -u #指定某個用戶的cron服務

            crontab -l #列出從容服務的詳細內容

            crontab -r #刪除cron服務

            crontab -e #編輯cron服務

例如:

            crontab -u root -l #查看root自己的cron計劃任務

            crontab -u san -r #root想刪除sancron計劃任務

 

cron文件語法


 

一行對應一個任務

小時

星期

命令

0-59

0-23

1-31

1-12

0-6

command

 

特殊符號的含義:

*

代表取值範圍內的數字

(任意)

/

代表""

*/10

-

代表從某個數字到某個數字

8-17

分開幾個離散的數字

6,10-13,20

 

 

創建計劃任務


 

我們可用crontab -e命令來編輯計劃任務

 

編輯的是/var/spool/cron下對應用戶的cron文件

 

crontab的計劃任務內容保存在目錄/var/spool/cron下面

 

也可以直接在/etc/crontab中添加計劃任務

 

 cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab因此我們配置這個文件也能運用cron服務做一些事情。

 

crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務

 

 

1.         創建一個計劃任務每分鐘輸出Linuxtouchaaa文件裏

[root@centos-6-1~]# crontab -e                  #創建crond計劃任務
no crontabfor root - using an empty one
crontab:installing new crontab
[root@centos-6-1~]# echo $?
0
[root@centos-6-1~]# crontab -l
*/1 *   *   *   *   echo "linuxtouch666" >> aaa
[root@centos-6-1~]#
[root@centos-6-1~]# cat aaa                     #計劃任務執行成功
linuxtouch666
linuxtouch666
[root@centos-6-1~]#

1.         編輯/etc/crontab 配置文件(說明)

            SHELL=/bin/bash #變量的值指定shell環境(此處默認爲 bash shell

            PATH=/sbin:/bin:/usr/sbin:/usr/bin#PATH 變量定義用來執行命令的程序路徑;

           MAILTO=root //如果出現錯誤,或者有數據輸出,數據作爲郵件發給這個賬號

[root@centos-6-1~]#  cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# Fordetails see man 4 crontabs

# Exampleof job definition:
#.---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  | .---------- day of month (1 - 31)
# |  | |  .------- month (1 - 12) ORjan,feb,mar,apr ...
# |  | |  |  .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
# |  | |  |  |
# *  * *  *  * user-name command to be executed

~                                                                                                      

~                                                                                                      
"/etc/crontab"16L, 457C

 

 

系統級別的計劃任務


 

對於系統級別的計劃任務,需要執行的命令和腳本都放在這裏:

/etc/cron.* 按兩次tab

[root@xuegod72~]# ls /etc/cron

[root@centos-6-1~]# ls /etc/cron
cron.d/       cron.daily/   cron.deny    cron.hourly/  cron.monthly/crontab       cron.weekly/
[root@centos-6-1~]# ls /etc/cron

 

 

目錄作用解釋:

            cron.d/ #是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來執行的,那麼就放在這個目錄下面。

            cron.deny #控制用戶是否能做計劃任務的文件;

            cron.monthly/ #每月執行的腳本;

            cron.weekly/ #每週執行的腳本;

            cron.daily/ #每天執行的腳本;

            cron.hourly/ #每小時執行的腳本;

            crontab #主配置文件也可添加任務;

計劃任務案例


            每天晚上21:30重啓Apache服務

           30 21 * * * /etc/init.d/httpdrestart

            每月11022日的4 : 45重啓apache

           45 4 1,10,22 * */etc/init.d/httpd restart

            每月110日的4 : 45重啓apache

           45 4 1-10 * * /etc/init.d/httpdrestart

            每隔兩天的上午8點到11點的第3和第15分鐘執行apache

           3,15 8-11 */2 * */etc/init.d/httpd restart

            晚上11點到早上7點之間,每隔一小時重啓apache

              * 11-7/1 * * */etc/init.d/httpd restart

            週一到週五每天晚上 21:15 寄一封信給root@linuxtouch:

           15 21 * * 5 mail -s “hi”root@linuxtouch < /etc/fstab

案例要求:

1.         每天200 備份/etc/目錄到/var/back下面

2.         將備份命令寫到一個腳本中

3.         每天的備份文件名要求格式:2017-10-10_etc.tar.gz

4.         在執行計劃任務時,不要在屏幕輸出任何信息

5.         存放備份內容的目錄要求只保留3天的內容


[root@centos-6-1~]# crontab -l                      #列出所有計劃任務
*/1 *   *   *   *   echo "linuxtouch666" >> aaa
*/1    *   *   *   *   /etc/init.d/httpd  restart
2   *   *   *   *   sh backup.sh > /dev/null        #這個是剛剛寫入的
[root@centos-6-1~]#
[root@centos-6-1~]# cat backup.sh                   #腳本內容
#!/bin/bash
tar czf/var/back/`date +%F`_etc.tar.gz /etc    
#find/var/back -mtime +3 -exec rm -rf {} \;
#find/var/back -mtime +3 -delete
find/var/back -mtime +3 | xargs rm -rf


[root@centos-6-1~]#

 

目錄/etc/cron.daily/etc/cron.weekly/etc/cron.monthly 這些目錄下面的定時任務由進程anacron執行。這個進程會去檢查在宕機時沒有執行的定時任務。然後去執行一下

 

 

 

Linux系統中的日誌管理


 

系統日誌文件概述:

/var/log目錄保管由rsyslog維護的,裏面存放的一些特定於系統和服務的日誌文件

[root@centos-6-1~]# service rsyslog restart            #重啓rsyslog服務
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:                                       [確定]
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#

日誌文件

用途

/var/log/message

大多數系統日誌消息記錄在此處。有也例外的:如與身份驗證,電子郵件處理相關的定期作業任務等

/var/log/secure

安全和身份驗證相關的消息和錯誤的日誌文件

/var/log/maillog

與郵件服務器相關的消息日誌文件

/var/log/cron

與定期執行任務相關的日誌文件

/var/log/boot.log

與系統啓動相關的消息記錄

/var/log/dmesg

與系統啓動相關的消息記錄last

/var/log/httpd/access.log


 

例子:查找登錄失敗的機器並且統計登錄失敗的次數

[root@centos-6-1~]#
[root@centos-6-1~]# grep 'Fail' /var/log/secure | awk '{print $11}'|uniq -c|sort -k1 -n 
      3 192.168.0.23
      4 192.168.31.134
[root@centos-6-1~]#

如果不明白uniqsort的使用方法請看下方

 

 

sort 的工作原理


 

 sort將文件的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。

[root@centos-6-1~]# cat sort.txt                              #普通查看sort.txt文件
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:Systemmessage bus:/:/sbin/nologin
vcsa:x:69:69:virtualconsole memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
mysql:x:27:27:MySQLServer:/var/lib/mysql:/bin/bash
You havenew mail in /var/spool/mail/root

[root@centos-6-1~]# sort sort.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:Systemmessage bus:/:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mysql:x:27:27:MySQLServer:/var/lib/mysql:/bin/bash
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
saslauth:x:499:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
vcsa:x:69:69:virtualconsole memory owner:/dev:/sbin/nologin
[root@centos-6-1~]#

sort-u選項

註釋:

它的作用很簡單,就是在輸出行中去除重複行。

[root@centos-6-1~]# cat abc   
asdf
asdf
adsf
adsf
asdf
adsf
adsf
qwer
qewr
qwer
qewr
qwer
qewr
qwer
qwer
qewr
qwer
ewqr
qewr
qewr



[root@centos-6-1~]# sort -u abc                               #過濾掉重複的行
adsf
asdf
ewqr
qewr
qwer
[root@centos-6-1~]#

[root@centos-6-1~]# sort -r -n  qwer            #r表示降序,n表示按數字進行排序
11
666
78
76
66
66
66
23
9
9
09
8
7
6
6
6
6
6
6
5
5
4
3
2
2
1
1
[root@centos-6-1~]#

[root@centos-6-1~]# sort -n  -r qwer  > qwer            #對於sort命令重定向是不可以的
[root@centos-6-1~]# cat qwer
[root@centos-6-1~]#
[root@centos-6-1~]# cat abc
11
10
9
8
7
6
5
4
3
2
1
[root@centos-6-1~]# sort  -n    abc -o  abc         #加上-o參數即可
[root@centos-6-1~]# cat abc
1
2
3
4
5
6
7
8
9
10
11
[root@centos-6-1~]#

sort -t選項和-k選項

[root@centos-6-1~]# sort -n -k 2 -t  :  shuiguo
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
[root@centos-6-1~]# cat shuiguo
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@centos-6-1~]#

這個文件有三列,列與列之間用冒號隔開了,第一列表示水果類型,第二列表示水果數量,第三列表示水果價格。那麼我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?幸好,sort提供了-t選項,後面可以設定間隔符。

-r:相當於a以什麼爲分隔符
-k:表示以第幾個:分割的數字進行排序
-n:以數字盡行排序
-r:倒序

其他的sort常用選項

-f:會將小寫字母都轉換爲大寫字母來進行比較,亦即忽略大小寫

-c:會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,最後返回1

-C:會檢查文件是否已排好序,如果亂序,不輸出內容,僅返回1

-M:會以月份來排序,比如JAN小於FEB等等

-b:會忽略每一行前面的所有空白部分,從第一個可見字符開始比較。

 

 

uniq的工作原理


文字描述:

uniq LINUX命令,uniq 命令刪除文件中的重複行。

用途:

報告或刪除文件中重複的行。

語法:

uniq  -c | -d | -u   -s Characters   +Characters  ]

參數:

-c 在輸出行前面加上每行在輸入文件中出現的次數。

-d 僅顯示重複行。

-u 僅顯示不重複的行。

 

示例:

1.         刪除名爲abc文件中的重複行並將其保留到一個名爲qwer的文件中

[root@centos-6-1~]# cat abc                     #查看abc文件內容
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]#

[root@centos-6-1~]# uniq   abc    qwer          #只顯示不重複的行
[root@centos-6-1~]# cat qwer
1
2
3
4
5
6
7
8
9
10
11
666
[root@centos-6-1~]#

1.         顯示文件abc中不重複的行。

[root@centos-6-1~]# uniq -u  abc             #顯示不重複的行
1
2
3
4
5
6
7
8
9
10
11
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]# cat abc
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]#

 

1.         顯示abc文件中的所有內容每行重複的次數

[root@centos-6-1~]# cat abc
qwer
qwer
qwer
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]# uniq -c abc       #查看abc文件內容重複行的次數
      3 qwer
      1 1
      1 2
      1 3
      1 4
      1 5
      1 6
      1 7
      1 8
      1 9
      1 10
      1 11
      6 666
[root@centos-6-1~]#

 

日誌管理


 日誌對於安全來說,非常重要,他記錄了系統每天發生的各種各樣的事情,你可以通過他來檢查錯誤發生的原因,或者受到***時***者留下的痕跡。

日誌主要的功能有:審計和監測。他還可以實時的監測系統狀態,監測和追蹤侵入者等等

那麼日誌存放的位置在哪裏呢?

我們的 /var/log 是存放日誌的位置

 

[root@centos-6-1~]# ls /var/log/                #所有日誌文件
anaconda.ifcfg.log    btmp           dracut.log         messages-20170628  spooler-20170628
anaconda.log          btmp-20170705  httpd              messages-20170705  spooler-20170705
anaconda.program.log  ConsoleKit    lastlog            mysqld.log         tallylog
anaconda.storage.log  cron          maillog            secure             wtmp
anaconda.syslog       cron-20170613  maillog-20170613   secure-20170613    yum.log
anaconda.xlog         cron-20170628  maillog-20170628   secure-20170628
anaconda.yum.log      cron-20170705  maillog-20170705   secure-20170705
audit                 dmesg          messages           spooler
boot.log              dmesg.old      messages-20170613  spooler-20170613
[root@centos-6-1~]#

 

常用的日誌文件如下:

            btmp 記錄denglu失敗的信息

            lastlog 記錄最近幾次成功登錄的事件和最後一次不成功的登錄

            messages syslog中記錄信息(有的鏈接到syslog文件)

            utmp 記錄當前登錄的每個用戶

            wtmp 系統登錄的情況:登入登出

登陸信息的查看


 

我們也可以通過last 命令à查看登錄日誌內容

哪個用戶在哪個時間通過哪種方式登錄系統的情況

清空日誌文件

[root@centos-6-1~]# last                            #查看登錄信息
root     pts/4        192.168.0.23     Thu Jul 6 13:59   still logged in  
root     pts/3        192.168.0.23     Thu Jul 6 13:55   still logged in  
root     pts/2        192.168.0.23     Thu Jul 6 12:47   still logged in  
root     tty1                          Thu Jul  6 12:46 - 12:47  (00:00)   
root     pts/1        192.168.31.134   Thu Jul 6 12:14 - 14:51  (02:37)   
root     pts/0        192.168.31.134   Thu Jul 6 12:07 - 14:51  (02:43)   
reboot   system boot 2.6.32-642.el6.x Thu Jul  6 11:42- 15:52  (04:10)   
root     pts/1        192.168.0.23     Wed Jul 5 19:31 - down   (03:25)   
root     pts/0        192.168.0.23     Wed Jul 5 17:11 - down   (05:45)   
root     tty1                          Wed Jul  5 17:10 - down   (05:46)   
reboot   system boot 2.6.32-642.el6.x Wed Jul  5 17:03- 22:56  (05:53)    
root     pts/1        192.168.31.134   Wed Jul 5 16:57 - 16:57  (00:00)   
root     pts/0        192.168.31.134   Wed Jul 5 16:18 - 16:57  (00:39)   
root     tty1                          Wed Jul  5 16:07 - down   (00:55)   
reboot   system boot 2.6.32-642.el6.x Wed Jul  5 15:43- 17:03  (01:20)   
root     tty1                          Thu Jun 29 23:16 -down   (00:00)   
reboot   system boot 2.6.32-642.el6.x Thu Jun 29 15:20 - 23:17  (07:56)   
root     pts/0        192.168.0.23     Wed Jun 28 21:15 - down   (02:44)   
root     tty1                          Wed Jun 28 21:13 -down   (02:45)   
reboot   system boot 2.6.32-642.el6.x Wed Jun 28 19:53 - 23:59  (04:05)   
root     pts/0        192.168.0.23     Tue Jun 13 17:28 - down   (01:13)   
root     tty1                          Tue Jun 13 17:23 -down   (01:19)   
reboot   system boot 2.6.32-642.el6.x Tue Jun 13 17:14 - 18:42  (01:28)   
root     pts/2        192.168.0.23     Tue Jun 13 16:58 - down   (00:05)   
root     pts/1        192.168.0.23     Tue Jun 13 16:58 - down   (00:05)   
root     pts/0        192.168.0.23     Tue Jun 13 16:58 - down   (00:05)   
root     tty1                          Tue Jun 13 16:56 -down   (00:07)    
reboot   system boot 2.6.32-642.el6.x Tue Jun 13 16:55 - 17:04  (00:08)   
root     tty1                          Sat Jun 10 19:35 -crash (2+21:20)  
reboot   system boot 2.6.32-642.el6.x Sat Jun 10 19:34 - 17:04 (2+21:29)  
root     tty1                          Wed Jun  7 23:18 - down   (01:09)   
reboot   system boot 2.6.32-642.el6.x Wed Jun  7 21:10- 00:28  (03:17)   
root     pts/0        192.168.31.134   Wed Jun 7 18:51 - down   (00:21)   
root     tty1                          Wed Jun  7 18:43 - down   (00:28)   
root     tty1                          Wed Jun  7 18:43 - 18:43  (00:00)   
reboot   system boot 2.6.32-642.el6.x Wed Jun  7 18:41- 19:12  (00:30)   
root     tty1                          Wed Jun  7 18:34 - down   (00:01)    
reboot   system boot 2.6.32-642.el6.x Wed Jun  7 18:32- 18:35  (00:03)   
root     tty1                          Wed Jun  7 18:30 - down   (00:00)   
reboot   system boot 2.6.32-642.el6.x Wed Jun  7 18:29- 18:31  (00:01)   
root     tty1                         Wed Jun  7 18:06 - down   (00:13)   
reboot   system boot 2.6.32-642.el6.x Wed Jun  7 18:06- 18:20  (00:14)   

wtmp beginsWed Jun  7 18:06:04 2017
[root@centos-6-1~]# >/var/log/wtmp   清空登錄信息日誌內容
[root@centos-6-1~]# last

wtmp beginsThu Jul  6 15:53:18 2017
[root@centos-6-1~]#

 

/var/log/lastlog 最後登錄信息

[root@centos-6-1~]# cat /var/log/lastlog
]Ypts/0192.168.0.23                          #最後是192.168.0.23主機ssh的這臺主機登入到系統的
[root@centos-6-1~]#
[root@centos-6-1~]#

lastlog記錄所有的用戶什麼時候登錄過系統

[root@centos-6-1~]# lastlog
用戶名           端口     來自             最後登陸時間
root             pts/0    192.168.0.23     7  6 15:59:22 +08002017
bin                                        **從未登錄過**
daemon                                     **從未登錄過**
adm                                        **從未登錄過**
lp                                         **從未登錄過**
sync                                       **從未登錄過**
shutdown                                   **從未登錄過**
halt                                       **從未登錄過**
mail                                       **從未登錄過**
uucp                                       **從未登錄過**
operator                                   **從未登錄過**
games                                      **從未登錄過**
gopher                                     **從未登錄過**
ftp                                        **從未登錄過**
nobody                                     **從未登錄過**
dbus                                       **從未登錄過**
vcsa                                       **從未登錄過**
saslauth                                   **從未登錄過**
postfix                                    **從未登錄過**
sshd                                       **從未登錄過**
apache                                     **從未登錄過**
mysql                                      **從未登錄過**
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#

 

lastlog last的區別:

last 查看IP

lastlog查看後門的賬號

 

 /var/log/btmp 用戶登錄系統的錯誤信息

[root@centos-6-1~]# lastb        
dsafasdfssh:notty    192.168.0.23     Thu Jul 6 16:04 - 16:04  (00:00)   
dsafasdfssh:notty    192.168.0.23     Thu Jul 6 16:04 - 16:04  (00:00)   
dsafasdfssh:notty    192.168.0.23     Thu Jul 6 16:04 - 16:04  (00:00)   
dsafasdfssh:notty    192.168.0.23     Thu Jul 6 16:04 - 16:04  (00:00)   
dsafasdfssh:notty    192.168.0.23     Thu Jul 6 16:04 - 16:04  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 15:59 - 15:59  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 15:59 - 15:59  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 15:59 - 15:59  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 15:59 - 15:59  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 12:47 - 12:47  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 12:47 - 12:47  (00:00)   
root     ssh:notty    192.168.0.23     Thu Jul 6 12:47 - 12:47  (00:00)   
root     tty1                          Thu Jul  6 12:46 - 12:46  (00:00)   
root     ssh:notty    192.168.31.134   Thu Jul 6 12:07 - 12:07  (00:00)   
root     ssh:notty    192.168.31.134   Thu Jul 6 12:07 - 12:07  (00:00)   
root     ssh:notty    192.168.31.134   Thu Jul 6 12:07 - 12:07  (00:00)   
root     ssh:notty    192.168.31.134   Thu Jul 6 12:07 - 12:07  (00:00)   
root     tty1                          Wed Jul  5 17:10 - 17:10  (00:00)   

btmp beginsWed Jul  5 17:10:18 2017
[root@centos-6-1~]#
[root@centos-6-1~]#
[root@centos-6-1~]# du -sh  /var/log/btmp
#如果說你發現你的btmp文件變得很大,說明有很大的可能是有人在暴力破解你的主機
8.0K   /var/log/btmp
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#
[root@centos-6-1log]# ll  -h /var/log/btmp
-rw-------.1 root utmp 7.5K 7   6 16:04/var/log/btmp
[root@centos-6-1log]#

 

日誌的記錄方式


 

日誌的種類:

分類

級別

Daemon

後臺進程相關

kern

內核產生的信息

lpr

打印系統產生的

authpriv

安全認證

cron

定時相關

mail

郵件相關

syslog

日誌服務本身的

news

新聞系統

local0~7

自定義的日誌設備

local0 —> local 7

8個系統保留的類,供其它的程序使用 /或者是用戶自定義

 

日誌的級別—> 7-0

編碼

優先級

嚴重性

7

debug

調試級別的信息,日誌信息最多

6

info

正常的信息,一般信息的,最常用的

5

notice

注意,正常但重要的事件

4

warning

警告

3

err

錯誤,阻止某個模塊或程序的功能不能正常使用

2

crit

關鍵的錯誤,已經影響了整個系統或軟件不能正常工作的信息

1

alert

警報,需要立刻修改的信息

0

emerg

緊急,內核崩潰等嚴重信息

 

日誌服務


 

舊版本 rhel5

服務名稱 syslog

配置文件 /etc/syslog.conf

 

rhel6-7

服務名稱 rsyslog

配置文件 /etc/rsyslog.conf

我們來查看一下日誌的配置文件信息:

編輯配置文件 vim /etc/rsyslog.conf

 

$ModLoadimuxsock # provides support for local system logging (e.g. via logger command)
$ModLoadimklog   # provides kernel loggingsupport (previously done by rklogd)
#$ModLoadimmark  # provides --MARK-- messagecapability

# ProvidesUDP syslog reception
#$ModLoadimudp
#$UDPServerRun514

# ProvidesTCP syslog reception
#$ModLoadimtcp
#$InputTCPServerRun514

 

 

MODULES 日誌的模塊

 

所有的類別級別是info以上除了mail,authpriv,cron (產生的日誌太多,不易於查看)

 

$ModLoad imuxsock

imuxsock是模塊名,支持本地系統日誌的模塊

$ModLoad imklog

imklog是模塊名, 支持內核日誌的模塊

$ModLoad immark

immark是模塊名,支持日誌標記

$ModLoadimudp

#imupd是模塊名,支持udp協議

#$UDPServerRun514

允許514端口接收使用UDPTCP協議轉發過來的日誌

#$ModLoadimtcp

#imtcp是模塊名,支持tcp協議

#$InputTCPServerRun514


內核類型的所有級別日誌

存放到

#kern.*

/dev/console

*.info;mail.none;authpriv.none;cron.none

/var/log/messages

 

 

類別.級別

 

注:

- ”號: 郵件的信息比較多,現將數據存儲到內存,達到一定大小,全部寫到硬盤.有利於減少I/O進程的開銷,數據存儲在內存,如果關機不當數據消失

 

authpriv.*

認證的信息—>存放—>

/var/log/secure

mail.*

郵件相關的信息—> 存放—>

-/var/log/maillog

cron.*

計劃任務相關的信息—>存放—>

/var/log/cron

local7.*

開機時顯示的信息—>存放—>

/var/log/boot.log

 

日誌輸入的規則


            . info 高於info級別的信息全部記錄到某個文件

            .=級別 僅記錄等於某個級別的日誌

            : .=info 只記錄info級別的日誌

            .! 級別 除了某個級別意外,記錄所有的級別信息

            : .!err 除了err外記錄所有

            .none 指的是排除某個類別

實戰-自定義ssh服務的日誌


編輯rsyslog配置文件

輸入 local 0 .* /var/log/sshd.log #日誌的保存路徑

# Save bootmessages also to boot.log
local7.*                                                /var/log/boot.log
local0.*                                         /var/log/sshd.log#添加此行

# ### beginforwarding rule ###
# Thestatement between the begin ... end define a SINGLE forwarding
# rule.They belong together, do NOT split them. If you create multiple
#forwarding rules, duplicate the whole block!

 

定義ssh服務的日誌級別

編輯sshd服務的主配置文件

[root@xuegod72 log]#vim/etc/ssh/sshd_config

#SyslogFacilityAUTH
SyslogFacilityAUTHPRIV   修改爲  SyslogFacility local0
#LogLevelINFO

 

生效配置文件

先重啓rsyslog服務(生效配置),再重啓sshd服務.生成日誌,查看一下有沒有對應的日誌產生

[root@centos-6-1cron]# service rsyslog restart
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:                                       [確定]
[root@centos-6-1cron]# service sshd restart
停止 sshd                                               [確定]
正在啓動 sshd                                            [確定]
[root@centos-6-1cron]# cd /var/log/
[root@centos-6-1log]# ls
anaconda.ifcfg.log    btmp           dracut.log         messages-20170628  spooler-20170628
anaconda.log          btmp-20170705  httpd              messages-20170705  spooler-20170705
anaconda.program.log  ConsoleKit    lastlog            mysqld.log         sshd.log
anaconda.storage.log  cron          maillog            secure             tallylog
anaconda.syslog       cron-20170613  maillog-20170613   secure-20170613    wtmp
anaconda.xlog         cron-20170628  maillog-20170628   secure-20170628    yum.log
anaconda.yum.log      cron-20170705  maillog-20170705   secure-20170705
audit                 dmesg          messages           spooler
boot.log              dmesg.old      messages-20170613  spooler-20170613
[root@centos-6-1log]# cat sshd.log
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]#

 

Jul 6 16:48:56 centos-6-1 sshd[15148]:Server listening on 0.0.0.0 port 22.

上面對就的信息:

時間 主機 服務 進程ID 相關的信息

 

防止日誌被刪除

[root@centos-6-1log]# chattr +a /var/log/sshd.log
[root@centos-6-1log]# lsattr sshd.log              
-----a-------e-sshd.log
[root@centos-6-1log]# rm -rf sshd.log
rm: 無法刪除"sshd.log": 不允許的操作
[root@centos-6-1log]# cat sshd.log
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]

 

日誌的切割(輪轉)


 linux下的日誌會定期進行滾動增加,我們可以在線對正在進行回滾的日誌進行指定大小的切割(動態),如果這個日誌是靜態的。比如沒有應用向裏面寫內容。那麼我們也可以用split工具進行切割;其中Logrotate支持按時間和大小來自動切分,以防止日誌內容將包含/var/log的文件系統填滿。

logrotate配置文件主要有:

 /etc/logrotate.conf以及/etc/logrotate.d/ 這個子目錄下的明細配置文件。

logrotate的執行由crond服務實現。在/etc/cron.daily目錄中,有個文件logrotate,它實際上是個shellscript,用來啓動logrotate

[[email protected]]# cat logrotate
#!/bin/sh

/usr/sbin/logrotate/etc/logrotate.conf
EXITVALUE=$?
if [$EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERTexited abnormally with [$EXITVALUE]"
fi
exit 0
[[email protected]]#

logrotate程序每天由cron在指定的時間(/etc/crontab)啓動

 日誌是很大的,如果讓日誌無限制的記錄下去 是一件很可怕的事情,日積月累就有幾百兆佔用磁盤的空間,

如果你要找出某一條可用信息—>海底撈針

日誌切割:

 當日志達到某個特定的大小,我們將日誌分類,之前的日誌保留一個備份,再產生的日誌創建一個同名的文件保存新的日誌.

 

實戰演示


 

編輯配置文件

說明:(全局參數)

weekly

每週執行回滾,或者說每週執行一次日誌回滾

rotate

表示日誌切分後歷史文件最多保存離現在最近的多少份

create

指定新創建的文件的權限與所屬主與羣組

dateext

使用日期爲後綴的回滾文件 #可以去/var/log目錄下看看

 

[[email protected]]# vi /etc/logrotate.conf

# see"man logrotate" for details
# rotatelog files weekly
weekly

# keep 4weeks worth of backlogs
rotate 4

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

# use dateas a suffix of the rotated file
dateext

 

單獨配置信息

# nopackages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp{                        #指定的日誌文件
    missingok                      #如果文件丟失不報錯
    monthly                            #每月輪換一次
    create 0664 root utmp              #設置btmp這個日誌文件的權限,屬主,屬組
        minsize 1M                  #文件超過1M進行回滾,所以大家要知道它不一定第月都會進行分割,要看這個文件大小來定
    rotate 1                       #日誌進行分割後,只保留一份歷史數據如btmp-20160101
}

/var/log/btmp{
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

其它參數說明:

            monthly: 日誌文件將按月輪循。其它可用值爲‘daily’‘weekly’或者‘yearly’

            rotate 5: 一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。

            compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。

            delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循週期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。

            missingok: 在日誌輪循期間,任何錯誤將被忽略,例如文件無法找到之類的錯誤。

            notifempty: 如果日誌文件爲空,輪循不會進行。

            create 644 root root: 以指定的權限創建全新的日誌文件,同時logrotate也會重命名原始日誌文件。

            postrotate/endscript: 在所有其它指令完成後,postrotateendscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。

               

實戰配置-日誌回滾

ssh日誌的基礎上

編輯配置文件

[[email protected]]# cat sshd       #查看編輯完後的文件內容
/var/log/sshd.log{
missingok
weekly
create 0600root root
minsize 1M
rotate 3



}
[[email protected]]# pwd           #查看當前所在目錄 
/etc/logrotate.d
[[email protected]]#
[[email protected]]# service rsyslog restart   #重啓日誌服務
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:                                       [確定]
[[email protected]]#
[[email protected]]# logrotate -d /etc/logrotate.d/sshd #預演,不實際輪循
readingconfig file /etc/logrotate.d/sshd
reading configinfo for /var/log/sshd.log

Handling 1logs

rotatingpattern: /var/log/sshd.log  weekly (3rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
  log does not need rotating
You havenew mail in /var/spool/mail/root
[[email protected]]# echo $?
0
[[email protected]]#
[[email protected]]# logrotate -vf /etc/logrotate.d/sshd #強制輪循,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日誌文件
readingconfig file /etc/logrotate.d/sshd
readingconfig info for /var/log/sshd.log

Handling 1logs

rotatingpattern: /var/log/sshd.log  forced fromcommand line (3 rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
  log needs rotating
rotatinglog /var/log/sshd.log, log->rotateCount is 3
dateextsuffix '-20170706'
globpattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming/var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3),
old log/var/log/sshd.log.3 does not exist
renaming/var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2),
old log/var/log/sshd.log.2 does not exist
renaming/var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1),
old log/var/log/sshd.log.1 does not exist
renaming/var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0),
old log/var/log/sshd.log.0 does not exist
log/var/log/sshd.log.4 doesn't exist -- won't try to dispose of it
error:error opening /var/log/sshd.log: 不允許的操作
set defaultcreate context
[[email protected]]# echo $?     #提示報錯上一個返回值有問題,需要排查
1
[[email protected]]#
[[email protected]]# cha
chacl     chage    chainsaw  chattr   
[[email protected]]# lsattr /var/log/sshd.log #添加了不能增刪改查的權限
-----a-------e-/var/log/sshd.log
You havenew mail in /var/spool/mail/root
[[email protected]]# chattr -a /var/log/sshd.log #去掉-a就可以了
[root@centos-6-1log]# lsattr /etc/logrotate.d/sshd      #可以讀寫此文件了
-------------e-/etc/logrotate.d/sshd
[root@centos-6-1log]#
[[email protected]]# logrotate -vf /etc/logrotate.d/sshd  ##強制輪循,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日誌文件
readingconfig file /etc/logrotate.d/sshd
readingconfig info for /var/log/sshd.log

Handling 1logs

rotatingpattern: /var/log/sshd.log  forced fromcommand line (3 rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
  log needs rotating
rotatinglog /var/log/sshd.log, log->rotateCount is 3
dateextsuffix '-20170706'
globpattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming/var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3),
old log/var/log/sshd.log.3 does not exist
renaming/var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2),
old log/var/log/sshd.log.2 does not exist
renaming/var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1),
old log/var/log/sshd.log.1 does not exist
renaming/var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0),
old log/var/log/sshd.log.0 does not exist
log/var/log/sshd.log.4 doesn't exist -- won't try to dispose of it
fscreatecontext set to unconfined_u:object_r:var_log_t:s0
renaming/var/log/sshd.log to /var/log/sshd.log.1
creatingnew /var/log/sshd.log mode = 0600 uid = 0 gid = 0
set defaultcreate context
[[email protected]]# echo $?
0
[[email protected]]#
[root@centos-6-1log]# ls
anaconda.ifcfg.log    boot.log       dmesg             maillog-20170705   secure-20170628   #sshd.log.2
anaconda.log          btmp           dmesg.old         messages           secure-20170705   tallylog
anaconda.program.log  btmp-20170705 dracut.log       messages-20170613  spooler           wtmp
anaconda.storage.log  ConsoleKit    httpd             messages-20170628  spooler-20170613  yum.log
anaconda.syslog       cron           lastlog           messages-20170705  spooler-20170628
anaconda.xlog         cron-20170613  maillog           mysqld.log         spooler-20170705
anaconda.yum.log      cron-20170628  maillog-20170613  secure             #sshd.log
audit                 cron-20170705  maillog-20170628  secure-20170613    #sshd.log.1
[root@centos-6-1log]#

再次查看日誌文件大小,已經爲0

[root@centos-6-1log]# du -sh sshd.log
0   sshd.log
[root@centos-6-1log]# du -sh sshd.log.1
0   sshd.log.1
[root@centos-6-1log]# du -sh sshd.log.2
4.0K   sshd.log.2
[root@centos-6-1log]# cat sshd.log.2
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]#

logrotate日誌查看

[root@centos-6-1log]# cd /var/lib/
[root@centos-6-1lib]# ls
alternatives  dav  dhclient  logrotate.status  mysql    polkit-1  random-seed  rsyslog   udev
authconfig    dbus games     misc              plymouth postfix   rpm          stateless  yum
[root@centos-6-1lib]# vim logrotate.status
[root@centos-6-1lib]# cat !$
catlogrotate.status
logrotatestate -- version 2
"/var/log/ConsoleKit/history"2017-7-5
"/var/log/yum.log"2017-6-10
"/var/log/sshd.log"2017-7-6
"/var/log/dracut.log"2017-6-10
"/var/log/httpd/error_log"2017-7-6
"/var/log/wtmp"2017-6-10
"/var/log/spooler"2017-7-5
"/var/log/btmp"2017-7-5
"/var/log/maillog"2017-7-5
"/var/log/secure"2017-7-5
"/var/log/messages"2017-7-5
"/var/log/cron"2017-7-5
"/var/log/httpd/access_log"2017-7-6
[root@centos-6-1lib]#

 

配置遠程日誌服務器->實現日誌集中的管理

需要兩臺Linux主機

192.168.0.17 centos6-1 server

192.168.0.24 centos6-2 client

 

 

service端配置


1.編輯/etc/rsyslog.conf

UDP—>速度快—>不保證數據的完整

TCP—>可靠.完整

使用TCP的方式,修改配置文件把#去掉

# ProvidesTCP syslog reception
$ModLoadimtcp
$InputTCPServerRun514

2.重啓rsyslog服務

[root@centos-6-1~]# service rsyslog restart
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:                                       [確定]
[root@centos-6-1~]# netstat -anptu | grep 514
tcp        0     0 0.0.0.0:514                0.0.0.0:*                   LISTEN      28570/rsyslogd     
tcp        0     0 0.0.0.0:22                 0.0.0.0:*                   LISTEN      15148/sshd         
tcp        0     0 :::514                     :::*                        LISTEN      28570/rsyslogd     
tcp        0     0 :::22                      :::*                        LISTEN      15148/sshd         
[root@centos-6-1~]#

 

client端配置


 

1.修改配置文件/etc/rsyslog.conf修改最後如下三行

            *. * 所有類別和級別的日誌

@@192.168.0.17:514 服務端的IP:端口

#*.*@@remote-host:514
*.*     @@192.168.0.17:514
# ### endof the forwarding rule ###

2.重啓rsyslog服務

[root@centos-6-2~]# service rsyslog restart
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:                                       [確定]
[root@centos-6-2~]#

 

服務端驗證:

服務端配置:

[root@centos-6-1~]# service iptables stop
iptables:將鏈設置爲政策 ACCEPTfilter                    [確定]
iptables:清除防火牆規則:                                 [確定]
iptables:正在卸載模塊:                                   [確定]
[root@centos-6-1~]# setenforce 0
[root@centos-6-1~]# getenforce
Permissive
[root@centos-6-1~]# getenforce
Permissive
[root@centos-6-1~]#
[root@centos-6-1~]# tail -f /var/log/messages
Jul  6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
Jul  6 17:59:25 centos-6-1 kernel: Kernel logging(proc) stopped.
Jul  6 17:59:25 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="15116" x-info="http://www.rsyslog.com"] exiting onsignal 15.
Jul  6 17:59:25 centos-6-1 kernel: imklog 5.8.10,log source = /proc/kmsg started.
Jul  6 17:59:25 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="17848" x-info="http://www.rsyslog.com"] start
Jul  6 22:43:41 centos-6-1 kernel: Kernel logging(proc) stopped.
Jul  6 22:43:41 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="17848" x-info="http://www.rsyslog.com"] exiting onsignal 15.
Jul  6 22:43:42 centos-6-1 kernel: imklog 5.8.10,log source = /proc/kmsg started.
Jul  6 22:43:42 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10" x-pid="28570"x-info="http://www.rsyslog.com"] start
Jul  6 22:54:41 centos-6-1 dbus: avc:  received setenforce notice (enforcing=0)
Jul  7 00:31:01 centos-6-2 root: hello,centos6-1 iam  centos6-2      
Jul  7 00:35:13 centos-6-2 root: hello,centos6-1 iam  centos6-2   #同步成功

 

客戶端配置:

[root@centos-6-2~]# service iptables stop
iptables:將鏈設置爲政策 ACCEPTfilter                    [確定]
iptables:清除防火牆規則:                                 [確定]
iptables:正在卸載模塊:                                   [確定]
[root@centos-6-2~]# logger -p  info "hello,centos6-1i am  centos6-2"
[root@centos-6-2~]# date
2017 07 07星期五 00:35:15 CST
[root@centos-6-2~]#

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章