crontab文件【转】

摘要:
crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。正确的设置是:#runsthedatecommandeveryevenhouratthetopofthehour00,2,4,6,8,10,12,14,16,18,20,22***date˃˃/var/log/date.log#anevenbetterway0*/2***date˃˃/var/log/date.log不发送电子邮件如果输出结果来自crontab里的命令,那么cron守护进程会用电子邮件将它发给用户。

crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。

crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

操作符号

在一个区域里填写多个数值的方法:

  • 逗号 (',') 分开的值,例如:“1,3,4,7,8”
  • 连词符 ('-') 指定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”
  • 星号 ('*') 代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”,等等

某些cron程序的扩展版本也支持斜线 ('/') 操作符,用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数。

时间设置

# 文件格式说明
#  ——分钟 (0 - 59)
# |  ——小时 (0 - 23)
# | |  ——日   (1 - 31)
# | | |  ——月   (1 - 12)
# | | | |  ——星期 (0 - 7)(星期日=0或7)
# | | | | |# * * * * * 被执行的命令

注:

  1. 在“星期域”(第五个域),0和7都被视为星期日。
  2. 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
  3. 前5个域称之分时日月周,可方便个人记忆。

从第六个域起,指明要执行的命令。

AIX系统管理员的Crontab文件

 #=================================================================#  SYSTEM ACTIVITY REPORTS
 #  8am-5pm activity reports every 20mins during weekdays.
 #  activity reports every hour on Saturday and Sunday.
 #  6pm-7am activity reports every hour during weekdays.
 #  summary prepared at 18:05every weekday.
 #=================================================================
 0,20,40 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &
 0 * * * 0,6 /usr/lib/sa/sa1 &
 0 18-7 * * 1-5 /usr/lib/sa/sa1 &
 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &

常见错误

一个常见的错误是,命令行双引号中使用%时,未加反斜线\,例如:

# 错误的例子:
1 2 3 4 5 touch ~/error_`date "+%Y%m%d"`.txt

在守护进程发出的电子邮件中会见到错误信息:

/bin/sh: unexpected EOF while looking for `'''''''

正确的使用方法:

# 正确的例子:
1 2 3 4 5 touch ~/right_$(date +\%Y\%m\%d).txt

# 使用单引号也可以解决问题:
1 2 3 4 5 touch ~/error_$(date '+%Y%m%d').txt

# 使用单引号就不用加反斜线了。这个例子会产生这样一个文件 ~/error_\2006\04\03.txt
1 2 3 4 5 touch ~/error_$(date '+\%Y\%m\%d').txt

下例是另一个常见错误:

# Prepare for the daylight savings time shift
59 1 1-7 4 0 /root/shift_my_times.sh

初看似要在四月的第一个星期日早晨1时59分运行shift_my_times.sh,但是这样设置不对。

与其他域不同,第三和第五个域之间执行的是“或”操作。所以这个程序会在4月1日至7日以及4月余下的每一个星期日执行。

这个例子可以重写如下:

# Prepare for the daylight savings time shift
59 1 1-7 4 * test `date +\%w` = 0 && /root/shift_my_times.sh

另一个常见错误是对分钟设置的误用。下例欲一个程两个小时运行一次:

# adds date to a log file
* 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log

而上述设置会使该程序在偶数小时内的每一分钟执行一次。正确的设置是:

# runs the datecommand every even hour at the top of the hour
0 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log
# an even better way
0 */2 * * * date >> /var/log/date.log

不发送电子邮件

如果输出结果来自crontab里的命令,那么cron守护进程会用电子邮件将它发给用户。

若想关闭某个命令的输出结果,可以将输出结果重定向至/dev/null

>/dev/null 2>&1

在常用的Vixie cron中,也可以在文件的开始部分加入命令来关闭所有命令的邮件输出:

MAILTO=""

免责声明:文章转载自《crontab文件【转】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SAP Odata実行命令(1)相似度度量计算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubantu crontab e 无法编辑保存退出的问题

今天遇到一个问题,在ubantu上crontab -e 修改定时任务的试试,发现修改完之后没法保存退出,:wq和:q!都不行,这是因为ubantu默认的编辑器不是vim。 第一步:退出当前编辑 按ESC后 按SHIFT+Z,或是直接ctrl+Z. 第二步:修改默认编辑器 命令行输入:select-editor (可以看到默认不是vim,出现此界面后输...

Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)

/etc/crontab文件和crontab -e命令区别 1、格式不同 前者 # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) #...

linux下crontab的使用方法

<spanstyle="font-size:14px;">在Linux中任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。 crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序。 cron服务是可以根据时间、日期、月份、星期的组合来调度对重复任务执行的守护进程。linux的cr...

crontab命令加载和使用

crontab命令用于设置周期性被执行的指令。 在Linux系统中,Linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置 首先查看有无安装crontab [root@localhost...

OSX系统添加定时任务 Linux crontab命令 定时执行py 文件 任务

#输出日志 #将日志输入到2.log文件中无论错误还是正确02 15 * * * . ~/xad/pyenv/xadserver/bin/activate && cd /root/xad/xadserver && source ~/.profile && python log_xad.py >/root...

定时任务 Crontab命令 详解

前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是 要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需...