配置文件

crontab主要的配置文件如下:

  • /etc/crontab:系统cron表
  • /etc/cron.d/*:保存由软件包安装脚本创建的cron文件的目录
  • /var/spool/cron/*:保存用户创建的cron文件的目录
  • /etc/cron.allow:权限允许文件
  • /etc/cron.deny:权限禁止文件

cron使用shell(/usr/bin/sh)从用户的HOME目录调用该命令。

cron为每个shell提供了一个默认环境:

HOME=<Users Home Dir>
LOGNAME=<Users Login ID>
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

如果没有设置相关的环境变量,会造成如$PATH问题导致的命令找不到。

可以在cron配置文件的顶部加上:

SHELL=/bin/bash
PATH=/usr/bin:/bin:/sbin:/usr/sbin

cron配置文件区别

cron的配置文件可在三个地方/etc/crontab/etc/cron.d//var/spool/cron/crontabs/

/var/spool/cron/crontabs/通过crontab命令来控制, 属于用户的, 所以这个命令设置了guid, 属于crontab用户组.

/etc/crontab 默认是控制/etc/cron.*, 如/etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly这些.

/etc/cron.d/目录下也是存放crontab的配置文件.

/etc/crontab/etc/cron.d/在配置定时任务时,需要指定用户是root,而/var/spool/cron/crontabs/已经是属于用户控制的, 所以不需要指定用户, 这是格式上的区别.

权限控制文件

cron.allow的一个示例如下:

root
nick
dee
sarah

如果 cron.allow 文件存在,只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户,通过使用 crontab 命令,同时在 cron.deny 文件中列出用户的登录名。如果只有 cron.deny 文件存在,任一名称没有出现在这个文件中的用户可以使用 crontab 命令。

如果以下一个条件成立,用户将不能使用 crontab 命令:

  • cron.allow 文件和 cron.deny 文件不存在(只允许 root 用户)。
  • cron.allow 文件存在,但用户的登录名未在其中列出。
  • cron.deny 文件存在,且用户登录名已在其中列出。

如果 cron.allow 和 cron.deny 文件都不存在,只有被 root 用户授权的人可以用 crontab 命令提交一个作业。

crontab命令

条目格式

minute  hour  day  month  weekday  command

各位置的取值如下:

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

常用命令

// 添加任务
crontab -e
// root用户可以编辑其他用户的任务
crontab -u suraer -e // 添加文件的任务
crontab -u suraer suraer_cron.txt // 删除任务
crontab -r
// root用户可以删除其它用户的任务
crontab -u suraer -r // 列出任务
crontab -l
// root用户查看其它用户的任务
crontab -u suraer -r // 开关cron服务
service crond start
service crond stop

默认cron任务会发送执行任务邮件到用户帐号,如果不需要的话可以在任务行的最后面加上如下内容

>/dev/null 2>&1

可以将任务执行的信息输出到一个文件作为日志查看,如下示例:

10 10 * * * rm /home/ashish/tmp/* > /home/ashish/cronlogs/clean_tmp_dir.log

参考链接:

https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds1/crontab.htm

http://vlinux-freak.blogspot.jp/2010/12/working-with-crontab-scheduler.html

使用crontab设置定时任务的更多相关文章

  1. Linux Ubuntu系统版本通过Crontab设置定时任务的执行

    Linux Ubuntu系统版本通过Crontab设置定时任务的执行 本文由本人收集网络信息总结而来 特别鸣谢:https://linux.zone/2258 1 crontab 简单介绍以及语法使用 ...

  2. linux利用crontab设置定时任务运行jar包

    参考链接: 1.http://blog.csdn.net/javadhh/article/details/42779505 2.http://blog.csdn.net/cctv_liu/articl ...

  3. ubuntu crontab设置定时任务

    ubuntu 设置定时任务   crontab -l  #查看详情crontab -e #设置定时任务 * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用* ...

  4. Crontab设置定时任务

    ​ Crontab文件格式 文件格式: minute hour day month weekday username command 格式解析 字段 描述 minute 分,值为0-59 hour 小 ...

  5. Linux crontab 设置定时任务

    crontab crontab 用于设置系统自动执行的周期性任务 # m h dom mon dow user command 17 * * * * root cd / && run- ...

  6. crontab 设置定时任务

    查看当前用户已有的定时任务: crontab -l 编辑crontab: crontab -e 加入需要执行的命令: 0 */4 * * * /www/shwww.net/venv/bin/pytho ...

  7. 使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  8. 详解使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  9. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

随机推荐

  1. 每天一个linux命令(目录文件操作):【转载】linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令:  ls -lih 输出: [root@loc ...

  2. Google的跨平台开发高质量原生 UI 的移动 SDK---Flutter免费且开源

    Flutter开发 https://www.cnblogs.com/zengfp/p/9927860.html Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台 ...

  3. 用idea将javaweb项目部署到tomcat

    之前在网上找的一些web项目都是用eclipse开发的,想把这些项目导入到idea中,然后部署到tomcat中,在网上找了很多教程,很多都不靠谱,发现网上很多配置都是多余的,其实很多只需要按idea默 ...

  4. Java面向对象设计主要有三大特征:封装性、继承性和多态性

    Java面向对象设计主要有三大特征:封装性.继承性和多态性 一  封装性   1.1  概念:它是将类的一些敏感信息隐藏在类的类部,不让外界直接访问到,但是可以通过getter/setter方法间接访 ...

  5. Gridview中实现求和统计功能

    GridView加入自动求和求平均值小计 效果图: 解决方案: private double sum = 0; //取指定列的数据和,你要根据具体情况对待可能你要处理的是int protected v ...

  6. PDF去除签名

    1.创建一个只有一页的PDF,用Acrobat打开.2.使用“文档->插入页面”,把有数字签名的文档插入到那一页后面.3.使用“文档->删除页面”,删除第一页,然后保存文档.

  7. 【转】linux中shell变量$#,$@,$0,$1,$2的含义解释

    原文网址:http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html linux中shell变量$#,$@,$0,$1,$2的含义解释: ...

  8. [Oracle] CPU/PSU补丁安装详细教程

    Oracle CPU的全称是Critical Patch Update, Oracle对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患,以下是对CPU/PSU补丁安装的具体操作步骤 ...

  9. git 清除本地无效的分支

    远程服务器的分支已经删掉了,但是本地分支还存在 $ git fetch -p 如果不行,使用下面的指令 $ git remote prune origin

  10. hyperledger fabric共识组件分析 --背书策略

    在fabric中,共识过程意味着多个节点对于某一批交易的发生顺序.合法性以及它们对账本状态的更新结构达成一致的观点.满足共识则意味着多个节点可以始终保证相同的状态,对于以同样顺序到达的交易可以进行一致 ...