不停奔跑的Crontab 计划任务服务
一、Crontab 的功能
- 周期定时执行指定的命令或脚本
- 定期备份重要数据
- 定时启动停止服务
二、Crontab 服务与配置
- Crontab 服务安装:默认Linux系统是已经安装的
# yum install -y cronie crontabs #安装 Crontab 服务
-
Crontab 配置文件
- 系统配置文件 /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
- 系统用户crontab 配置文件保存目录(crontab -e)
# /var/spool/cron/ # 所有用户的crontab 文件保存目录
# root: /var/spool/cron/root # root 用户
# user: /var/spool/cron/user #普通用户
- crontab工具命令
# crontab -l #查看创建的crontab任务
# crontab -e #编辑当前用户的crontab任务
# crontab -u user -e #编辑user的crontab 任务
# crontab -r # 删除所有cron 任务
4. 创建 crontab 定时任务
占位符 | 描述 | 示例 |
---|---|---|
*(星号) |
匹配范围内所有取值 | * * * * * command #每一分钟运行一次command |
/(反斜杠) |
间隔多久执行一次 | */2 * * * * command #每隔2分钟运行一次command |
-(减号) |
指定范围内执行 | * 2-4 * * * command #凌晨两天到四点运行command |
,(逗号) |
指定时间点执行 | * 2,4 * * * command #凌晨两天、四点分别运行command |
-
Crontab 日志: /var/log/cron
Cron 日志保存在系统日志目录下 ;通过查看cron文件可以查看最近的cron 任务是否执行;
[root@version ~]# tail -10f /var/log/cron
Dec 10 11:20:01 version crond[8962]: (root) RELOAD (cron/root)
Dec 10 11:20:01 version crond[9149]: (root) CMD (date >>/root/echo.txt)
Dec 10 12:24:01 version crond[9493]: (root) CMD (bash /root/date.sh >>/root/echo.txt)
Dec 10 12:26:01 version crond[9500]: (root) CMD (bash /root/date.sh >>/root/echo.txt)
三、 创建定时备份任务
- 编辑备份脚本
############ bak_log.sh ##############
#!/bin/bash
base_dir=/data/backup
code_src=${base_dir}/code_src/$(date +%F_%H%M)
[ ! -d ${code_src} ] && mkdir -p ${code_src}
cd /data
tar -cjpf ${code_src}/data.$(data +%F).tar.bz2 /var/log
#-p 保留原有属性
- 创建定时任务
#crontab -e 创建定时任务
0 1 * * 7 sh /data/script/bak_log.sh # 每个星期日凌晨1点备份数据
## 查看cron log
[root@version script]# tail -f /var/log/cron
Dec 10 13:35:10 version crontab[9678]: (root) REPLACE (root)
Dec 10 13:35:10 version crontab[9678]: (root) END EDIT (root)
Dec 10 13:36:01 version crond[9688]: (root) CMD (sh /data/script/bak_log.sh)
Dec 10 13:37:01 version crond[9759]: (root) CMD (sh /data/script/bak_log.sh)
-
结合iptables 创建,防止多次尝试用户
- 根据 /var/log/secure 获取Failed 次数较多的用户;
- 根据要求将多次Failed 的用户保存到黑名单文件中
- 根据黑名单文件创建Iptables 策略
附录:Linux常见的日志
名称 | 描述 |
---|---|
d chrony | #NTP log |
- cron | #crontab 日志 |
- firewalld | #防火墙的日志 |
- lastlog | #登陆记录保存日志 |
d libvirt | |
- maillog | 邮件日志 |
- messages | #系统日志 |
d private | |
d qemu-ga | KVM日志 |
d samba | samba日志 |
- secure | #SSH服务信息 |