您的位置:首页 > 其它

RHEL7计划任务和日志管理

2016-05-16 21:56 274 查看
本节所讲内容:


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: