定时任务作用
- 类似生活的闹钟
- 可以自动完成操作命令
- 夜里备份数据(访问量不大)
- 自动清理磁盘
- 自动的进行时间同步更新
实现方式
- cronie:应用在服务器 7*24h(基本使用这个)
- atd:一次设置定时任务只执行一次
- anacron:应用在家用电脑上
查看是否安装
rpm -qa cronie
#查看软件大礼包
rpm -ql cronie
定时任务实现方法
日志文件需要定期进行切割处理
系统特殊目录:系统定时任务周期,脚本放在这些目录中就会定时执行
- 每小时:/etc/cron.hourly
- 每一天:/etc/cron.daily
- 每一周:/etc/cron.weekly
- 每个月:/etc/cron.monthly
用户定时任务实现
-
查看
crontab -l
-
编写
crontab -e 编写定时任务 vi /var/spool/cron/定时任务配置文件保存目录
-
定时任务配置设置
/var/spool/cron/root root文件表示是root用户设置的定时任务
定时任务实际编写方法
-
服务环境准备:服务是否启动
systemctl status crond
-
配置定时任务:crontab -e
-
查看定时任务:crontab -l
-
语法规范:/etc/crontab:先有五个*,后面具体做什么
- 第一个*代表分钟:0-59
- 第二个*表示小时:0-23
- 第三个*表示日期:1-31
- 第四个*表示月份:1-12
- 第五个*表示星期:0-6
- 0:周日、1:周一、6:周六
写法:定时任务最短执行的周期为每分钟
-
用数值表示时间信息,每天两点备份数据
00 02 * * * 备份文件
-
利用特殊符号表示时间信息
-
*代表每,每分钟都执行
* * * * *
-
每隔5分钟
*/5 * * * * 20/10 1 * * * 1:20 1:30 1:40 。。。
-
指定时间范围:
01-05 02 * * * 每天两点01 02 03 04 05执行
-
指定时间不连续
00 14,20 * * * 每天14点和20点执行
-
-
实际编写:每天凌晨两点备份/data目录到/backup
-
写上时间信息
00 02 * * *
-
写上完成任务的具体命令
cp -a /data /backup -a 递归拷贝 或者 -r都行
-
编写定时任务
crontab -e 00 02 * * * cp -a /data /backup
-
定时任务排错方法
-
是否有定时任务文件
cat /var/spool/cron/root
-
检查定时任务日志文件
cat /var/log/cron 执行时间 主机名 编辑/执行定时任务 以什么用户编辑或执行定时任务
-
-
定时任务编写注意事项
-
编写定时任务要有注释说明
命令的上一行要有注释说明作用和编写人
-
编写定时任务路径信息使用绝对路径
-
定时任务执行时,识别的PATH信息只有:/usr/bin:/bin,所以编写要执行的命令要写成绝对命令。
/usr/sbin/useradd old
-
定时任务中执行命令,如果产生输出到屏幕的信息,都会以邮件方式告知用户
/var/spool/mail/root 不断变大占用磁盘空间,占用的block空间
-
解决方法:可以将输出到屏幕上的信息保存在黑洞中,避免占用磁盘空间
将邮件服务关闭 systemctl stop postfix 服务关闭了会产生大量小文件 /var/spool/postfix/maildrop 会占用inode空间 解决方法: rm -f /var/spool/postfix/maildrop/* 左右为难 解决:将正确和错误信息都送到黑洞里 * * * * * /bin/sh t.sh &> /dev/null
-
-
尽量不要产生屏幕输出信息
-
当需要多个命令完成一个定时任务需求时,可以利用脚本编写。
- 脚本统一存放路径
/server/scripts
- 脚本统一存放路径
定时任务黑名单
vim /etc/cron.deny
里面写用户的用户名,一行写一个