linux crontab定时执行任务

Posted xyhero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux crontab定时执行任务相关的知识,希望对你有一定的参考价值。

在使用一个计算机系统时,常常需要在日程表上执行某些重复的工作。你可以通过使用Linux Cron工具和Crontab命令更简便地执行每一次所需的命令,而不是手动去执行。想知道如何使用这些命令在Linux中安排定时任务吗?继续往下看吧。
就像Windows中的task调度工具一样,你也可以利用Cron工具来安排Linux的工作,定期在固定的时间间隔运行。通常用于自动化系统维护或管理工作,如备份数据、更新包和更多的一些工作,任何Linux系统管理员都知道它的重要性。

什么是Cron?
Cron服务是一种基于时间的工作安排服务,通常在系统启动时启动。它会检查每一分钟的工作,并在它们存在时启动。

什么是Crontab?
为了控制任务进度,我们在Linux中使用Crontab程序。对于cron表来说,Crontab是一个配置文件。Crontab的每一行代表一个任务,包含关于运行什么和什么时候运行的信息。
下面是Linux Crontan的格式:
*  *  *  *  *  command
分 时 日 月 周 命令
简要介绍下各个参数的作用
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的例子
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
表示每晚的21:30重启apache。

00 5 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
表示每月1、10、22日的5 : 00重启apache。

0 */1 * * * /usr/local/bin/php /usr/local/test.php
表示每一个小时调用test.php脚本,使用本地方式调用

*/1 * * * * curl http://localhost/test.php
表示每分钟调用test.php脚本,使用curl方式调用

列出用户目前的crontab
$crontab -l

每当所有的时间规范字段与当前日期和时间匹配时,就会执行该命令。通常情况下,我们在时间规范字段中使用星号(*)来匹配该字段中的任何值。

如何打开和编辑Crontab?
现在,让我们学习如何打开和编辑Crontab文件,这是Linux任务调度中的一个重要步骤。为了实现这一目的,我们可以使用以下命令:
crontab –e
执行此命令后,可能会提示你选择一个编辑器。如果你是初学者,建议选择Nano,当然,也可以根据自己的喜好习惯任意选择。
选择编辑器之后,会打开一个类似于下面屏幕截图的文件:
注意:Hash(#)符号用于表示注释,这些注解将被Cron忽视。

定时任务
现在,为了在Linux中调度任务,你所要做的就是按照上面提到的格式输入所有必要的细节。这里有一个例子:假设我想在每个月的第一天的凌晨2:30运行命令usr/bin/backup,需要将下面一行添加到Crontab:
30 02 1 * * /usr/bin/backup
30 : 30分
02 : 上午2点
1 : 第一天
* : 每个月
* : 这周的每一天
指定多个值和范围

也有可能在Linux中安排工作多次出现。只需使用逗号(,)分隔所需要的值。我们继续用前面的例子进行介绍。现在,如果我想在下午2点半执行命令,我需要做的就是:
30 02,14 1 * * /usr/bin/backup
30 : 30分
02,14 :2 AM和2 PM
1 :第一天
* : 每个月
* : 这周的每一天
注意:我们已经利用14指定了下午2点,因为Crontab使用24小时的时间格式。
再者,Crontab甚至可以在Linux任务调度中指定一段时间,只需插入一个由dash (–)分隔的值。在这里,我们将再次考虑我们的初始示例,以展示它是如何完成的。这一次,假设我们希望在每个月的第一天的2点到2点之间执行命令。我们将以以下方式来做这件工作:
00 02-14 1 * * /usr/bin/backup
00 : 0 分
02-14 : 2AM, 3AM, 4AM, 5AM, 6AM, 7AM, 8AM, 9AM, 10AM, 11AM, 12AM, 1PM, 2PM 1 : 第一天
* : 每个月
* : 这周的每一天
Crontab快捷键
在本文中,关于如何在Linux中调度任务的一个好处是,考虑一下Crontab格式的下面的快捷方式和关键字,这在Linux中可以很方便地安排工作:
@yearly : 在每年1月1日凌晨0点运行一次
@annually : 与@yearly 相同
@monthly : 在每月第一天的凌晨0点运行一次
@weekly : 在每周日的凌晨0点运行一次
@daily : 每天0点运行一次
@midnight : 与@daily相同
@hourly : 在每小时开始时运行一次
例如:假设我每个月必须运行/usr/bin/backup命令,Crontab的格式应该是:
@monthly /usr/bin/backup

























































以上是关于linux crontab定时执行任务的主要内容,如果未能解决你的问题,请参考以下文章

如何让linux定时任务crontab按秒执行

linux使用cron怎么设置定时任务

linux定时执行任务crontab命令用法

Linux下的crontab定时执行任务命令详解

Linux命令之执行定时任务crontab

linux 定时执行shell脚本 定时任务