RHEL7计划任务和日志管理
本节所讲内容:•at 定制单次执行的计划任务•cron定制周期性计划任务•配置脚本实现周期性任务•配置公司内网服务器每天自动开关机•Linux系统日志记录规律•自定义日志记录方式•配置远程收集日志服务器 计划任务:at # 只能执行一次语法:at时间服务:atd必须开启 [
本节所讲内容:
• at 定制单次执行的计划任务
• cron定制周期性计划任务
• 配置脚本实现周期性任务
• 配置公司内网服务器每天自动开关机
• Linux系统日志记录规律
• 自定义日志记录方式
• 配置远程收集日志服务器
计划任务:
at # 只能执行一次
语法:
at 时间
服务:atd 必须开启
[root@xuegod60 ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-02-29 20:27:56 CST; 8min ago
启动atd服务
[root@xuegod60 ~]# systemctl restart atd #启动atd服务
[root@xuegod60 ~]# systemctl enable atd #设置atd服务开机自动启动
[root@xuegod60 ~]# date
Mon Feb 29 20:38:34 CST 2016
[root@xuegod60 ~]# at 20:40
at> echo `date` > /root/date.txt #输入要执行的命令
at> <EOT> #按ctrl+D结束
job 1 at Mon Feb 29 20:40:00 2016
也可以这样写:
[root@xuegod60 ~]# at 20:00 2016-10-1
[root@xuegod60 ~]# at now +10min
[root@xuegod60 ~]# at -l
2 Sat Oct 1 20:00:00 2016 a root
3 Mon Feb 29 20:52:00 2016 a root
创建成功的at计划任务会在这个目录下成生一个可执行的脚本文件:
[root@xuegod60 ~]# ll /var/spool/at/*
-rwx------ 1 root root 2627 Feb 29 20:41 /var/spool/at/a00002017731b0
-rwx------ 1 root root 2628 Feb 29 20:42 /var/spool/at/a0000301727884
at任务删除:
atrm + 计划任务的编号
[root@xuegod60 ~]# atrm 3
周期性计划任务:
配置文件:
[root@xuegod60 ~]# vim /etc/crontab
* * * * *
分 时 日 月 星
[root@xuegod60 ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset:enabled)
Active: active (running) since Mon 2016-02-29 20:27:56 CST; 25minago
[root@xuegod60 ~]# systemctl restart crond
[root@xuegod60 ~]# systemctl enable crond
解:对于系统级别的计划任务,需要执行的命令和脚本都放在这里:
[root@xuegod60 ~]# ll /etc/cron.
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/
针对用户级别的计划任务:
对于root用户:
命令:
#crontab –e 创建一个计划任务
#crontab –l 显示
#crontab –r 删除计划任务
#crontab –e #写法
分 时 日 月 星 谁做后面的事情 命令
每个取值范围:
分:0-59
小时:0-23
日:1-31
月:1-12
周:0-7 0 7 都是周日
[root@xuegod60 ~]# crontab -e
0 21 * * * echo `date` > /root/rm.txt
查看计划任务
[root@xuegod60 ~]# crontab -l
0 21 * * * echo `date` > /root/rm.txt
例:特殊写法
#每月9,18,22号这几天的凌晨1点1分,执行一个备份脚本
1 1 9,18,22 * * /root/backup.sh
#每月9-22号这几天的凌晨1点1分,执行一个备份脚本
1 1 9-22 * */root/backup.sh
#每5分钟,执行一次
*/5 * * * * /root/backup.sh
使用root身份,给其它普通用户指定crontab:
语法:crontab -u USERNAME -e/-l/-r
[root@xuegod60 ~]# crontab -u rm -e
1 2 * * 5 poweroff
[root@xuegod60 ~]# crontab -u rm -l
1 2 * * 5 poweroff
[root@xuegod60 ~]# crontab -r
anacron
cron用控制循环执行例行性工作。如果我要设定机器每早8点进行备份用服务。除非我机器保证在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。
anacron并没有取代cron的意思,anacron用于,机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即,执行一下没有执行的任务。
实战,定时开机
BIOS
进入bios,一般是在开机后出现主板画面是按Delete这个键,部分品牌机可能按F2,F1
1、我的电脑看到上方这个图案按Delete,就可以进入bios设置界面了。然后通过键盘上的箭头选择Power Management Setup,就进入电源管理设置了。
通过回车进入这个设置后,选择Wake Up Event Setup,回车选择Press Enter
最后,在这个界面内继续找到Resume By RTC Alarm,回车选择一下。
继续回车选择,将Disabied 更改为Enabled,然后继续回车确定。然后再继续设置时间点和日期。
然后选择日期,并且选择你需要电脑每天需要在几点开机,当然,要保证你的主板时间是准确的。
日志管理
/var/log
常用的系统日志如下:
核心启动日志:/var/log/dmesg
系统报错或重启服务等日志:/var/log/messages
邮件系统日志:/var/log/maillog
cron(定制任务日志)日志:/var/log/cron #计划日志执行成功与否,在这个文件中看
var/log/secure #验证系统用户登录
文件 /var/log/wtmp 记录所有的登入和登出
[root@xuegod60 log]# > /var/log/wtmp
[root@xuegod60 log]# last
wtmp begins Mon Feb 29 21:38:36 2016
文件 /var/log/lastlog 记录每個用戶最后的登入信息。
[root@xuegod60 ~]# lastlog
Username Port From Latest
root pts/0 192.168.1.100 Mon Feb 29 20:29:57 +0800 2016
文件 /var/log/btmp 记录错误的登入尝试。
测试:
[root@xuegod61 ~]# ssh root@192.168.1.60
故意输错密码
[root@xuegod60 ~]# lastb
root ssh:notty 192.168.1.61 Mon Feb 29 21:43 - 21:43 (00:00)
[root@xuegod60 ~]# ll -h /var/log/btmp
-rw-------. 1 root utmp 768 Feb 29 21:43 /var/log/btmp
#如果btmp文件特别大,说明有人在暴力破解你的服务器
日志的记录方式:先分类,然后每个类中再分级别
主要7种日志分类(FACILITY):
authpriv 安全认证相关
cron at和cron定时相关
daemon 后台进程相关
kern 内核产生
lpr 打印系统产生
mail 邮件系统相关
syslog 日志服务本身
news 新闻系统 (和BBS差不多,新闻组)
uucp uucp系统产生 。Unix-to-Unix Copy(UNIX至UNIX的拷贝),Unix系统的一项功能,允许计算机之间以存储-转发方式交换e-mail和消息。在Internet兴起之前是Unix系统之间连网的主要方式。
local0到local7 #共8个类型,系统保留的:8个系统日志类型,给其它程序使用。或用户自定义用
8个日志级别:以下排列,由轻到重
级别(PRIOROTY):
debug 排错信息。开发人
info 正常信息
notice 稍微要注意的
warn 警告
err(error) 错误
crit(critical) 关键的错误
alert 警报警惕
emerg(emergency) 紧急,突发事件
日志服务:
1).rhel5:
服务名称:syslog
配置文件:
#vim /etc/syslog.conf
2) .RHEL6/7:rsyslog
配置文件:
#vim /etc/rsyslog.conf
进入配置文件显示内容如下:
1. kern.* 内核类型的所级别日志
2 *.info;mail.none;news.none;authpriv.none;cron.none:由于 mail, news, authpriv, cron 等类别产生的讯息较多,因此在 /var/log/messages 里面不记录这些项目。除此其他讯息都写入 /var/log/messages 中。所以messages 文件很重要
3. authpriv.* 认证方面的讯息均写入 /var/log/secure 档案;
4. mail.*:邮件方面的讯息则均写入 /var/log/maillog 档案;
5. cron.*:例行性工作排程均写入 /var/log/cron 档案;
6. local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 档案中;
/etc/rsyslog.conf 中日志输入规则:
例:
. :代表『比后面还要高的等级都被记录下来』的意思,
例如: mail.info 代表只要是 mail 类型的信息,而且该信息等级高于 info (包括 info 本身)时,就会被记录下来的意思。
.= :代表所需要的等级就是后面接的等级而已, 其他的都不要!
.! :代表不等于, 亦即是除了该等级外的其他等级都记录。
举例:
cron.none 对于cron类型日志不记录任何信息
cron.=err 对于cron类型日志只记录err级别的信息
cron.err 对于cron类型日志记录大于err级别的信息
cron.!err 对于cron类型日志不记录err级别的信息,其他级别都记录。
扩展
wall命令介绍:
wall -- send a message to everybody’s terminal.
[root@xuegod60 ~]# wall Today is nice day
Broadcast message from root@xuegod60.cn (pts/0) (Mon Feb 29 22:01:30 2016):
Today is nice day
[root@xuegod60 ~]# vim /etc/rsyslog.conf
mail.* -/var/log/maillog
在上面的第四行关于 mail 的记录中,在记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?
由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有利于减少对磁盘读写的次数,减少IO读写开销。另外,由于讯息是暂存在内存内,因此若不正常关机导致登录信息未写入到文档中,可能会造成部分数据的遗失。
自定义sshd服务的日志
[root@xuegod60 ~]# vim /etc/rsyslog.conf
local0.* /var/log/sshd.log
[root@xuegod60 ~]# systemctl restart rsyslog
定义sshd远程服务日志的类别
[root@xuegod60 ~]# vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV
SyslogFacility local0
[root@xuegod60 ~]# systemctl restart sshd
[root@xuegod60 ~]# ls /var/log/sshd.log
/var/log/sshd.log
[root@xuegod60 ~]# cat !$
cat /var/log/sshd.log
Feb 29 22:11:19 xuegod60 sshd[41268]: Received signal 15; terminating.
Feb 29 22:11:19 xuegod60 sshd[41525]: Server listening on 0.0.0.0 port 22.
Feb 29 22:11:19 xuegod60 sshd[41525]: Server listening on :: port 22.
日志查看方式
时间 主机 进程ID 描述信息
如何防止日志被黑客删除呢?
[root@xuegod60 ~]# chattr +a /var/log/sshd.log
[root@xuegod60 ~]# lsattr /var/log/sshd.log
-----a---------- /var/log/sshd.log
加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后,才能被删除移!
日志回滚:
[root@xuegod60 ~]# 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 保留而已。 }
配置远程日志服务器,实现日志集中管理:
1. 配置SERVER端(接收端): xuegod60服务端。 xuegod61做客户端
服务端配置
[root@xuegod60 ~]# vim /etc/rsyslog.conf
改:
#$ModLoad imtcp
#$InputTCPServerRun 514
为:
$ModLoad imtcp
$InputTCPServerRun 514
重启服务
[root@xuegod60 ~]# systemctl restart rsyslog
查看服务监听状态
[root@xuegod60 ~]# netstat -anput | grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 42163/rsyslogd
tcp 0 64 192.168.1.60:22 192.168.1.100:51497 ESTABLISHED 2212/sshd:root@pts
tcp6 0 0 :::514 :::* LISTEN 42163/rsyslogd
2、配置CLIENT端(客户端)
[root@xuegod61 ~]# vim /etc/rsyslog.conf
*.* @@192.168.1.60:514
[root@xuegod61 ~]# systemctl restart rsyslog
验证:
服务端关闭防火墙
[root@xuegod60 ~]# systemctl stop firewalld
在服务端查看
[root@xuegod60 ~]# tail -f /var/log/messages
在客户端
[root@xuegod61 ~]# systemctl restart NetworkManager
更多推荐
所有评论(0)