本节所讲内容:

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

Logo

更多推荐