cron任务详解--持续更新

常遇问题:
1. cron任务配置了, 可没有效果, 日志中也没有报错.
这种情况, 很可能是因为crond服务没起来. 执行命令/etc/init.d/crond start, 启动服务后, cron任务就能顺利执行了. 如果没有crond, yum安装.
2. cron的格式错误, 详见下面分解.

Linux有一个常用的功能, 就是cron定时任务. 在cron任务制定的时候, 遇到过不少琐碎的问题, 现在就从cron任务的格式, 到遇到的各式问题, 做一个总结. 该文章将持续更新, 希望可以帮助到朋友们…

cron任务的格式:

# man cron
NAME
       crontab - maintain crontab files for individual users

SYNOPSIS
       crontab [-u user] file
       crontab [-u user] [-l | -r | -e] [-i] [-s]
  1. -u: 指定要编辑的cron用户, 如root下指定编辑lius用户, 就是crontab -u lius; 不指定, 默认是当前用户.
  2. -l: 列出指定用户, 或当前用户的cron任务列表;
  3. -r: 清空指定用户或当前用户所有的cron任务列表;
  4. -e: 编辑指定用户或当前用户所有的cron任务列表;
  5. -i: 在-r执行的时候, 加-i后, 选Y/y才能执行操作, 避免误操作而引起cron列表被清空.

上面参数里面的两个文件:

FILES-
       /etc/cron.allow
       /etc/cron.deny

普通用户同root一样,可以执行cron程序, 但受到配置文件的限制: /etc/cron.allow和/etc/cron.deny
1. root通过上面两个配置文件分配cron权限; 如果用户的名字出现在cron.allow文件中,他就有权使用crontab命令;
2. 如果cron.allow文件不存在,系统会检查/etc/cron.deny, 确定是否这个用户被拒绝使用cron;
3. 如果两个文件都存在,cron.allow有优先权;
4. 如果两个文件都不存在, 那么只有超级管理员有权限使用cron命令;
5. 如果cron.deny文件为空文件,所有的用户都可以使用crontab.

cron任务的撰写:
1. cron任务的撰写, 可以通过vim修改配置文件的形式. 配置文件的地址在/var/spool/cron/目录下面, 以用户名命名的文件, 如/var/spool/cron/root就是root用户的cron任务配置文件. 可以用vim来编辑, 保存后自动生效.
2. cron任务可以用crontab -e的命令来编辑当前用户的cron计划. 如当前用户为root, 执行crontab -e命令, 自动打开/var/spool/cron/root文件, 在里面用vim相关的操作, 即可进行快速编辑和保存.

crontab -e编辑的优点: 保存任务计划的时候, 如果cron任务里面有语法错误, 是无法顺利进行保存的, 这样方便我们及时修改, 避免cron任务的错误. 而直接编辑配置文件的方法, 并不能实现这一功能…

cron任务的格式:
crontab -e打开root用户的cron任务配置文件并编写, 实例如下:

* * * * * COMMAND >[FILE | /dev/null] 2> [FILE | &1]

注解: 五个星号分别代表: 分, 时, 日, 月, 周; 各个时间的取值范围:

分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6//0代表星期天 

cron任务实例:

# crontab -e
0 2 * * * /bin/bash /root/bak.sh > /root/bak.log 2> /root/bak_err.log

注解: 如上的意思, root用户编辑一个cron任务, 每天凌晨02:00, 执行/root目录下的bak.sh脚本, 标准输出存入/root/bak.log; 出现任何错误信息导出到/root/bak_err.log里面.
: 表示每, 5个都是”“的时候, 表示每月的每周的每天的每小时的每分钟都执行一次cron任务.

每隔N小时执行一次的任务:

0 */N * * * /bin/bash /root/bak.sh > /root/bak.log 2> /root/bak_err.log

注意, 这里的N, 24必须能被其整除, 数值分别是1, 2, 3, 4, 6, 8, 12; 如N=8, 表示每隔8小时的整点, 进行后面的任务, 即00:00, 08:00, 16:00执行cron任务.

每N分钟执行一次任务:

*/N * * * * /bin/bash /root/bak.sh > /root/bak.log 2> /root/bak_err.log

注意, N要能被60整除, 因为这里分钟的取值是0-59, 而区间是整点60分钟; 如N=5, 表示每5分钟, 执行一次cron任务. 其余都是”“, 意思上面有介绍, 就不详述了. *N=1的时候, 与”*”的意思一样, 可以省略.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值