首页 > 代码库 > Linux下基础命令(六)

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命令参数介绍


 

技术分享

 

 

 

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

[root@centos-6-1cron.daily]# cat logrotate
#!/bin/sh

/usr/sbin/logrotate/etc/logrotate.conf
EXITVALUE=http://www.mamicode.com/$?
if [$EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERTexited abnormally with [$EXITVALUE]"
fi
exit 0
[root@centos-6-1cron.daily]#

logrotate程序每天由cron在指定的时间(/etc/crontab)启动

 日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,

如果你要找出某一条可用信息—>海底捞针

日志切割:

 当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.

 

实战演示


 

编辑配置文件

说明:(全局参数)

weekly

每周执行回滚,或者说每周执行一次日志回滚

rotate

表示日志切分后历史文件最多保存离现在最近的多少份

create

指定新创建的文件的权限与所属主与群组

dateext

使用日期为后缀的回滚文件 #可以去/var/log目录下看看

 

[root@centos-6-1cron.daily]# 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日志的基础上

编辑配置文件

[root@centos-6-1logrotate.d]# cat sshd       #查看编辑完后的文件内容
/var/log/sshd.log{
missingok
weekly
create 0600root root
minsize 1M
rotate 3



}
[root@centos-6-1logrotate.d]# pwd           #查看当前所在目录 
/etc/logrotate.d
[root@centos-6-1logrotate.d]#
[root@centos-6-1cron.daily]# service rsyslog restart   #重启日志服务
关闭系统日志记录器:                                       [确定]
启动系统日志记录器:                                       [确定]
[root@centos-6-1cron.daily]#
[root@centos-6-1cron.daily]# 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
[root@centos-6-1cron.daily]# echo $?
0
[root@centos-6-1cron.daily]#
[root@centos-6-1cron.daily]# 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
[root@centos-6-1cron.daily]# echo $?     #提示报错上一个返回值有问题,需要排查
1
[root@centos-6-1cron.daily]#
[root@centos-6-1cron.daily]# cha
chacl     chage    chainsaw  chattr   
[root@centos-6-1cron.daily]# lsattr /var/log/sshd.log #添加了不能增删改查的权限
-----a-------e-/var/log/sshd.log
You havenew mail in /var/spool/mail/root
[root@centos-6-1cron.daily]# 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]#
[root@centos-6-1cron.daily]# 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
[root@centos-6-1cron.daily]# echo $?
0
[root@centos-6-1cron.daily]#
[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~]#

 


本文出自 “linuxtouch” 博客,请务必保留此出处http://linuxtouch.blog.51cto.com/12429083/1945568

Linux下基础命令(六)