定时计划
一、计划任务种类
突发性:临时决定只执行一次的任务
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 root
root@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 Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2024-05-20 18:35:18 CST; 8h ago
Main PID: 7386 (crond)
Tasks: 1
CGroup: /system.slice/crond.service
└─7386 /usr/sbin/crond -n
5月 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 {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
5.5 自定义日志切割轮替
vim /etc/logrotate.d/all
logroate -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 514
setenforce 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