CronJobExpressionAnalysisRedisantToolbox是一款面向开发者的一站式工具箱,拥有超过30种常用的开发工具;精心设计,快速高效;离线使用,尊重您的隐私。[TOC]一遍又一遍地执行相同的任务可能很麻烦。CronJob允许用户自动执行任务。这节省了宝贵的时间,使用户可以专注于其他重要任务。在这本面向初学者的综合指南中,您将学习cron作业的基础知识,包括它们的类型、语法、特殊字符串和权限。到本文结束时,您将能够使用cron作业更有效地安排任务。使用RedisantToolbox轻松编辑Cron作业什么是Cron作业?Cron是一种实用程序,允许用户输入命令以在特定时间重复安排任务。在cron中安排的任务称为cron作业。用户可以确定他们想要自动化的任务类型以及应该在何时执行。Cron是一个守护进程——一个执行非交互式作业的后台进程。在Windows中,您可能熟悉后台进程,例如与cron守护进程类似工作的服务。cron文件是一个简单的文本文件,其中包含在特定时间定期运行的命令。默认的系统cron表或crontab配置文件是/etc/crontab。只有系统管理员可以编辑系统crontab文件。但是,类Unix操作系统支持多个管理员。每个人都可以随时创建一个crontab文件并编写命令来执行任务。使用cron作业,用户可以自动执行系统维护、磁盘空间监控和计划备份。由于其性质,cron作业非常适合24/7全天候运行的计算机,例如服务器。虽然cron作业主要由系统管理员使用,但它们也对Web开发人员有益。例如,作为网站管理员,您可以设置一个cron作业以在每天午夜自动备份您的网站,或者每周一午夜检查损坏的链接,或者每周五中午清除您的网站缓存。但是,与任何其他程序一样,cron有一些限制,您在使用它之前应该考虑这些限制:作业之间的最小间隔为60秒。使用cron,您将无法每59秒或更短时间重复一项工作。集中在一台计算机上。Cron作业不能分发到网络上的多台计算机。所以如果运行cron的电脑死机了,定时任务就不会执行,错过的作业只能手动运行。没有自动重试机制。Cron被设计为在严格指定的时间运行。如果任务失败,它将在下一个预定时间之前不会再次运行。这使得cron不适用于增量任务。由于这些限制,对于在特定时间以至少60秒的固定间隔运行的简单任务,cron是一个出色的解决方案。基本Cron作业操作本教程将向您展示如何通过在Linux或其他类Unix操作系统上的Bash等shell程序中输入命令来安排cron作业。在继续cron的基本操作之前,必须了解不同的cron作业配置文件:系统cron作业。使用它来安排系统范围的基本作业,这些作业只能使用root权限进行更改。用户crontab。该文件允许用户创建和编辑仅在用户级别可用的cron作业。如果编辑系统crontab,请确保当前用户具有root权限。以下是cron可以执行的一些基本操作:chenjing@LAPTOP-IH0640SI:~$crontab-ucrontab:optionrequiresanargument--'u'crontab:usageerror:unrecognizedoptionusage:crontab[-uuser]filecrontab[-uuser][-i]{-e|-l|-r}(默认操作是替换,根据1003.2)-e(编辑用户的crontab)-l(列出用户的crontab)-r(删除用户的crontab)-i(删除用户的crontab之前提示)要创建或编辑crontab文件,在命令行输入以下内容:crontab-e如果在您的系统上没有找到crontab文件,此命令将自动创建一个新文件。crontab-e允许您添加、编辑和删除cron作业。您需要像vi或nano这样的文本编辑器来编辑crontab文件。第一次输入crontab-e时,系统会要求您选择要使用哪个文本编辑器来编辑文件。要查看系统上活动的cron任务列表,请输入以下命令:crontab-l如果您的系统有多个用户,您可以通过以超级用户身份输入以下命令来查看他们的crontab文件列表:crontab-uusername-l您还可以通过键入以下crontab命令轻松编辑其他用户的计划作业:sudosucrontab-uusername-e要给自己root权限,请将sudosu附加到命令的开头。一些命令,包括这个命令,只能由root用户执行。最后,要删除crontab文件中的所有计划任务并重新开始,请键入以下命令:crontab-r或者,以下命令与crontab-r相同,只是它会在删除之前提示用户使用是/否选项crontab:crontab-i除了crontab,root用户还可以在etc/cron.d目录中添加cron作业。它最适合运行用于自动安装和更新的脚本。请记住,将cron作业添加到此目录的用户必须具有root访问权限并符合run-parts命名约定。或者,root用户可以通过将脚本移动到以下目录来安排它们的执行:/etc/cron.hourly/–每小时运行所有脚本/etc/cron.daily/–每天运行。/etc/cron.weekly/–每周运行一次。/etc/cron.monthly/–每月运行一次。Crontab语法#┌──────────────────minute(0-59)#|┌──────────────小时(0-23)#||┌───────────一个月中的第几天(1-31)#|||┌──────────月(1-12)#||||┌────────星期几(0-6)(星期日到星期六;7在某些系统上也是星期日)#|||||#|||||#|||||#*****命令执行创建cron任务,你需要了解cron的语法和格式。否则,cron作业可能无法正确设置。crontab语法由具有以下可能值的五个字段组成:分钟。命令运行的分钟数,范围为0-59。小时。命令运行的小时数,在24小时制的0-23范围内。每月的第几天。用户希望命令运行的月份的第几天,范围从1到31。月份。用户希望命令运行的月份,取值范围为1-12,代表一月到十二月。一周中的天。命令运行的星期几,取值范围为0-6,代表星期日-星期六。在某些系统中,值7表示星期日。不要将任何字段留空。例如,如果您想要设置一个cron作业在每周五下午5:37运行,您的cron命令应该如下所示:3717**5在上面的示例中,37和17代表下午5:37。Dayofthemonth和Month字段的星号表示所有可能的值。这意味着无论哪天或哪月,都应该重复该任务。最后,5代表星期五。要为您的cron命令设置正确的时间,cron作业操作员的知识是必不可少的。它们允许您指定要在每个字段中输入的值。您需要在所有crontab文件中使用正确的运算符。星号(*)。使用此运算符表示一个字段中所有可能的值。例如,如果您希望您的cron作业每分钟运行一次,请在分钟字段中写一个星号。逗号(,)。使用此运算符列出多个值。例如,在Dayoftheweek字段中写入1,5将安排任务在每周一和周五执行。连字符(-)。使用此运算符来确定值的范围。例如,如果您想在6月和9月之间设置一个cron作业,则在Month字段中写入6-9就可以完成这项工作。分隔器(/)。指示间隔触发器(开始时间/时间间隔)。例如,如果您希望脚本每十二小时运行一次,请在小时字段中写入*/12。最后(L)。此运算符可用于日期字段和星期几字段。例如,在星期几字段中写入3L表示该月的最后一个星期三。工作日(W)。指示最接近该月给定日期的工作日(周一至周五)。例如,如果该月的1日是星期六,则在日期字段中写入1W将在下一个星期一(第3个)运行命令。哈希(#)。使用此运算符确定星期几,表示x(x#n)月的第n周,后跟1到5之间的数字。例如,1#2表示该月的第二个星期一。问号(?)。使用此运算符为“月中的某天”和“星期几”字段输入“无特定值”。Cron作业特殊字符串特殊字符串用于按时间间隔安排cron作业,而不需要用户找出要输入的一组逻辑数字。要使用它们,请写一个@,然后写一个简单的短语。以下是您可以在命令中使用的一些有用的特殊字符串:@hourly作业将每小时运行一次。@daily或@midnight这些字符串将在每天午夜运行任务。使用@weekly在每周日的午夜运行作业。@monthly这个特殊的字符串在每个月的第一天运行一次命令。使用@yearly在每年1月1日午夜运行任务。@reboot使用此字符串,作业将在启动时仅运行一次。Cron语法示例现在您已经了解了正确的cron语法,我们将通过一些示例来帮助您更好地理解它。每周日午夜执行:00周一每小时执行一次:1每天早上6点和下午6点执行:6,18*每10分钟执行一次:*/10****每15分钟执行一次:*/15****7月20日每分钟执行:207*每个工作日(周一至周五)晚上10点执行:221-5每周二午夜执行:0*2一月、二月和五月每分钟执行:1,2,5*每10分钟从早上5:10开始到早上5:59结束:10-59/105***让任务在每个月的第一天早上8点每季度运行一次:81/3每小时运行一次:每分钟运行一次:每个星期日凌晨4:05运行:40结论设置自动安排的家庭作业是防止您忘记重要任务的实用解决方案。Cron作业是系统管理员和Web开发人员管理重复性任务的绝佳方式。需要做的就是输入正确的命令并选择正确的执行时间。要安排cron作业,请在命令行中使用正确的语法。或者,您可以使用特殊字符串来简化该过程。请记住分配适当的权限,以便只有授权用户才能访问cron文件。
