Linux笔记(45)——计划任务之Crontab

来源:互联网 发布:mac上wine怎么用 编辑:程序博客网 时间:2024/06/08 18:18

  • 概念
  • 查看cron是否安装
  • 安装
  • 简单的例子
  • crontab基本组成
  • crontab配置文件语法
    • 基本格式
    • 示例
  • crontab的使用
  • 全局系统配置文件
  • 用户级别配置文件
  • cron日志
  • crontab常见错误
    • 环境变量错误
    • 命令行双引号中使用时未加
    • 第三和第五个域之间执行的是或操作
    • 分钟设置错误
  • 补充

概念

Crontab是一个周期性执行任务的工具

Crontab周期性执行的任务叫做cron job
Crontab周期性执行的任务的列表叫做cron table

查看cron是否安装

crontab -l 查看是否安装
service crond status查看服务是否启动

安装

yum install vixie-cron
yum install crontabs

简单的例子

输入命令crontab -e,将会打开一个文本,输入

*/1 * * * * date >> /tmp/date.txt

表示每分钟执行一次,将当前日期输入到date.txt文件中
这里写图片描述
保存并退出
然后1分钟后打开date.txt即可看到效果。

推荐使用命令tail -f /tmp/date.txt 不断显示date.txt最后几行的内容

crontab基本组成

这里写图片描述

crontab配置文件语法

基本格式

这里写图片描述

示例

这里写图片描述

这里写图片描述

这里写图片描述

crontab的使用

linux是多用户的系统,所以crontab也是分用户的工具

  1. crontab –help 可以查看帮助
  2. crontab -l 查看当前用户的任务列表
  3. crontab -e 为当前用户编辑cron任务,在前面的例子有用到
  4. crontab -e -u user1 为user1编辑计划任务
  5. crontab -l -u user1 查看user1的计划任务

全局(系统)配置文件

查看 /etc/crontab
这里写图片描述

我们可以在这里增加一条
*/1 * * * * user1 echo “hehe”
表示user1用户,每分钟输出一个hehe,修改完后该计划任务就会被执行

我们也可以在/etc/cron.d文件夹下创建一个配置文件mycron,然后把配置信息写进去,然后这个计划任务就会自动被执行

但是我们用crontab -l却查不到刚才添加的任务,说明crontab -l命令只能查询到用户级别的计划任务,而刚刚那种方法添加的配置是属于全局,或者说是系统级别的

用户级别配置文件

crontab -l查看当前用户的计划任务,-e是编辑计划任务,实际上,用户的计划任务是存放在/var/spool/cron/用户名 这个文件中

比如:查看当前用户计划任务

这里写图片描述

vim /var/spool/cron/root
加上一个end file注释
这里写图片描述

再执行crontab -l
这里写图片描述

cron日志

/var/log/cron保存crontab执行的任务的日志
每一天都会有一个日志

/var/spool/mail下也能看到一定的信息

crontab常见错误

环境变量错误

*/1 * * * * echo $var,在执行这个计划任务时,未必能够找到var这个环境变量

命令行双引号中使用%时,未加\

需要加入\表示转义

第三和第五个域之间执行的是“或”操作

例如:
这里写图片描述

1-7表示1号-7号,最后一个0表示星期天,但是实际上这两个域是“或”运算,也就是说,只要是1号-7号,或者是星期天,都会执行。

正确写法:
这里写图片描述

分钟设置错误

两个小时运行一次
* */2 * * * echo “hehe”
以上是错误的,正确的应该是
0 */2 * * *

补充

这里写图片描述

如:

*/1 *  *  *  *  echo "xxxxxxx"*/1 *  *  *  *  sleep 30s;echo "xxxxxxx"

这样就能实现半分钟执行一次

0 0
原创粉丝点击