定时计划
一、计划任务种类
突发性:临时决定只执行一次的任务
at:处理执行一次任务就结束
定时性:每隔一定时间需要重复执行此命令
crontab:指定任务,按照设定的周期一直循环执行
二、作用
定时任务可以用于自动备份、系统清理、监控、自动化维护等任务
三、计划任务命令使用
1. at 命令
1.1 准备
#启动
[root@localhost ~]# systemctl start atd
#查看是否开启
[root@localhost ~]# systemctl status atd
#查看是否开机自启动
[root@localhost ~]# systemctl is-enabled atd
enabled#注意:程序后面带d都是守护进程
1.2创建计划任务
[root@localhost ~]# date 
2024年 05月 21日 星期二 02:57:54 CST
#第一种写法
[root@localhost ~]# at 02:59
at> mkdir wangchunlong
at> touch {1..20}.txt
at> <EOT>          #结束快捷键:ctrl+d
job 3 at Tue May 21 02:59:00 2024#第二种方式写法
[root@localhost ~]# at 0  :00 2024-06-01
at> mkdir dakao
at> touch yuguofeng/a.txt
at> <EOT>
job 4 at Sat Jun  1 03:00:00 2024[root@localhost ~]# at now +5min
at> mkdir cu
at> <EOT>
job 5 at Tue May 21 03:07:00 2024[root@localhost ~]# at 17:00 tomorrow
at> touch yu
at> <EOT>
job 6 at Wed May 22 17:00:00 2024[root@localhost ~]# at 07:00 pm +2 days
at> touch pl
at> <EOT>
job 7 at Thu May 23 19:00:00 2024[root@localhost ~]# at 23:00 < 1.txt
job 8 at Tue May 21 23:00:00 2024
1.3查看计划任务
[root@localhost ~]# at -l
4	Sat Jun  1 03:00:00 2024 a root
6	Wed May 22 17:00:00 2024 a root
7	Thu May 23 19:00:00 2024 a root
8	Tue May 21 23:00:00 2024 a root[root@localhost ~]# atq
4	Sat Jun  1 03:00:00 2024 a root
6	Wed May 22 17:00:00 2024 a root
7	Thu May 23 19:00:00 2024 a root
8	Tue May 21 23:00:00 2024 a rootroot@localhost ~]# ls /var/spool/at/
a0000401b4b3b4  a0000701b484d4  spool
a0000601b47ebc  a0000801b47a84
1.4删除计划任务
[root@localhost ~]# at -l
4	Sat Jun  1 03:00:00 2024 a root
6	Wed May 22 17:00:00 2024 a root
7	Thu May 23 19:00:00 2024 a root
8	Tue May 21 23:00:00 2024 a root[root@localhost ~]# atrm 8[root@localhost ~]# atq
4	Sat Jun  1 03:00:00 2024 a root
6	Wed May 22 17:00:00 2024 a root
7	Thu May 23 19:00:00 2024 a root
2. crontab 命令
2.1 准备
#同样需要启动服务
[root@localhost ~]# systemctl start crond
[root@localhost ~]# systemctl status crond
● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since 一 2024-05-20 18:35:18 CST; 8h agoMain PID: 7386 (crond)Tasks: 1CGroup: /system.slice/crond.service└─7386 /usr/sbin/crond -n5月 20 18:35:18 localhost.localdomain systemd[1]: Started Comma...
5月 20 18:35:18 localhost.localdomain crond[7386]: (CRON) INFO ...
5月 20 18:35:21 localhost.localdomain crond[7386]: (CRON) INFO ...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl is-enabled crond
enabled
2.2 常见选项
-e:编辑cron定时计划任务
-l:查看当前用户定时计划任务
-u:设置crontab用户
-r:删除当前用户cron定时计划任务。      
-u user1 -l:列出指定用户user1下的cron服务的详细内容
2.3 特殊符号的含义
| * | 代表取值范围内的数字 | (任意/每) | 
|---|---|---|
| / | 指定时间的间隔频率 | */10 0-23/2 | 
| - | 代表从某个数字到某个数字 | 8-17 | 
| , | 分开几个离散的数字 | 1,3,5,7 | 

