Linux定时任务Crontab的使用方法
<p>linux 系统则是由 cron (crond) 这个系统服务来控制的。linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。</p>
<p>
<strong>一、crond简介</strong></p>
<p>
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。</p>
<p>
linux下的任务调度分为两类,系统任务调度和用户任务调度。</p>
<p>
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。</p>
<p>
/etc/crontab文件包括下面几行:</p>
<p>
<span>cat /etc/crontab</span></p>
<p>
<span>shell=/bin/bash</span></p>
<p>
<span>path=/sbin:/bin:/usr/sbin:/usr/bin</span></p>
<p>
<span>mailto=home=/</span></p>
<p>
前四行是用来配置crond任务运行的环境变量,</p>
<p>
第一行shell变量指定了系统要使用哪个shell,这里是bash,</p>
<p>
第二行path变量指定了系统执行 命令的路径,</p>
<p>
第三行mailto变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果mailto变量的值为空,则表示不发送任务 执行信息给用户,</p>
<p>
第四行的home变量指定了在执行命令或者脚本时使用的主目录。 </p>
<p>
crontab文件的含义:</p>
<p>
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:</p>
<p>
minute hour day month week command</p>
<p>
其中:</p>
<p>
minute: 表示分钟,可以是从0到59之间的任何整数。</p>
<p>
hour:表示小时,可以是从0到23之间的任何整数。</p>
<p>
day:表示日期,可以是从1到31之间的任何整数。</p>
<p>
month:表示月份,可以是从1到12之间的任何整数。</p>
<p>
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。</p>
<p>
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。</p>
<p>
<img title="Linux定时任务Crontab的使用方法" alt="Linux定时任务Crontab的使用方法" src="https://zhuji.jb51.net/uploads/img/202305/f3af5948454036fa65ab034c45b6a105.jpg"></p>
<p>
在以上各个字段中,还可以使用以下特殊字符:</p>
<p>
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。</p>
<p>
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”</p>
<p>
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”</p>
<p>
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。</p>
<p>
<strong> 二、crond服务</strong></p>
<p>
启动服务</p>
<p>
</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_692583">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">/bin/systemctl</code> <code class="bash plain">start crond.service</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
<strong>三、配置定时执行myshell 脚本</strong></p>
<p>
1.首先在一个文件夹下面创建.sh文件,并且给权限文件授权755 权限</p>
<p>
这里我的sh文件路径是 /data0/myshell/conllect5m.sh</p>
<p>
然后给文件赋予权限</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_939667">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">chmod</code> <code class="bash plain">-r 755 </code><code class="bash plain">/data0/myshell/</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
这样myshell 下面所有的文件都具有了755权限</p>
<p>
然后 通过 vi 命令打开conllect5m.sh 文件</p>
<p>
2. 切换到目录</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_988065">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cd</code> <code class="bash plain">/data0/myshell</code><code class="bash plain"> </code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
使用vi编辑文件</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_965746">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">vi</code> <code class="bash plain">collect5m.sh</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
代码如下: 第一行 必填的,第二行是描述,第三行配置 执行计划任务的地址 </p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_872668">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash preprocessor bold">#!/bin/sh</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments">#descripion: 描述</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash spaces"> </code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">wget http:</code><code class="bash plain">//www</code><code class="bash plain">.baidu.com</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
写完之后输入 esc 切换成命令方式,输入:wq 保存编辑并退出</p>
<p>
3. 我们切换到目录/etc 下面</p>
<p>
使用vi编辑文件 vi crontab</p>
<p>
输入下面的命令</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_618718">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">shell=</code><code class="bash plain">/bin/bash</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">path=</code><code class="bash plain">/sbin</code><code class="bash plain">:</code><code class="bash plain">/bin</code><code class="bash plain">:</code><code class="bash plain">/usr/sbin</code><code class="bash plain">:</code><code class="bash plain">/usr/bin</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">mailto=root</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash spaces"> </code>
</div>
<div class="line number5 index4 alt2">
<code class="bash comments"># for details see man 4 crontabs</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash spaces"> </code>
</div>
<div class="line number7 index6 alt2">
<code class="bash comments"># example of job definition:</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash comments"># .---------------- minute (0 - 59)</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash comments"># | .------------- hour (0 - 23)</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash comments"># | | .---------- day of month (1 - 31)</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash comments"># | | | .------- month (1 - 12) or jan,feb,mar,apr ...</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash comments"># | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash comments"># | | | | |</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash comments"># * * * * * user-name command to be execute</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash spaces"> </code>
</div>
<div class="line number16 index15 alt1">
<code class="bash comments">#每天 每隔5,10,15,20,30分钟执行一次定时任务</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash plain">*</code><code class="bash plain">/5</code> <code class="bash plain">* * * * root </code><code class="bash plain">/data0/myshell/collect5m</code><code class="bash plain">.sh</code>
</div>
<div class="line number18 index17 alt1">
<code class="bash comments">#*/10 * * * * root /data0/myshell/collect10m.sh</code>
</div>
<div class="line number19 index18 alt2">
<code class="bash comments">#*/15 * * * * root /data0/myshell/collect15m.sh</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash comments">#*/20 * * * * root /data0/myshell/collect20m.sh</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash comments">#*/30 * * * * root /data0/myshell/collect30m.sh</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
写完之后输入 esc 切换成命令方式,输入:wq 保存编辑并退出 </p>
<p>
然后执行启动 crontab,命令</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_493298">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">/bin/systemctl</code> <code class="bash plain">start crond.service</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
经过以上步骤,则计划任务配置完成。</p>
<p>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
原文链接:http://www.cnblogs.com/kingchou/p/8031450.html</p>
頁:
[1]