在日常的运维工作中,对crontab定时任务的制定是再寻常不过的了。根据以往的使用经验梳理如下:

基本格式 :
*  *  *  *  *  command
分 时  日  月  周  命令
解释:
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时0~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6/7(0或7表示星期天)(或用Sun或Mon简写来表示)
第6列要运行的命令

crontab -e 编辑计划任务
crontab -l 查看计划任务
crontab -u username -e 在username用户下编辑计划任务
crontab -u username -l 查看username下的计划任务
crontab -u username -r 删除某个用户的计划任务

所有用户定义的crontab存储在目录/var/spool/cron下(可以在这个目录下直接编辑和删除),任务会以创建者的身份被执行。要以特定用户创建一个crontab,先以该用户登录,执行命令crontab -e(或者在root下执行crontab -u username -e)
crontab的日志是/var/log/cron

实例如下:

0)每15分钟和每30分钟执行一次脚本
00,15,30,45 * * * * /bin/sh /root/autocheck.sh >/dev/null 2>&1
00,30 * * * * /bin/sh /root/testhe.sh >/dev/null 2>&1

1)每一分钟执行/root/monit.sh这个脚本
* * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
或者
*/1 * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

每n分钟执行一次
*/n * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

2)每一小时执行/root/monit.sh这个脚本
10 * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
上面的10可以是任何一个数字,其实就是每一小时的第10分钟,或者第n分钟。

每n小时执行一次
n */n * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

每两小时执行一次
0 */2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

23:00到7:00之间每隔2小时执行一次
0 23-7/2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

23:00到8:00之间每隔1小时执行一次
0 23-8/1 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

3)每晚23:59分钟执行
59 23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

即每天的m点的n分钟执行(也即每天执行一次,就是说每天的某个时候去执行就行)
n m * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

4)晚上11点到早上8点之间每两个小时执行
0 23-8/2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

每天的0点、6点、12点、18点各执行一次
0 0,6,12,18 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

11月份内,每天的早上6 点到12 点中,每隔2 小时执行一次
0 6-12/2 * 11 * /bin/bash -x /root/monit.sh > /dev/null 2>&1

5)每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点执行
0 11 4 * 1-3 /bin/bash -x /root/monit.sh > /dev/null 2>&1

或者
0 11 4 * mon-wed /bin/bash -x /root/monit.sh > /dev/null 2>&1

6)1月1日早上4点执行
0 4 1 1 * /bin/bash -x /root/monit.sh > /dev/null 2>&1

7)每周日的4:30执行一次(也即每周执行一次)
30 4 * * 0 /bin/bash -x /root/monit.sh > /dev/null 2>&1

8) 每个月的第一天的6:00执行一次(也即每月执行一次)
0 6 1 * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

9)每月的第1、10、22天的7:30执行一次
30 7 1,10,22 * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

10)每周六、周天的凌晨1:00执行
0 1 * * 6,0 /bin/bash -x /root/monit.sh > /dev/null 2>&1

11)每周一到周五的凌晨2:30执行
30 2 * * 1-5 /bin/bash -x /root/monit.sh > /dev/null 2>&1

12)每天18:00至23:0之间每隔30分钟执行
0,30 18-23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
或者
*/30 18-23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

13)每10秒钟执行一次
* * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 10;/bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 30;/bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 50;/bin/bash -x /root/monit.sh > /dev/null 2>&1

每20秒执行一次
* * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /root/monit.sh > /dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /root/monit.sh > /dev/null 2>&1

每10秒钟执行一次下面的php脚本(log记录)
* * * * * php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 10;php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 20;php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 30;php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 40;php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 50;php /home/fdipzone/php/crontab/tolog.php

使用 tail -f 查看执行情况,可以见到log每10秒被写入一条记录。
tail -f /home/fdipzone/php/crontab/run.log
2. 2014-03-31 21:47:01
3. 2014-03-31 21:47:11
4. 2014-03-31 21:47:21
5. 2014-03-31 21:47:31
6. 2014-03-31 21:47:41
7. 2014-03-31 21:47:51
8. 2014-03-31 21:48:01

