定时任务配置
系统定时任务的软件
- atd
适合一次就结束的调度任务命令,进程服务是atd. - crond
快速配置服务的命令,用于做一些周期性的工作。 - anacron
非7*24小时开机的服务器,检测服务器停机期间应该执行但没有执行进行的工作,并将该任务执行。
系统定时任务的配置文件目录
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/
/etc/cron.monthly/
用户自定义配置
- 配置命令crontab
格式:crontab [选项]
-l :list 查看 当前用户设置了哪些定时任务
-e :edit 编辑定时任务
crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
/var/log/cron 定时任务日志文件 - 配置方法
-
画图说明
-
用户定时标识符
定时任务编写的问题
- 如何编写实时任务
第一种方法:用绝对路径编写。
第二种方法:放到脚本文件中执行。
文件中写入PATH的环境变量,方便给其它的命令使用。这时,也会出现三种错误:
(1)例如:* * * * * ech oldboy /tmp/a.txt
会显示命令找不到的错误,只有命令执行正确才会追加内容到a.txt文件中,如果命令错误则会追加到/var/spool/mail/root文件中。
(2) 当postfix服务开启时,错误信息放在/var/spool/mail/root中,这时,文件会变的越来越大,占用block。
当postfix服务关闭时,错误信息放在 cd /var/spool/postfix/maildrop/中,会生成很多小文件,占用系统的inode
(3)定时任务中不能识别某些符号。
解决的办法一:添加转义字符。
如果(date +%F),默认是不识别%的。
解决办法二:使用脚本
Crontab -e
Vim tar.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/notepad:/root/.local/bin:/root/bin
tar zcvhf /tmp/hosts_$(date +%F).tar.gz /etc/hosts
Crontab -e
* * * * * sh /root/tar.sh
写定时任务时的说明
(1)写定时任务时要加注释说明,注释要包括(时间,编写的人员和任务的作用);
(2)注意写环境变量,默认是/usr/bin; /bin;
(3)注意一些符号要加转义;
(4)输出的信息一定要定义到空文件中/dev/null;
(5)尽量使用脚本文件完成。-
编写定时任务的规范
1.使用命令编写定时任务
(1)测试命令是否执行;
(2)放入定时任务(用绝对路径);
(3)调整时间进行测试;
(4)检查日志/检查任务执行结果;- 用脚本编写定时任务
(1)先编写脚本;
(2)测试脚本的执行;
(3)放到定时任务中执行;
(4)调整时间进行测试(先在自己的测试环境中测试,因为有的企业服务器不能随时更改时间);
(5)检查日志/检查任务的执行结果;
- 用脚本编写定时任务