<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>运达&#039;s  blog &#187; crontab</title>
	<atom:link href="https://www.yunda51.com/?feed=rss2&#038;tag=crontab" rel="self" type="application/rss+xml" />
	<link>https://www.yunda51.com</link>
	<description>运达的博客</description>
	<lastBuildDate>Wed, 12 Nov 2025 07:58:26 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.19</generator>
	<item>
		<title>Linux下的crontab定时执行任务命令详解</title>
		<link>https://www.yunda51.com/?p=1749</link>
		<comments>https://www.yunda51.com/?p=1749#comments</comments>
		<pubDate>Thu, 09 Mar 2017 09:43:58 +0000</pubDate>
		<dc:creator><![CDATA[运达]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[crontab]]></category>

		<guid isPermaLink="false">http://www.yunda51.com/?p=1749</guid>
		<description><![CDATA[一、cron服务 　　cron是一个linux下 的定时执行工具，可以在无需人工干预的情况下运行作业。 　　s<a href="https://www.yunda51.com/?p=1749" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>一、cron服务<br />
　　cron是一个linux下 的定时执行工具，可以在无需人工干预的情况下运行作业。<br />
　　service crond start    //启动服务<br />
　　service crond stop     //关闭服务<br />
　　service crond restart  //重启服务<br />
　　service crond reload   //重新载入配置<br />
　　service crond status   //查看服务状态 </p>
<p>二、cron在3个地方查找配置文件：<br />
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务，每个任务以创建者的名字命名，比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。</p>
<p>三、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。</p>
<p>SHELL=/bin/bash<br />
PATH=/sbin:/bin:/usr/sbin:/usr/bin<br />
MAILTO=root<br />
HOME=/</p>
<p># For details see man 4 crontabs</p>
<p># Example of job definition:<br />
# .---------------- minute (0 - 59)<br />
# | .------------- hour (0 - 23)<br />
# | | .---------- day of month (1 - 31)<br />
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...<br />
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat<br />
# | | | | |<br />
# * * * * * user-name command to be executed</p>
<p>    MAILTO=root：是说，当 /etc/crontab 这个档案中的例行性命令发生错误时，会将错误讯息或者是屏幕显示的讯息传给谁？由于 root 并无法再用户端收信，因此，我通常都將这个 e-mail 改成自己的账号，好让我随时了解系统的状态！<br />
    01 * * * * root run-parts /etc/cron.hourly：在 #run-parts 这一行以后的命令，我们可以发现，五个数字后面接的是 root ，这一行代表的是『执行的级别为root身份』当然，你也可以将这一行改为成其他的身份！而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内（/etc/cron.hourly）的所有可执行文件』，也就是说，每个小时的01分，系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件！后面三行也是类似的意思！你可以到 /etc/ 底下去看看，系统本来就预设了这4个目录！你可以将每天需要执行的命令直接写到/etc/cron.daily即可，还不需要使用到crontab -e的程式！</p>
<p>四、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。</p>
<p>五、权限(？)<br />
crontab权限问题到/var/adm/cron/下一看，文件cron.allow和cron.deny是否存在<br />
用法如下：<br />
1、如果两个文件都不存在，则只有root用户才能使用crontab命令。<br />
2、如果cron.allow存在但cron.deny不存在，则只有列在cron.allow文件里的用户才能使用crontab命令，如果root用户也不在里面，则root用户也不能使用crontab。<br />
3、如果cron.allow不存在, cron.deny存在，则只有列在cron.deny文件里面的用户不能使用crontab命令，其它用户都能使用。<br />
4、如果两个文件都存在，则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab，如果两个文件中都有同一个用户，以cron.allow文件里面是否有该用户为准，如果cron.allow中有该用户，则可以使用crontab命令。 </p>
<p>AIX 中 普通用户默认都有 crontab 权限，如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny<br />
HP-UNIX 中默认普通用户没得crontab 权限 ，要想放开普通用户的crontab 权限可以编</p>
<p>六、创建cron脚本<br />
第一步：写cron脚本文件,命名为crontest.cron。<br />
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt  表示，每隔15分钟，执行打印一次命令<br />
第二步：添加定时任务。执行命令 “crontab crontest.cron”。搞定<br />
第三步："crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本</p>
<p>注意：这操作是直接替换该用户下的crontab，而不是新增</p>
<p>七、crontab用法<br />
　　crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。<br />
    每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的</p>
<p>　  在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域，其中前五个域是指定命令被执行的时间，最后一个域是要被执行的命令。<br />
    每个域之间使用空格或者制表符分隔。格式如下：<br />
　　minute hour day-of-month month-of-year day-of-week commands<br />
    合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)<br />
    除了数字还有几个个特殊的符号就是"*"、"/"和"-"、","，*代表所有的取值范围内的数字，"/"代表每的意思,"/5"表示每5个单位，"-"代表从某个数字到某个数字,","分开几个离散的数字。</p>
<p>    -l 在标准输出上显示当前的crontab。<br />
　　-r 删除当前的crontab文件。<br />
　　-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时，编辑后的文件将自动安装。 </p>
<p>八、基本用法：示例：<br />
基本格式 :<br />
*　　*　　*　　*　　*　　command<br />
分　时　日　月　周　命令</p>
<p>第1列表示分钟1～59 每分钟用*或者 */1表示<br />
第2列表示小时1～23（0表示0点）<br />
第3列表示日期1～31<br />
第4列表示月份1～12<br />
第5列标识号星期0～6（0表示星期天）<br />
第6列要运行的命令</p>
<p>crontab文件的一些例子：</p>
<p>30 21 * * * /usr/local/etc/rc.d/lighttpd restart<br />
上面的例子表示每晚的21:30重启apache。</p>
<p>45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart<br />
上面的例子表示每月1、10、22日的4 : 45重启apache。</p>
<p>10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart<br />
上面的例子表示每周六、周日的1 : 10重启apache。</p>
<p>0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart<br />
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。</p>
<p>0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart<br />
上面的例子表示每星期六的11 : 00 pm重启apache。</p>
<p>* */1 * * * /usr/local/etc/rc.d/lighttpd restart<br />
每一小时重启apache</p>
<p>0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart<br />
晚上11点到早上7点之间，每隔一小时重启apache</p>
<p>0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart<br />
每月的4号与每周一到周三的11点重启apache</p>
<p>0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart<br />
一月一号的4点重启apache</p>
<p>名称 : crontab</p>
<p>使用权限 : 所有使用者</p>
<p>使用方式 :</p>
<p>crontab file [-u user]-用指定的文件替代目前的crontab。</p>
<p>crontab-[-u user]-用标准输入替代目前的crontab.</p>
<p>crontab-1[user]-列出用户目前的crontab.</p>
<p>crontab-e[user]-编辑用户目前的crontab.</p>
<p>crontab-d[user]-删除用户目前的crontab.</p>
<p>crontab-c dir- 指定crontab的目录。</p>
<p>crontab文件的格式：M H D m d cmd.</p>
<p>M: 分钟（0-59）。</p>
<p>H：小时（0-23）。</p>
<p>D：天（1-31）。</p>
<p>m: 月（1-12）。</p>
<p>d: 一星期内的天（0~6，0为星期天）。</p>
<p>cmd要运行的程序，程序被送入sh执行，这个shell只有USER,HOME,SHELL这三个环境变量</p>
<p>说明 :</p>
<p>crontab 是用来让使用者在固定时间或固定间隔执行程序之用，换句话说，也就是类似使用者的时程表。-u user 是指设定指定</p>
<p>user 的时程表，这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话，就是表示设</p>
<p>定自己的时程表。</p>
<p>参数 :</p>
<p>crontab -e : 执行文字编辑器来设定时程表，内定的文字编辑器是 VI，如果你想用别的文字编辑器，则请先设定 VISUAL 环境变数</p>
<p>来指定使用那个文字编辑器(比如说 setenv VISUAL joe)</p>
<p>crontab -r : 删除目前的时程表</p>
<p>crontab -l : 列出目前的时程表</p>
<p>crontab file [-u user]-用指定的文件替代目前的crontab。</p>
<p>时程表的格式如下 :</p>
<p>f1 f2 f3 f4 f5 program</p>
<p>其中 f1 是表示分钟，f2 表示小时，f3 表示一个月份中的第几日，f4 表示月份，f5 表示一个星期中的第几天。program 表示要执</p>
<p>行的程序。</p>
<p>当 f1 为 * 时表示每分钟都要执行 program，f2 为 * 时表示每小时都要执行程序，其馀类推</p>
<p>当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行，f2 为 a-b 时表示从第 a 到第 b 小时都要执行，其馀类推</p>
<p>当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次，f2 为 */n 表示每 n 小时个时间间隔执行一次，其馀类推</p>
<p>当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行，f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行，其馀类推</p>
<p>使用者也可以将所有的设定先存放在档案 file 中，用 crontab file 的方式来设定时程表。</p>
<p>例子 :</p>
<p>#每天早上7点执行一次 /bin/ls :</p>
<p>0 7 * * * /bin/ls</p>
<p>在 12 月内, 每天的早上 6 点到 12 点中，每隔3个小时执行一次 /usr/bin/backup :</p>
<p>0 6-12/3 * 12 * /usr/bin/backup</p>
<p>周一到周五每天下午 5:00 寄一封信给 alex@domain.name :</p>
<p>0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 20 0-23/2 * * * echo "haha" 注意 : 当程序在你所指定的时间执行后，系统会寄一封信给你，显示该程序执行的内容，若是你不希望收到这样的信，请在每一行空一格之 后加上 > /dev/null 2>&#038;1 即可</p>
<p>例子2 :</p>
<p>#每天早上6点10分</p>
<p>10 6 * * * date</p>
<p>#每两个小时</p>
<p>0 */2 * * * date</p>
<p>#晚上11点到早上8点之间每两个小时，早上8点</p>
<p>0 23-7/2，8 * * * date</p>
<p>#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点</p>
<p>0 11 4 * mon-wed date</p>
<p>#1月份日早上4点</p>
<p>0 4 1 jan * date</p>
<p>范例</p>
<p>$crontab -l 列出用户目前的crontab</p>
]]></content:encoded>
			<wfw:commentRss>https://www.yunda51.com/?feed=rss2&#038;p=1749</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
