定时任务

一、定时任务简介

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
解决思路
原文地址:https://www.cnblogs.com/pyrene/p/6485882.html