您的位置:首页 > 运维架构 > Linux

Linux中的计划任务—Crontab

2017-02-08 22:27 295 查看
1. Crontab是什么?

  Crontab是一个用于设置周期性被执行的任务的工具。

  被周期性执行的任务叫作Cron Job,周期性执行的任务列表我们称为Cron Table。

2. 相关工具

  Putty:一个免费的易用的SSH连接工具(www.putty.org 需FQ)

3. 安装并检查Crontab服务

  1. 检查cron服务

    - 检查Crontab工具是否安装:crontab -l

    - 检查crond服务是否启动:service crond status

  2. 安装cron

    - yum install vixie-cron

    - yum install crontabs

  3. 案例:每分钟都打印当前时间到一个日志文件中

[root@localhost ~]# crontab -e  # 编辑或添加任务
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l  # 查看任务
*/1 * * * * date >> /tmp/log.txt

[root@localhost ~]# date
Wed Feb  8 20:48:42 CST 2017
[root@localhost ~]# tail -f /tmp/log.txt  # 动态刷新文件末尾
Wed Feb  8 20:49:01 CST 2017
Wed Feb  8 20:50:01 CST 2017
^C
[root@localhost ~]#


4. Crontab的基本组成

  


5. Crontab的配置文件格式

  


  - 每晚的21:30重启apache:30 21 * * * service httpd restart

  - 每月1、10、22日的4:45重启apache:45 4 1,10,22 * * service httpd restart

  - 每月1到10日的4:45重启apache:45 4 1-10 * * service httpd restart

  - 每隔2分钟重启apache:*/2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart

  - 晚11点到早7点每隔一小时重启apache:0 23-7/1 * * * service httpd restart

  - 每天18:00到23:00每隔30分钟重启apache:0,30 18-23 * * * service httpd restart 或者 0-59/30 18-23 * * * service httpd restart

  


6. Crontab工具的使用

[root@localhost ~]# crontab -help  # 查看crontab的帮助文档
usage:    crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e    (edit user's crontab)
-l    (list user's crontab)
-r    (delete user's crontab)
-i    (prompt before deleting user's crontab)
-s    (selinux context)

[root@localhost ~]# crontab -e -u user1  # 编辑用户user1的crontab任务
no crontab for user1 - using an empty one
crontab: installing new crontab
You have mail in /var/spool/mail/root
[root@localhost ~]# crontab -l -u user1  # 查看用户user1的crontab任务
0-58/2 * * * * echo "EVEN*********"
[root@localhost ~]# tail -f /var/log/cron  # 动态刷新正在执行的crontab任务


7. Crontab的配置文件:

  

 

8. Crontab的日志

  /var/log/cron 文件保存着cron的任务执行记录

  /var/spool/mail 下也会以邮件的方式发送日志信息

9. Crontab常见错误

  1. 环境变量:不可引用环境变量

    1) 进入家目录,打开隐藏文件:. bash_profile

    2) 例如加入:APPROOT=/usr/local/www/

          export APPROOT 并保存退出

    3) 重新载入这个文件:source ./ .bash_profile

    4) echo $APPROOT 就会显示刚才设置的路径

  2. 命令行操作:

    例:4月的第一个星期日早晨1时59分运行a.sh

      59 1 1-7 4 0 /root/a.sh

      59 1 1-7 4 * test `date +\%w` -eq 0 && /root/a.sh

    1) test a = b 或 test a -eq b 如果结果是0则为正确,为1则为错误

    2) 通过echo$? 来查看上一次的执行结果

    3) date +%w 显示今天是星期几

    4) A && B 表示A成立则执行B

  3. 分钟设置有误:

    1) 每两个小时运行一次:

      错误: * 0,2,4,6,8,10,12,14,16,18,20,22 * * * date

      正确: 0 */2 * * * date

  4. 综合案例解析:

    按顺序执行:[root@localhost ~]# date;sleep 0.5s;date

    每半分钟执行一次:

      */1 * * * * date >> /tmp/date.log

      */1 * * * * sleep 30s; date >> /tmp/date.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: