本节所讲内容:
at 定制单次执行的计划任务
cron定制周期性计划任务
配置脚本实现周期性任务
配置公司内网服务器每天自动开关机
Linux系统日志记录规律
自定义日志记录方式
配置远程收集日志服务器
语法: at 时间
服务:atd 必须开启
[root@xuegod163 ~]# /etc/init.d/atd status #查看服务状态 atd (pid 2206) is running... [root@xuegod163 ~]# /etc/init.d/atd start #启动服务
【例】
[root@xuegod163 ~]#at 20:00 2015-2-23 #创建计划任务在2015年2年23日20:00执行 [root@xuegod163 ~]#at now +10min #创建计划任务在十分钟后执行
1.1 at查询
[root@xuegod163 ~]# at -l #查询当前的计划任务 32015-02-03 20:55 a root 22015-02-23 20:00 a root [root@xuegod163 ~]# ll /var/spool/at/* -rwx------ 1 root root 3842 Feb 3 20:45 /var/spool/at/a00002016a5170 -rwx------ 1 root root 3842 Feb 3 20:45 /var/spool/at/a000030169e127 PS:执行成功的at计划任务会在该目录下成生一个可执行的脚本文件
语法:atrm at序列号
[root@xuegod163 ~]# atrm 2
2、Crond周期性计划任务
[root@xuegod163 ~]# vim /etc/crontab
[root@xuegod163 ~]# /etc/init.d/crond status #查看服务状态 crond (pid 2195) is running... [root@xuegod163 ~]# chkconfig --list crond #查看是否开机启动 crond 0:off1:off2:on3:on4:on5:on6:off [root@xuegod163 ~]# chkconfig crond on #设置服务开机自启动 [root@xuegod163 ~]#ls /etc/cron* /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly PS:对于系统级别的计划任务,需要执行的命令和脚本都放在这里
2.3 针对用户级别的计划任务
对于root用户:
crontab �Ce #创建
crontab �Cl #显示
crontab �Cr #删除
格式:分 时 日 月 周 命令
取值范围:
分:0-59
小时:0-23
日:1-31
月:1-12
周:0-7 (0 和7 都是周日)
[root@xuegod163 ~]# crontab -e 57 20 * * * echo `date` > /tmp/date.txt [root@xuegod163 ~]# date #查询当前时间 Tue Feb 3 20:57:11 CST 2015 [root@xuegod163 ~]# cat /tmp/date.txt Tue Feb 3 20:57:01 CST 2015 【例】 特殊写法 #每月9,18,22日的3点1分,开始执行备份脚本 1 3 9,18,22 * * /usr/bin/back.sh #每月9-18日,3:00执行 0 3 9-18 * * /usr/bin/back.sh #每5分钟,执行一次 */5 * * * * /usr/bin/back.sh 【例】 每天删除5天前的文件 [root@xuegod163 ~]# crontab -e 1 1 * * * find /home/log/ -type f -mtime +5 -exec rm {} \; 【例】 使用root身份,给其它普通用户指定crontab 语法:crontab -u USERNAME -e/-l/-r [root@xuegod63 ~]# crontab -u mk -e 1 * * * * touch /tmp/a.txt 【例】 清除其他用户的计划任务 [root@xuegod63 ~]# crontab -u mk -r 【例】 清空root用户自己的计划任务: [root@xuegod63 ~]# crontab -r
2.5 anacron
cron用控制循环执行例行性工作。如果我要设定机器每天早上8点进行备份服务。除非保证机器在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。
anacron并没有取代cron的意思,anacron用于机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即执行一下没有执行的任务。
BIOS:计算机在运行时,首先会进入BIOS,它在计算机系统中起着非常重要的作用。一块主板性能优越与否,很大程度上取决于主板上的BIOS管理功能是否先进。
2.6.1 进入bios,一般是在开机后出现主板画面时按Delete键,部分品牌机可能按F2。
2.6.2 启动电脑时看到这个提示按Delete,就可以进入bios设置界面了。然后通过键盘上的箭头选择Power Management Setup,就进入电源管理设置了。
2.6.3 通过回车进入这个设置后,选择Wake Up Event Setup,回车选择Press Enter。
2.6.4最后,在这个界面内继续找到Resume By RTC Alarm,回车选择。
2.6.5 继续回车选择,将Disabied 更改为Enabled,然后继续回车确定。然后再继续设置时间点和日期。
6.6选择日期,并且选择你需要电脑每天在几点开机,当然,要保证你的主板时间是准确的。
6.7 假如你需要每天都定时开机,就选择Every Day,你如果想要在每天6:45开机,就通过数字键输入06:45:00,最后,一般按F10 进行保存,重启电脑后生效!
1.1核心启动日志:/var/log/dmesg
1.2系统报错或重启服务等日志:/var/log/messages
1.3邮件系统日志:/var/log/maillog
1.4 cron(定制任务日志)日志:/var/log/cron #计划日志执行成功与否,在这个文件中看
1.5 验证系统用户登录:/var/log/secure
1.6记录所有的登入和登出: /var/log/wtmp
【例】 查看正常登录用户的信息 [root@xuegod163 ~]# last #查看所有登录过系统的用户和IP [root@xuegod163 ~]# > /var/log/wtmp #清空文本 【例】 查看所有登陆的用户信息 [root@xuegod163 ~]# lastlog #实际上查看的是 /var/log/lastlog的信息 Username Port From Latest root tty1 Tue Dec 18 22:22:39 +0800 2012 【例】 查看登陆错误的用户信息 [root@xuegod63 ~]# lastb #实际上查看的是 /var/log/btmp的信息 root tty1 Tue Dec 18 09:45 - 09:45 (00:00)
测试:
[root@xuegod163 ~]# ssh 192.168.1.63 [root@xuegod163 ~]# ssh [email protected] [root@xuegod163 ~]# lastb mk ssh:notty xuegod63.cn Tue Feb 3 21:28 - 21:28 (00:00) mk ssh:notty xuegod63.cn Tue Feb 3 21:28 - 21:28 (00:00) mk ssh:notty xuegod63.cn Tue Feb 3 21:28 - 21:28 (00:00) root ssh:notty xuegod63.cn Tue Feb 3 21:28 - 21:28 (00:00)
2 日志记录方式: 先分类,然后每个类中再分级别
2.1主要9种日志分类(FACILITY):
authpriv 安全认证相关
cron at和cron定时相关
daemon 后台进程相关
kern 内核产生
lpr 打印系统产生
mail 邮件系统相关
syslog 日志服务本身
news 新闻系统 (和BBS差不多,新闻组)
uucp 系统产生 Unix-to-Unix Copy(UNIX至UNIX的拷贝),Unix系统的一项功能,允许计算机之间以存储-转发方式交换e-mail和消息。在Internet兴起之前是Unix系统之间连网的主要方式。
系统保留的日志类型:
local0到local7 #共8个系统保留系统日志类型,给其它程序使用,或用户自定义用。
2.2 日志8个级别:以下排列,由轻到重
debug 排错信息
info 正常信息
notice 稍微要注意的
warn 警告
err(error) 错误
crit(critical) 关键的错误
alert 警报警惕
emerg(emergency) 紧急,突发事件
3.1 RHEL5:syslog
配置文件:/etc/syslog.conf
3.2 RHEL6:rsyslog
配置文件:/etc/rsyslog.conf
4.1 kern.* 内核类型的所级别日志
4.2 *.info;mail.none;news.none;authpriv.none;cron.none:由于 mail, news, authpriv, cron 等类别产生的讯息较多,因此在 /var/log/messages 里面不记录这些项目。除此其他讯息都写入 /var/log/messages 中。所以messages 文件很重要。
4.3 authpriv.* 认证方面的讯息均写入 /var/log/secure 档案;
4.4 mail.*:邮件方面的讯息均写入 /var/log/maillog 档案;
4.5 cron.*:例行性工作均写入 /var/log/cron 档案;
4.6 local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 档案中。
. (点) : 代表『比后面还要高的等级都被记录下来』的意思,
例如: mail.info 代表只要是 mail 类型的信息,而且该信息等级高于 info (包括 info 本身)时,就会被记录下来的意思。
.= (点等号) :代表所需要的等级就是后面接的等级而已,其他的都不要!
.!(点不等号) :代表不等于,亦即是除了该等级外的其他等级都记录。
【例】 日志写法
cron.none 对于cron类型日志不记录任何信息
cron.=err 对于cron类型日志只记录err级别的信息
cron.err 对于cron类型日志记录大于err级别的信息
cron.!err 对于cron类型日志不记录err级别的信息,其他级别都记录。
1、日志的相对路径:通常就是放在 /var/log 中
2、存在远程日志服务器上
3、有时日志会直接弹出在屏幕上。类似于wall命令。
扩展:
wall命令介绍:wall -- send a message to everybody’s terminal.
[root@bogon log]# wall aaaaaaaaa
这样所有登录Linux虚拟终端的用户都会收到这个信息。
【例】 关于日志路径前“-”号的说明 [root@xuegod63 ~]# vim /etc/rsyslog.conf mail.* -/var/log/maillog
在上面关于 mail 的记录中,在记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?
由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有利于减少对磁盘读写的次数,减少IO读写开销。另外,由于讯息是暂存在内存里,因此若不正常关机会导致登录信息未写入到文档中,可能会造成部分数据的遗失。
[root@xuegod163 ~]#service rsyslog restart [root@xuegod163 ~]#chkconfig rsyslog on
8日志的存储格式
DATA TIME HOSTNAME APP (NAME) [PID]:MESSAGES
说明:
DATA TIME:日志记录的日期和时间
HOSTNAME APP (NAME) [PID]:什么机器,什么程序(程序的PID):
【例】 修改服务的日志文件指定到某一个文件 [root@xuegod163 ~]# vim /etc/ssh/sshd_config 作修改如下内容
#SyslogFacility AUTHPRIV 为SyslogFacility local0
添加 local0.* /var/log/sshd.log
重启:#service rsyslog restart
[root@xuegod163 ~]# service sshd restart #要先重启rsyslog,再重启sshd,产生一些日志 Stopping sshd: [ OK ] Starting sshd: [ OK ] [root@xuegod63 ~]# cat /var/log/sshd.log Feb 3 22:13:30 xuegod63 sshd[7182]: Received signal 15; terminating. Feb 3 22:13:30 xuegod63 sshd[7249]: Server listening on 0.0.0.0 port 22. Feb 3 22:13:30 xuegod63 sshd[7249]: Server listening on :: port 22.
【例】 如何防止日志被黑客删除呢?
[root@xuegod63 ~]# chattr +a /var/log/sshd.log [root@xuegod63 ~]# lsattr /var/log/sshd.log -----a-------e- /var/log/sshd.log [root@xuegod163 ~]# tail -f /var/log/sshd.log #下面远程连接一下,可以看到日志 [root@xuegod163 ~]# ssh 192.168.1.63
加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后,才能被删除移喔!
说明:(日志回滚过程: 创建新文件、改名旧文件。)
配置文件:
(1)主配置文件 #vim /etc/logrotate.conf
(2)单独配置文件 #vim /etc/logrotate.d/*
[root@xuegod163 ~]# vim /etc/logrotate.conf
weekly <==预设每个礼拜对登录档进行一次 rotate 的工作
rotate 4 <==保留几个日志文档呢?预设是保留四个!
create <== 回滚日志后,创建一个新的空文件来存储新的数据。
【例】 /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
说明:
/var/log/wtmp { <==仅针对 /var/log/wtmp 所设定的参数
monthly <==每个月一次,取代每周!
minsize 1M <==档案容量一定要超过 1M 后才进行 rotate (略过时间参数)
create 0664 root utmp <==设定新建文件的权限 、所有者、用户组
rotate 1 <==仅保留一个,亦即仅有 wtmp.1 保留而已。 }
学神-IT-教育51cto技术交流群:468845589 快来上我们公开课吧!
学神MK老师:1273815479
学神ZY老师:3054384936
学神IT-1508-好心情提供