首页 > 代码库 > Linux下基础命令(六)
Linux下基础命令(六)
Linux计划任务与日志的管理
linux终究按任务与日志管理
– Linux中的计划任务
– at计划任务的使用
– cron计划任务的使用
Linux服务器的日志管理
– 日志的种类和记录的方式
– 实战—自定义ssh服务的日志存储
– 实战—日志的回滚
– 实战—搭建rsyslog远程日志服务器
什么是计划任务
大家平常都会有一些比如说:你每天固定几点起床?每天按时上班打卡、每月5号准时开工资、每年2月14你俩口子某某纪念日等这些诸如此类,这些都是定时发生的。或者说是通俗点说:例行公事;还比如说我们还会遇到一些突发事件,临时几点过来加个班?刚好晚上几点聚个餐?
像上面这些情况,如果事少的话你大脑可以记住,如果事很多,像老板经理董事长每天的工作安排,通常都是记在一些本上,或者闹铃提醒等。
那么,咱们的LINUX系统和上面的情况也很类似,我们也可以通过一些设置。来让电脑定时提醒我们该做什么事了。或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务。而遇到一些需要执行的事情或任务。我们也可以通过命令来告诉电脑一会临时把这个工作给做一下
总结:在我们LINUX中,我们就是通过crontab和at这两个东西来实现这些功能的
计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据
at和crontab命令的区别
我们从上面的举例中可以看到,我们一般的工作安排方式分两种:
一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情
一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务
我们回到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. 在19:33分时,创建/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:44将abclinuxtouch写入到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想删除san的cron计划任务
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. 创建一个计划任务每分钟输出Linuxtouch到aaa文件里
[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
每月1、10、22日的4 : 45重启apache
– 45 4 1,10,22 * */etc/init.d/httpd restart
每月1到10日的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. 每天2:00 备份/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~]#
如果不明白uniq和sort的使用方法请看下方
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 | 定时相关 |
邮件相关 | |
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端口接收使用UDP和TCP协议转发过来的日志 |
#$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: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,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:将链设置为政策 ACCEPT:filter [确定]
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:将链设置为政策 ACCEPT:filter [确定]
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下基础命令(六)