您的位置:首页 > 其它

【学神-RHEL7】1-18-计划任务和日志管理

2015-12-17 23:06 387 查看
本节所讲内容:
at 定制单次执行的计划任务 cron定制周期性计划任务 配置脚本实现周期性任务 配置公司内网服务器每天自动开关机 Linux系统日志记录规律 自定义日志记录方式 配置远程收集日志服务器
计划任务:
at # 只能执行一次
语法:
at 时间
服务:atd 必须开启

[root@localhost ~]#systemctl status atd
atd.service - Jobspooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service;enabled)
Active: active (running) since Thu2015-12-17 20:24:06 CST; 11min ago

[root@localhost ~]#systemctl restart atd #重启atd服务
[root@localhost ~]#systemctl enable atd #设置atd服务开机自动启动

[root@localhost ~]#date
Thu Dec 17 20:37:33 CST2015
[root@localhost ~]# at 20:39
at> echo `date` > /root/date.txt #输入要执行的命令
at> <EOT> #按ctrl+D结束
job 1 at Thu Dec 1720:39:00 2015

也可以这样写
[root@localhost ~]# at 20:002015-12-18
[root@localhost ~]# at now +10min

[root@localhost ~]# at -l
2 Fri Dec 18 20:00:00 2015 a root
3 Thu Dec 17 20:53:00 2015 a root

创建成功的at计划任务会在这个目录下成生一个可执行的脚本文件:
[root@localhost ~]# ll /var/spool/at/*
-rwx------ 1 root root 4325 Dec 17 20:43/var/spool/at/a000020170ddb0
-rwx------ 1 root root 4324 Dec 17 20:43/var/spool/at/a000030170d845

/var/spool/at/spool:
total 0

at任务删除:
atrm at序列号
[root@localhost ~]#atrm 3

周期性计划任务:
配置文件:
[root@localhost ~]# vim /etc/crontab
* * * * *
分 时 日 月 星

[root@localhost ~]#systemctl status crond
crond.service - CommandScheduler
Loaded: loaded(/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since Thu2015-12-17 20:24:06 CST; 30min ago

[root@localhost ~]#systemctl restart crond
[root@localhost ~]#systemctl enable crond #设置开机自动启动

解:对于系统级别的计划任务,需要执行的命令和脚本都放在这里:
[root@localhost ~]# ls /etc/cron.*
/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

针对用户级别的计划任务:
对于root用户:
命令:
#crontab –e 创建一个计划任务
#crontab –l 显示
#crontab –r 删除计划任务

#crontab –e #写法
分 时 日 月 星 谁做后面的事情 命令
每个取值范围:
分:0-59
小时:0-23
日:1-31
月:1-12
周:0-7 0 7 都是周日

[root@localhost ~]#crontab -e
02 21 * * * echo `date` > /root/rm.txt
[root@localhost ~]# catrm.txt
Thu Dec 17 21:02:01 CST2015

查看计划任务
[root@localhost ~]#crontab -l
02 21 * * * echo `date` > /root/rm.txt

例: 特殊写法:
#每月9,18,22号这几天的凌晨1点1分,执行一个备份脚本
1 1 9,18,22 * * ./backup.sh

#每月9-22号这几天的凌晨1点1分,执行一个备份脚本
1 1 9-22 * * ./backup.sh

#每5分钟,执行一次
*/5 * * * * ./backup.sh

使用root身份,给其它普通用户指定crontab:
语法:crontab-u USERNAME -e/-l/-r
[root@localhost ~]#crontab -u rm -e
0 3 * * * /root/backup.sh
[root@localhost ~]#crontab -u rm -l
0 3 * * * /root/backup.sh

[root@localhost ~]#crontab -r
[root@localhost ~]#crontab -l
no crontab for root

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,然后继续回车确定。然后再继续设置时间点和日期。


然后选择日期,并且选择你需要电脑每天需要在几点开机,当然,要保证你的主板时间是准确的。



假如你需要每天都定时开机,就选择Every Day,,你如果想要在每天6:45开机,就通过数字键输入06:45:00,最后,一般按F10 进行保存,重启电脑后生效!



日志管理
/var/log
常用的系统日志如下:
核心启动日志:/var/log/dmesg
系统报错或重启服务等日志:/var/log/messages
邮件系统日志:/var/log/maillog

cron(定制任务日志)日志:/var/log/cron #计划日志执行成功与否,在这个文件中看
var/log/secure #验证系统用户登录

文件/var/log/wtmp 记录所有的登入和登出

[root@localhost ~]#>/var/log/wtmp
[root@localhost ~]#last

wtmp begins Thu Dec 1721:44:40 2015
文件 /var/log/lastlog 记录每個用戶最后的登入信息。[root@localhost ~]#lastlog
Username Port From Latest
root pts/2 192.168.1.101 Thu Dec 1721:00:38 +0800 2015

文件 /var/log/btmp 记录错误的登入尝试。[root@localhost ~]#lastb
mk ssh:notty 192.168.1.69 Thu Dec 17 21:48 - 21:48 (00:00)
mk ssh:notty 192.168.1.69 Thu Dec 17 21:48 - 21:48 (00:00)

测试:
[root@xuegod69 ~]#ssh mk@192.168.1.68
mk@192.168.1.68'spassword:

[root@localhost ~]# ll-h /var/log/btmp
-rw-------. 1 root utmp1.2K Dec 17 21:48 /var/log/btmp
#如果btmp文件特别大,说明有人在暴力破解你的服务器

2.日志记录方式: 先分类,然后每个类中再分级别

主要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:rsyslog
配置文件:
#vim /etc/rsyslog.conf

3).RHEL7: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级别的信息,其他级别都记录。

