定时任务
一、定时任务简介
crond定时任务的设置是以分钟来起步的定时任务
如果定时任务不能来的,可以写脚本来执行
while true
do
echo”i am oldboy teacher”
sleep 1
done
有些人会在/etc/crontab下面写定时任务,这样是不规范的,所以有时候找不到定时任务可能是在这里的
crond -l 显示定时任务 crond -e编辑定时任务
二、定时任务的种类和细节
crontab定时任务的管理命令,应用于周期性的
at:适合仅执行一次就结束的调度任务命令,属于突发性的工作任务 chkconfig —list atd
anacron这个命令要勇于非7*24小时的服务器,是以天威周期或者在系统每次开机后执行的任务工作
1、
Crontab -e ===vim /var/spool/cron/root
Crontab -l ===cat /var/spool/cron/root
2、
Crontab -u 用户名 -l/e:在制定用户下才能用的定时任务
3、
查看系统任务的具体格式cat /etc/crontab ---》分时日月周
4、特殊字符
* 表示“每”的意思,等价于0-59/1
- 代表时间范围 比如 17-19 00 17-19 * * * cmd 这里是每天下午5点整 6点整 7点整执行cmd
, 代表分隔时段的意思,30 17,18,19 * * * /bin/sh aa 每天晚上5点半,6点半,7点半执行这个脚本
/n 每单位时间,n一般是数字 */10 * * * * cmd,这个是每10分钟执行一次cmd
如:
30 3-5,17-19 * * */bin/sh /scripts/pyrene.sh 代表每月的17到19号的凌晨3点半4点半5点半执行这个任务
每分钟打印一次自己的名字拼音全拼到“/server/log/”自己的名字命令的文件
* * * * * echo "pyrene" >>/server/log/pyrene.log >/dev/null 2>&1
小结:
1、 定时任务要加注释
2、 结尾不要有>/dev/null 2>&1
3、 /server/log目录必须要存在才能出结果
4、 定时任务中的路径一定绝对路径
5、 crond服务必须开启运行
练习:
每周六、日上午9:00和下午14:00学习(执行/server/scripts/oldboy.sh) 要求:/serser/scripts/pyrene.sh脚本的功能式打印当天的日期:格式为2017-03-17 解答: 首先创建一个只放脚本的目录 mkdir /server/scripts -p 之后再创建目录中写入脚本 放入定时任务 00 09,14 * * 6,0 /bin/sh /server/scripts/pyrene.sh >/dev/null 2>&1
三、定时任务要领
要领1:为定时任务规则加必要的注释
要领2:定时任务命令或程序最好写道脚本里面执行
要领3:执行shell脚本任务前加/bin/sh
要领4:定时任务命令或脚本结尾加>/dev/null 2>&1
要领5:再指定用户下执行相关的定时任务
要领6:生产任务程序不要随意打印输出信息
要领7:定时任务执行的脚本要规范路径(/server/scripts)
要领8:配置定时任务规范操作过程
首先要在命令行操作成功然后复制成功的命令到脚本里面,减少出错的机会
然后测试脚本测试成功后复制脚本到定时任务
现在测试环境测试,然后正式环境规范部署
练习:
1、 每个2个小时讲系统文件/etc/service 文件打包备份到/tmp下(每次备份按时间生成不同的备份包)
1、 每天晚上12点,打包站点目录/var/www/html备份到/data目录下(每次备份按时间生成不同的备份包)
3、做一个定时任务每天晚上0点删除7天之前的上面的打包的
1、从目标的上级打包(除非要完整路径的话再根开始打包) 2、定时任务是按小时,打包里面的日期也要精确到小时 tar -zcvf /tmp/serveice_$(date +%F-%H).tar.gz //etc/service 3、确保命令行执行正确,然后写到脚本里面(复制) Cd /service/scripts Vim ser.sh tar -zcvf /tmp/serveice_$(date +%F-%H).tar.gz //etc/service 4、定时任务命令或程序最好写道脚本里执行 5、测试脚本正确性(定时任务怎么写,命令行就怎么测试) /bin/sh /server/scripts/ser.sh 6、脚本测试好了,命令行的命令也要复制 Crontab -e 7、定时任务不要屏幕输出,可以打印到log里面 之后做一个定时任务每天晚上0点删除7天之前的上面的打包的 1、 首先写出删除命令find /tmp/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f 2、 把这个写入脚本 cd /service/scripts Vim de;/sh → “find /tmp/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f “ 3、 执行 /bin/sh -x /service/scripts/del.sh 4、 放入定时任务crontab -e 并且写上注释 ###删除上面7天之前的任务包 00 00 * * * /bin/sh /server/scripts/del.sh >/dev/null 2>&1