14) 在root账号下编写crontab -e计划任务,如下分别在6:30,12:30,18:30,23:30时间点,切换到oracle用户下执行脚本(当然也可以直接在oracle账号下编写crontab -e计划任务,如果不生效,就用这种方式)
30 6,12,18,23 * * * su - oracle -c "/bin/bash -x /oradata/script/oracl_data_bak.sh" >/dev/null 2>&1

有一台内网服务器,通过squid代理上网。发现在这台内网服务器设定的crontab计划任务无效,没有自动执行!
[root@wang-beta ~]# vim /etc/profile
.....
export HTTP_PROXY=http://192.168.1.199:3128
[root@wang-beta ~]# source /etc/profile

[root@wang-beta ~]# crontab -e
*/28 * * * * /bin/bash /root/sbin/list_update.sh > /dev/null 2>&1

发现上面制定的计划任务,手动执行是生效的。但是crontab自动执行无效。

解决办法:
自动执行无效的原因是没有加载上相关环境变量所致。
执行前,强制添加系统环境变量即可
[root@wang-beta ~]# crontab -e
*/28 * * * * source /etc/profile;/bin/bash /root/sbin/list_update.sh > /dev/null 2>&1

------------crontal定时执行失败原因总结-----------
1)脚本语法错误
在crontab脚本没有定时执行的时候,首先需要检查脚本的语法有没有出现问题。2)环境变量问题
有时创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。在手动执行任务时是在
当前shell环境下进行的,程序能够找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的。因此,需要在shelll脚本中提供所有必要的路径和环境变量。
需要注意的主要有以下三点:
-> 脚本中涉及文件路径时写全局路径;
-> 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:#cat start_cbp.sh#!/bin/bashsource /etc/profileexport RUN_CONF=/home/work/conf/cbp_jboss.conf/usr/local/jboss/bin/run.sh -c mev &-> 当手动执行脚本OK,但是crontab死活不执行时,这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/profile;/bin/bash -x /home/jira/bin/start_jira.sh3)系统任务调度及用户任务调度
系统任务调度主要完成系统的一些维护操作,用户任务调度主要完成用户自定义的一些任务,可以将用户任务调度放到系统任务调度来完成(不建议这么做),但是反过来却不行,root
用户的任务调度操作可以通过"crontab –uroot –e"来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到
/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。------------crontab定时任务不执行解决办法------------
1)查看crontab执行记录
如果出现了crontab定时任务不执行的情况,首先需要定位问题,那么就需要通过日志来确定问题所在。crontab日志位置一般位于/var/log/cron,利用下面的语句即可查看日志。
# tail -f /var/log/cron
上面的/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息linux会通过邮件形式发送到给该用户。
对于root用户该邮件记录位于/var/spool/mail/root,通过以下命令可以查看最近的crontab执行情况。
# tail -f /var/spool/mail/root
mail邮件一般只会记录脚本执行成功与否,如果执行失败,无法给出进一步的错误信息,这时需要我们将语句执行的错误信息重定向至文件中,这样可以很方便的查看错误信息。
下面就给出一个简单的例子:
0 6 * * * /root/script/monit.sh >> /root/for_crontab/mylog.log 2>&1
上述语句表示把错误输出和标准输出都输出到mylog.log中,在执行的时候会将命令执行的相关信息记录至mylog.log文件中。可以重启crond服务
# /etc/init.d/crond restart

将/var/spool/cron/root文件锁定(chattr +ai /var/spool/cron/root),这样,crontab在root用户下就编辑不了(用户的crontab定时任务执行文件都放在"/var/spool/cron/用户")。

crontab服务的启动:
/etc/init.d/crond start/stop/restart/status

转载于:https://www.cnblogs.com/kevingrace/p/6212421.html