记录日志的位置:
1、日志的相对路径:通常就是放在 /var/log中2、 存在远程日志服务器上3、有时日志会直接弹出在屏幕上。类似于wall命令。

扩展:
wall命令介绍:
wall -- send a message to everybody’sterminal.

[root@localhost ~]#wall Today is nice day!!!
wall Today is nicedayvim /etc/rsyslog.conf !

Broadcast message fromroot@localhost.localdomain (pts/0) (Thu Dec 17 22:10:28 2015):

Today is nice dayvim/etc/rsyslog.conf !

这样所有登录Linux的虚端的用户都会收到这个信息。
[root@localhost ~]# vim /etc/rsyslog.conf
mail.* -/var/log/maillog

在上面的第四行关于 mail 的记录中,在记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?
由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有利于减少对磁盘读写的次数,减少IO读写开销。另外,由于讯息是暂存在内存内,因此若不正常关机导致登录信息未写入到文档中,可能会造成部分数据的遗失。

自定义sshd服务的日志
[root@localhost ~]# vim /etc/rsyslog.conf
local0.* /var/log/sshd.log
[root@localhost ~]#systemctl restart rsyslog.service

配置sshd服务的配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config
SyslogFacility local0
[root@localhost ~]#systemctl restart sshd

[root@localhost ~]# ls /var/log/sshd.log
/var/log/sshd.log
[root@localhost ~]# cat!$
cat /var/log/sshd.log
Dec 17 22:18:38localhost sshd[35876]: Server listening on 0.0.0.0 port 22.
Dec 17 22:18:38localhost sshd[35876]: Server listening on :: port 22.

日志查看方式
时间 主机 进程ID 执行的操作
如何防止日志被黑客删除呢?
[root@localhost ~]#chattr +a /var/log/sshd.log
[root@localhost ~]#lsattr /var/log/sshd.log
-----a----------/var/log/sshd.log

加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后,才能被删除移!
5.日志回滚:
logrotate(日志回滚过程: 创建新文件、改名旧文件。)
配置文件:
#vim/etc/logrotate.conf
[root@localhost ~]# 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端(接收端): xuegod68服务端服务端。 xuegod69做客户端
[root@localhost ~]# vim /etc/rsyslog.conf
将:
# Provides TCP syslogreception
#$ModLoad imtcp.so
#$InputTCPServerRun 514
改为:
# Provides TCP syslogreception
$ModLoad imtcp.so
$InputTCPServerRun 514

[root@localhost ~]#systemctl restart rsyslog.service
[root@localhost ~]#netstat -anptu | grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 36217/rsyslogd
tcp6 0 0 :::514 :::* LISTEN 36217/rsyslogd

2. 配置CLIENT端(发送端):
[root@xuegod69 ~]#vim /etc/rsyslog.conf
*.* @@192.168.1.68:514
[root@xuegod69 ~]#systemctl restart rsyslog.service

在服务端查看
[root@localhost ~]#tail -f /var/log/messages

在客户端执行
[root@xuegod69 ~]#systemctl restart NetworkManager

最终日志内容在服务端进行显示

学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589

本文出自 “学神IT教育-讲师MK” 博客,请务必保留此出处http://xuegodlinux.blog.51cto.com/10844319/1725842
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: