Linux crontab调用问题
来源:互联网 发布:软件检测机构 编辑:程序博客网 时间:2024/06/05 10:34
背景: 前段时间由于有些人员离职,导致监控邮件发送报错,监控邮件一直没有发出来,过了好久才知道,于是做了一个队tomcat异常日志的监控,有错误就发邮件(用python写的)
写好之后,于是用Linux自带的crontab定时器来做。
0 20 10 * * * python /home/pentaho/sendmail.py >/dev/null 2>&1
最开始时这样写的,但是发现怎样都没有调用成功,于是做了几个猜想:
1,crontab 调用python的方式错了
2,python 执行错了
3,crontab 配置错了
后面发现是 crontab的格式错了,应该是,只有五个位置,而六个位置是cron表达式
20 10 * * * python /home/pentaho/sendmail.py >/dev/null 2>&1
于是在网上整理了关于crontab的资料
CRONTAB概念/介绍
crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,
可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。
系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。
对于crontab来说,Linux系统中每个用户都有自己的crontab,如果你是新增crontab定时器,千万不要执行crontab -r,这个会删除掉原来的定时器
触发方式:
crontab由于是系统自带的,所以当增加或者修改后,不要重启服务,系统会每隔一分钟扫描这个文件。
系统的cron文件在 /etc/crontab
用户的cron文件在/var/spool/cron/crontab下
[root@Q302-OSSTJ11 ~]# cd /var/spool/cron[root@Q302-OSSTJ11 cron]# ll |grep crontab[root@Q302-OSSTJ11 cron]# ll总计 8-rw------- 1 pentaho root 1 12-08 14:43 pentaho-rw------- 1 root root 350 12-09 10:51 root[root@Q302-OSSTJ11 cron]# cat root0 5 * * * /home/crond/logwatch.pl >/dev/null 2>&10 5 * * * /home/crond/logrotate >/dev/null 2>&10 5 * * * /home/crond/prelink > /dev/null 2>&10 */1 * * * /home/crond/ntp.sh >/dev/null 2>&10 5 * * * /home/crond/rpm >/dev/null 2>&10 5 * * * /home/crond/tmpwatch >/dev/null 2>&10 10 * * * python /home/pentaho/sendmail.py >/dev/null 2>&1[root@Q302-OSSTJ11 cron]#
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)
Crontab 格式
使用crontab -e 添加要执行的命令。
添加的命令必须以如下格式:
* * * * * /command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
前5个字段分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
一些特殊符号:
*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
一些示例:
00 8,12,16 * * * /data/app/scripts/monitor/df.sh
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh
43 21 * * * 21:43 执行
15 05 * * * 05:15 执行
0 17 * * * 17:00 执行
0 17 * * 1 每周一的 17:00 执行
0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟 执行
0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 执行
42 4 1 * * 毎月1日的 4:42分 执行
0 21 * * 1-6 周一到周六 21:00 执行
0,10,20,30,40,50 * * * * 每隔10分 执行
*/10 * * * * 每隔10分 执行
* 1 * * * 从1:0到1:59 每隔1分钟 执行
0 1 * * * 1:00 执行
0 */1 * * * 毎时0分 每隔1小时 执行
0 * * * * 毎时0分 每隔1小时 执行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * * 1日 和 15日的 5:30 执行
- Linux crontab调用问题
- linux crontab 执行问题
- Linux crontab 环境变量问题
- linux crontab 问题mark一下
- Linux crontab执行错误问题
- linux中crontab的问题
- crontab调用shell访问oracle问题
- crontab调用shell访问oracle问题
- AIX crontab调用不了脚本问题
- Linux下调用crontab 操作Oracle数据库
- linux服务器管理相关问题(三)--使用crontab
- linux crontab不执行问题排查
- crontab linux 定时任务不执行问题
- Linux中crontab的环境变量问题
- linux中crontab 日志方面的问题
- linux crontab调用脚本中的ifconfig命令返回为空
- Linux 的crontab定时任务进行接口调用
- linux的crontab实现秒级别定时调用脚本
- Andriod中文乱码问题的解决方案
- eclipse 老实一直在refreshing workspaceing
- IFeatureClass.Search(IQuery Filter,bool Recycling)参数说明
- SQL 2014新功能介绍系列1 - 内存中 OLTP (In-Memory OLTP)
- Android AppWidget
- Linux crontab调用问题
- 关于HTML<!DOCTYPE>标签
- sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class异...
- solr进阶六:单机版Solr Cloud
- 【NIO】2. Selector
- SQL 2014新功能介绍系列2 - 管理联机操作的锁优先级(Managed Lock Priority)
- OC面向对象之多态
- mysql基础知识了解
- SQL 2014新功能介绍系列3 - 备份还原篇