2.4 创建周期任务
#编辑脚本
[root@localhost spool]# crontab -e
*/1 * * * * echo "test" >> /root/1.txt[root@localhost spool]# crontab -l
*/1 * * * * echo "test" >> /root/1.txt[root@localhost ~]# crontab -u bin -e
*/1 * * * * echo "aaaaa" >> /root/2.txt
[root@localhost ~]# crontab -u bin -l
*/1 * * * * echo "aaaaa" >> /root/2.txt
2.5 查看周期任务
[root@localhost ~]# crontab -u bin -l[root@localhost spool]# crontab -l
2.6 查看所有用户的计划任务
[root@localhost ~]# ll /var/spool/cron/
总用量 8
-rw-------. 1 root root 40 5月  21 04:23 bin
-rw-------. 1 root root 88 5月  21 04:21 root
2.7 系统任务调度的配置文件
#也可以在/etc/crontab 中添加计划任务
[root@localhost ~]# vim /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
[root@localhost bin]# ls /etc/cron
cron.d/       cron.deny     cron.monthly/ cron.weekly/
cron.daily/   cron.hourly/  crontab  
#cron.d  系统自动定期需要做的任务
#cron.monthly/ 每月执行的脚本
#cron.weekly/  每周执行的脚本
#cron.daily/   每天执行的脚本
#cron.hourly/ 每小时执行的脚本
#crontab   #主配置文件也可添加任务按小时、天、周、月执行的脚本需要保存到指定目录下并且拥有可执行权限脚本
四、at和cron黑白名单
at和cron黑名单:默认允许所有,拒绝个别。
at和cron白名单:默认拒绝所有,允许个别。
黑名单:默认存在、可直接使用
白名单:默认不存在,需手动创建后使用
黑名单中直接记录用户名即可
白名单优先级更高
日志管理
一、简介(起因)
在工作当中执行命令或者执行其他操作的时候,有时候避免不了报错,身为运维工程师我们可以通过日志查询报错的原因,或者找到攻击者当时留下的痕迹。
二、常见日志文件
系统日志文件概述:/var/log目录报告由rsyslog维护的,存放特殊的系统和服务的日志文件
| 日志文件 | 用途 | 
|---|---|
| /var/log/message | 大多数系统日志消息记录 | 
| /var/log/secure | 安全和身份验证相关的消息、登录失败的日志文件 | 
| /var/log/secure | 安全和身份验证相关的消息和错误的日志文件 | 
| /var/log/maillog | 与邮件服务器相关的消息日志文件 | 
| /var/log/cron | 定期执行任务相关的日志文件 | 
| /var/log/boot.log | 系统启动相关的消息记录 | 
| /var/log/dmesg | 硬件系统启动相关的消息记录 | 
三、日志记录的方式
日志的记录:是在rsylog中由日志的类别和级别组成
3.1 日志的类别
| 名称 | 作用 | 
|---|---|
| daemon | 后台进程相关 | 
| kern | 内核产生的信息 | 
| lpr | 打印系统产生的 | 
| cron | 定时相关 | 
| 邮件相关 | |
| syslog | 日志服务本身的 | 
| news | 新闻系统 | 
| authpriv | 安全验证 | 
| local10~7 | 自定义的日志设备 | 
| local-local7 | 8个系统保留,程序使用或者是用户自定义 | 
3.2 日志的级别
| 编码 | 优先级 | 严重性 | 
|---|---|---|
| 7 | debug | 对开发人员调试应用程序有用 | 
| 6 | info | 正常操作信息,可以收集报告,测试吞吐量 | 
| 5 | notice | 注意,正常但重要的文件 | 
| 4 | warning | 警告,如果不采取行动将会发生报错 | 
| !3 | err | 错误,某个模块或程序的功能不能正常使用 | 
| !2 | crit | 关键的错误,已经导致整个系统或软件不能使用 | 
| !1 | alert | 警报,需要立即修改的信息 | 
| !0 | emerg | 紧急,内核崩溃等严重消息 | 
四、rsylog日志服务
4.1 查看日志配置文件信息
[root@localhost ~]# vim /etc/rsyslog.conf 
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
4.2 日志输入规则
. info 在大于等于info级别的信息全部记录到某个文件
. = 仅记录等于某个级别的日志文件
.=info  只记录info级别的日志.! 除了某个级别以外,记录所有的级别信息
.!err除了err所有都记录.none排除某个类别
mail.none 所有mail类别的日志都不记录
自定义日志
vim /etc/rsyslog.conf
#文件内容编辑
*.* /var/log/alert.log
systemctl restart rsyslog.service #重启rsyslog服务,使配置生效
4.2 防止日志文件删除
[root@localhost ~]# chattr +a /var/log/yum.log 
[root@localhost ~]# lsattr /var/log/yum.log 
-----a---------- /var/log/yum.log
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# 
五、日志切割轮替
5.1 起因
 如果某个服务器日志存储在一个文件上,当它的文件大小达到几个G以后,很难正常代开查看此文件里面的内容
5.2 解决办法
切割:将大的日志文件按照固定大小分割成多个小的日志文件,一般会采取按日期分割,这样利于查看。
轮换:将旧的日志删除,轮换新的日志内容
(超过保存时间或者一定文件大小的日志就会删除,然后将新的日志文件写入)。
5.3 日志文件命名规则
 如果日志没有命令规则,每天都是相同的文件名,那么今天所保存的日志文件就会覆盖前一天的日志文件。
5.4 logrotate配置文件
# see "man logrotate" for details
# rotate log files weekly
weekly# keep 4 weeks worth of backlogs
rotate 4# create new (empty) log files after rotating old ones
create# use date as a suffix of the rotated file
dateext# uncomment this if you want your log files compressed
#compress# RPM packages drop log rotation information into this directory
include /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 1
}/var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1
}
5.5 自定义日志切割轮替
vim /etc/logrotate.d/alllogroate -vf /etc/logroate.d/sshd#强制轮循
-v 显示指令执行过程
-f 强制执行#大日志文件使用split命令进行切割
spilt:文件拆分
-d:指定输出文件名的后缀长度用数字代替
5.6 实验(搭建远程日志收集服务器)
 服务端配置
vim /etc/rsyslog.conf$ModLoad imtcp$InputTcpServiceRun 514
systemctl restart rsyslog
netstat -anlpt | grep 514setenforce 0
systemctl stop firewalld
iptables -F
 客户端配置
 修改主机名
[root@localhost ~]# hostname  #查看主机名
localhost.localdomain
[root@localhost ~]# cat /etc/hostname #主机名保存文件
localhost.localdomain
[root@localhost ~]# hostnamectl set-hostname guofeng  #永久修改主机名#修改配置文件
[root@localhost ~]# vim /etc/rsylog.conf
*.*   @@192.168.161.131    #@@表示tcp协议  @表示udp协议
#重启服务 
[root@localhost ~]#systemctl restart rsylog