哎,感慨万千,我真是个菜鸡,
一 插入文件的隐藏属性
1 charrr 设置隐藏属性
+ 增加某一个特殊特殊参数, 其他原本存在的参数则不动
- 删除某一个特殊参数,其他原本存在的参数不动
= 直接设置参数
a 文件只能增加数据, 不能删除也不能修改数据, 只有root才能设置这个属性
i 文件不能删除,改名,不能写入新数据
s 当文件设置了属性时,如该文件被删除, 它将会被完全从硬盘删除,无法恢复
u 与s相反,文件被删除, 数据还在磁盘里,可以恢复文件
cd /tmp
touch attrtest
chattr +i attrtest
rm attrtest 会报错
chattr -i attrtest 取消这个权限
2 lsattr 显示文件的隐藏属性
-a 将隐藏文件的属性也显示出来
-d 如果接的是目录, 仅列出目录本身的属性而非目录内的文件名
-R 连同子目录数据列出来
二 关于日志
- /var/log/boot.log 开机启动的时候系统内核会去检测与启动硬件,接下来开始启动各种内核支持的功能。只会储存本次开机的启动的消息。
- /var/log/cron 查看计划任务执行的情况
- /var/log/messages 系统放生错误信息都会存在这个文件中
- /var/log/secure 设计登陆,不管登陆是否正确, 都会记录在这
- /var/log/wtmp /var/log/faillog 记录正确登陆的信息和登陆错误的信息
1 rsyslog.service 记录日志文件的服务
1) rsyslog.service的配置文件, /etc/rsyslog.conf
这个文件规定了 什么服务什么等级信息,要被记录在哪里
这个配置大概是这个样子
mail .info /var/log/maillog_info
服务名称:
序号 | 服务类别 | 说明 |
0 | kern | 内核产生的信息 |
1 | user | 用户层级所产生的信息 |
2 | 只要是邮件收发有关的信息 | |
3 | daemon | 只要是系统的服务所产生的信息 |
4 | ayth | 主要认证/授权有关的机制 |
5 | syslog | 就是syslog相关协议产生的信息 |
6 | lpr | 打印的相关信息 |
7 | news | 与新闻组服务器相关的信息 |
8 | uucp | 。。。。 |
9 | cron | 计划任务 |
10 | authpriv | 记录多人账号 |
11 | ffp | FTP 通讯协议 |
16~23 | local0~loacl7 | 保留给本机用户使用的一些日志文件信息 |
信息等级:
7 | defbug | 用来debug时产生的数据 |
6 | info | 仅是一些基本的信息说明 |
5 | notice | 正常信息,但是比info等级高 |
4 | warning | 警示的信息。 |
3 | err | 一些重大的错误信息 |
2 | crit | 严重错误信息 |
1 | alert | 警告,已经很有问题的等级 |
0 | emerg | 疼痛等级,指系统几乎要宕机 |
另外: none(不需要登陆等级)
. 一个点,代表比它严重的等级都被记录下来
.= 代表所需要的等级就是后面接的等级
.! 代表不等于
信息记录的文件名或设备或主机
- 绝对路径
- * 代表目前在线的所有人
1 将mail 相关数据写入到/var/log/maillog
mail.info /var/log/maillog
2 将新闻组数据和计划任务的信息都写入到一个/var/log/cronnews文件中, 但是这两个的警告信息都额外放在/var/log/cronnews.warn
news.*;cron.* /var/log/cronnews
news.=warn;cron.=warn /var/log/cronnews.warn
3 messages 不要记录cron, mail, news的信息
*.*,news,corn,mail.none /var/log/messages
或
*.*; news.none; corn.none;mail.none /var/log/messages
自行添加日志文件功能,
vim /etc/rsyslog.conf
*.info /var/log/admin.log
systemctl restart rsyslog.service 需要重启
日志文件服务器的设置
就是把多台服务器的日志,传到一台服务器。
服务端:
修改/etc/rsyslog.conf 的如下内容
客户端:
vim /etc/rsyslog.conf
*.* @@192.168.1.100 # tcp
#*.* @192.168.1.100 udp
日志文件的循环 logrotate
/etc/logrotate.conf
/etc/logrotate.d/
其中logrotate.conf是主要的参数文件,至于logrotate.d是个目录,该目录的所有文件都会主动地读入logrotate.conf的设置
/etc/logrotate.conf
[root@ ~]# vim /etc/logrotate.conf
# 下面是默认值
weekly # 没星期设置对日志文件进行一次轮询
rotate 4 # 保留几个日志
create # 因为日志文件被更名,因此建立一个新的来继承存贮之意
dateext # 可以让被轮询的文件名称加上日期
include /etc/logrotate.d # 这个目录中的所有的文件都读入这个配置
/var/log/wtmp { # 针对这个日志文件的配置
monthly
create 0664 root utmp # 指定新建文件的权限与所属账号的/组
minsize 1M # 文件一定要超过1M后才进行轮询(略过时间参数)
rotate 1 # 仅保留一个日志文件
}
/etc/logrotate.d/
[root@ ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
- 被处理的日志文件的绝对路径
- 参数, 用{}
- 执行的脚本,需要 sharedscripts endscript 写在这里面, prerotate, 在启动logrotate之前进行的命令,如修改日志文件的属性等;postrotate 在做完prerotate之后启动命令,例如重启。
所以配合/etc/logrotate.conf的默认设置,/etc/logrotate.d/syslog就是 这样:
设置只对cron, maillog,messages, secure, spooler 有效,日志文件每周轮询一次,保留4个文件不进行压缩,轮询往后重启syslogd
当然也可以自己设置,加上隐藏属性a,让日志只能加, 不能删除
在轮询前先-a, 轮询后再-a
[root@ ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/usr/bin/chattr +a /var/log/messages
endscript
}
主动执行日志轮询
logrotate
-v : 启动模式,回显示过程
-f: 不管配置文件的轮询时间, 强制轮询
logrotate -vf /etc/logrotate.conf