定时任务
一、定时任务的作用
1.定时任务相当于我们平时使用的闹钟
2.定时任务可以自动完成操作命令
3.定时备份系统数据等
二、定时任务软件分类
1.atd
定时任务只执行一次,一次性定时任务
2.anacron
非7*24小时运行的服务器
3.cronie
系统自带定时服务crond
三、定时任务实现方法:
1.系统自带定时任务
1)每小时定时任务
任务目录:/etc/cron.hourly
2)每天定时任务
任务目录:/etc/cron.daily
3)每周定时任务
任务目录:/etc/cron.weekly
4)每月定时任务
任务目录:/etc/cron.monthly
5)定时任务黑名单用户
用户目录:/etc/cron.deny
系统定时任务+logrotate命令完成对系统日志的切割和轮询
日志目录:/etc/log/messages /etc/log/cron /etc/log/secure
注意:系统中毒时,要注意查看系统自带定时任务
2.用户自定义定时任务
1)定时任务查看
crontab -l == cat /var/spool/cron/root (root用户)
crontab -e == vim /var/spool/cron/root(root用户)
crontab -e编辑定时任务时,可检查语法,我们下面着重介绍用户使用crontab -e自定义定时任务的方法。
四、使用脚本配置定时任务
1.命令行测试命令
/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
命令或脚本输出结果必须放到黑洞/dev/null或某一文件中,不然会产生大量邮件,异常提示信息为:You have new mail in /var/spool/mail/root .占用磁盘inode和block
2.编写脚本文件
mkdir /server/scripts -p;
vim /server/scripts/shell01.sh;
echo "`date +%F-%w` `uptime|awk -F "(s, )" '{print $2}'`" >>/tmp/oldboy.txt 2>&1
编写脚本时,命令和文件路径最好都使用绝对路径,脚本和定时任务中系统只会在/bin和/usr/bin去找命令,也就是说如果你使用的命令不在这两个路径下,就不能被直接识别
3.测试脚本
/bin/sh /server/scripts/shell01.sh
4.编写定时任务
crontab -e ;
* * * * * /bin/sh /server/scripts/shell01.sh
五个*从左到右分别代表每分钟、每小时、每天、每月、每星期
30 09 */2 * * --- 每两天的9点30执行定时任务
00 15,17 * * * --- 每天的15点和17点执行定时任务
*/30 * 1-3 * * --- 每月的1号到3号每30分钟执行一次该定时任务
5.进行检查测试
1)查看日志文件
2)检查结果
五、定时任务的9个箴言
1.定时任务之前加注释,说明该任务在干什么
2.命令超过两行就使用脚本
3.date命令的%前要加转译符,不然无法识别
4.运行脚本一定要用/bin/sh或sh
5.定时任务中,命令或脚本的输出结果必须定向到黑洞或文件中
6.避免不必要的程序及命令输出,如打包解压时不加V参数
7.打包压缩使用相对路径(切换到目标目录上一级目录进行打包)
8.定时任务脚本中的程序文件,尽量使用绝对路径
9.系统与命令位置有关的环境变量问题,定时任务中执行命令,只会到/bin/usr和/bin找命令文件