crontab日常使用梳理相关推荐

  1. Redis Cluster日常操作命令梳理

    在之前的一篇文章已经介绍了Redis Cluster及其部署,下面说下Redis Cluster日常操作命令: 一.以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis: ...

  2. linux crontab定时任务常用梳理

    文章目录 1. 基本格式 2. 基本命令 3. 常用案例 1. 基本格式 # Example of job definition: # .---------------- minute (0 - 59 ...

  3. 大佬们的精品博客[收藏+1]

    好博客总结 技术参考总结 云中王的博客: Centos7中文乱码 MariaDB安装与启动过程记录 logging模块 re模块 xml模块 shelve模块 json模块&pickle模块  ...

  4. 日常安全运营工作的一些思考

    0x0 安全运营的背景 安全运营是以企业安全能力成熟度为基础,运用适当的安全技术和管理手段整合人.技术.流程,持续降低企业安全风险的综合能力.在最近几年安全运营这个岗位出现之前,大部分的企事业单位都是 ...

  5. Centos7.4安装kvm虚拟机(使用virt-manager管理)

    2019独角兽企业重金招聘Python工程师标准>>> Centos7.4安装kvm虚拟机(使用virt-manager管理) 之前介绍了使用WebVirtMgr或Openstack ...

  6. Linux 命令操作手册

    文章目录 一.Boot项目前后台 二.进程 三.防火墙 四.查看系统版本 五.权限赋予 六.远程同步文件 七.目录 八.文件 九.解/压缩 十 .大文件分割方案 十一.查看文件中关键词出现的次数 十二 ...

  7. 大厂的产品经理是怎样进行产品迭代的

    作者:SherlFang 个人网站:iamsherl.com (转载已取得作者授权)这篇文章也是对我自己这几年产品做事方式的一个流程总结吧-- 先说一下背景,大厂和小厂都呆过.呆过野蛮生长的传统集团的 ...

  8. 运维标准化与流程化建设深度指南(转)

    当下企业很多都热衷于建设运维自动化.智能化,通过技术革新代替繁杂的手工运维,提高生产效率的同时最大程度的减少人为失误.但是如何建设自动化运维,在不同的企业有着不同的建设方法和技术栈,虽然大多是以Pyt ...

  9. 运维标准化与流程化建设

    运维标准化与流程化建设 当下企业很多都热衷于建设运维自动化.智能化,通过技术革新代替繁杂的手工运维,提高生产效率的同时最大程度的减少人为失误.但是如何建设自动化运维,在不同的企业有着不同的建设方法和技 ...

  10. 5个自动化小技巧:聪明的员工和管理者如何提升效率?

    办公自动化系统可以打通商业运营过程中的不同连接的动作和流程,通过这些自动化的流程,可以降低员工的负担,提升员工的交付效率.如果企业的管理者和企业的核心员工,可以更好的优化好内部的流程,并且设计合理的自 ...

最新文章

  1. linuxmessage日志消失_某工的centos7 启动了rsyslog之后,日志/var/log/messages等都不产生日志了,都是空的。求大神解决!...
  2. 智能车竞赛技术报告 | 智能车视觉 - 温州大学- 春华秋实
  3. 利用ConfigParser读取配置文件
  4. 打开了悬浮窗权限但是没有_给你的手机添加“樱花雨”特效,打开手机樱花就满屏飘落,漂亮!...
  5. VS高版本编写C程序的C4996错误
  6. JavaWeb之Cookie,Session
  7. Django中的Form ModelForm
  8. 2022-2028年中国海上石油勘探行业市场研究及前瞻分析报告
  9. 使用Xposed框架禁用安卓设备广告
  10. LCD1602 + TLC2543
  11. 微信运动刷步教程 QQ健康刷步数(一)之安卓版本 - 乐运动
  12. 二叉树后序遍历非递归算法(详解)
  13. 网页提交方式post,到底post了些什么?
  14. EXT4分区工具MiniTool Partition Wizard Home Edition
  15. CF76A.Gift [最小生成树]
  16. 十三届双11,一部电商流量变迁史
  17. Flink cdc +doris生产遇到的问题汇总-持续更新
  18. 使用OCR来解决自动化中图片验证
  19. C语言,变长数组的用法
  20. 小清新个人简历自我介绍PPT模板

热门文章

  1. 【渝粤题库】国家开放大学2021春2605经济法律基础题目
  2. 【Python实例第36讲】一个高斯过程回归的例子
  3. 一个td里 两个div重叠
  4. QoS专题-第4期-QoS实现之限速
  5. js排序算法05——快速排序
  6. Nodejs中Mongodb的基本使用
  7. 2017.6.26 接口测试工具postman使用总结
  8. 曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑
  9. Mysql 自动增长 重置
  10. (转)华为面试题算什么,这个背会了外企随便进