CROND 定时任务 - 学习

定时任务 CROND (守护进程)

程序 : 静止

进程 : 动态

crontab 设置命令 

     -l : list 列表

    -e : 编辑

    -r : 删除

    -i : 删除前确认

    -u : 指定操作用户

1
2
3
4
5
6
7
[root@beiyong2 ~]# chkconfig --list crond   #可以查看 crond 是否运行
[root@beiyong2 cron]# crontab -e   #编辑 定时文件 
############         #输入若干#
[root@beiyong2 cron]# crontab -l      #查看定时任务
##########
[root@beiyong2 cron]# cat /var/spool/cron/root         #定时任务相对应的文件,不同用户对应不同文件名
##########


1
2
[root@beiyong2 cron]# ls -l `which crontab`         # crontab 命令具有 SetUID 权限
-rwsr-xr-x. 1 root root 51784 3月  30 2015 /usr/bin/crontab


[root@beiyong2 cron]# cat /etc/crontab    #定时任务的基本格式 


CROND 定时任务 - 学习


" * " 代表 '每' 的意思     5 * * * *           #每五分钟执行一次命令  

                                      00 23 * * *      #每天23点执行命令

                            

" - " 代表范围              00 17-19 * * *        #每天17 18 19点整数点执行

" , " 代表分隔               30 17,18,19 * * *    #每天 17:30 18:30 19:30 执行

" /n " 代表每单位时间       */10 * * * *         #每10分钟进行执行

30 3-5,17-19 * * *     #每天的3:30 4:30 5:30 17:30 18:30 19:30执行

30 */6 * * *               #每隔 6 个小时的半点时刻

30 8-18/2 * * *         #每天 8 点到 18 点每隔 2 个小时的半点时刻

30 21 * * *                #每天的 21:30 执行

45 4 1,10,22 * *        #每月 1 号 10 号 22 号的 4:45 执行

10 1 * * 6,0               #每周六周日 1:10 执行

0,30 18-23 * * *        #每天18至23点之间,每间隔30分钟重启

00 */n * * *               #每隔 1 小时的整点

00 11 * 4 1-3           #4月的每周1,2,3的11点整

 

练习 : 每分钟在 /server/log/haha 中打印 haha 的全拼     (在命令中先测试成功,然后添加定时任务)

1
2
3
4
5
6
[root@beiyong2 ~]# crontab -e
* * * * * echo "haha" >> /server/log/haha.txt         #添加将要执行的命令
[root@beiyong2 ~]# mkdir -p /server/log              #为其创建目录
[root@beiyong2 ~]# tail -f /server/log/haha.txt    #跟踪一个文件(-f 动态查看)        
haha
haha


小结 : 

  1.   最好添加注释

  2. /server/log 目录需要事先存在

  3. 定时任务一定要使用绝对路径

  4. crond 服务必须开启运行

  5. 在命令行中先测试成功,在添加定时任务

  6. 生产任务程序不雅随意打印输出信息

  7. 定时任务执行的脚本要规范(/server/scripts)

  8. 配置定时任务规范操作过程


练习 : 每周六,日上午9:00和下午14:00,去学校上课 

要求 : /server/scripts/oldboy.sh 脚本的功能是打印当前的日期 : 格式为 xxxx-xx-xx

1
2
3
4
5
6
7
8
[root@beiyong2 ~]# mkdir -p /server/scripts          #首先创建目录
[root@beiyong2 scripts]# echo 'date +%F' > /server/scripts/date.sh      
[root@beiyong2 scripts]# chmod +x date.sh
[root@beiyong2 scripts]# ./date.sh           #在命令行中测试脚本
2016-07-16
[root@beiyong2 scripts]# crontab -e
00 9,14 * * 6,0 /bin/bash /server/scripts/date.sh  &> /dev/null   # &> /dev/null 可以保证innode不会被占用
df -i  可以查看innode号是否被占满


练习 : 每隔 2 个小时将系统文件 /etc/service 文件打包备份到 /tmp 下 ( 每次备份按时间生成不同的备份包 )

1
2
3
4
#!/bin/bash      #在命令行中测试正确后写入脚本,并且测试脚本正确性
cd /etc/ && tar -zcf /tmp/service_$(date +%F-%H).tar.gz ./services
[root@beiyong2 scripts]# crontab -l       
00 */2 * * * /bin/sh /server/scripts/services.sh &> /dev/null     #添加定时任务

1.到目标内容的上级目录打包

2.打包的频率是分,包名必须精确到分

3.确保命令执行正确,然后写到脚本


本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1827449
上一篇:人人都会设计模式:06-观察者模式--Observer


下一篇:人人都会设计模式:03-策略模式--Strategy