定时任务的技巧重要的是让任务在您的计算机上按定期且可预测的时间表运行。作为人类,我们有时会因为分心、想太多或假期而忘记要做的事情。计算机真的很擅长按计划做事,但人类必须先对计算机进行编程,然后才能采取行动。在某种程度上,cron系统是对编程的简单介绍。您可以通过编辑单个文件来告诉您的计算机执行您希望它执行的操作。您甚至不需要知道文件的保存位置。只需键入一个简单的命令,输入您希望计算机遵循的“配方”,然后保存。从此,计算机会在指定的时间执行你的指令,直到它被告知停止。按照设计,cron不是一个复杂的系统。这是您需要知道的。什么是计划?cron命令在Linux和Unix中无处不在,并且经常被模仿和重新发明,以至于它几乎是一个通用术语,用于表示按计划发生的事情。它是一种自动化形式,尽管有不同的实现(例如Dillon的cron、Vixie的cron、chrony等),以及anacron和systemd计时器等变体,但几十年来语法和工作流程基本保持不变。cron在“假脱机”系统上工作,例如打印机和电子邮件。如果您不知道打印机和电子邮件使用假脱机也没关系,因为假脱机文件的意义在于您不必考虑太多。在Linux系统中,/var/spool目录被设计为用户不需要直接与之交互的重要但低级文件的中心枢纽。/var/spool中管理的一个假脱机是cron表(简称“crontab”)。包括你在内的每个用户在Linux系统中都有一个crontab。用户可以编辑、查看和删除自己的crontab。此外,用户可以使用crontab来安排任务。cron系统监视crontab并确保crontab中列出的任何作业在其指定时间执行。编辑cron设置您可以使用带有-e(“编辑”)选项的crontab命令来编辑您的crontab。默认情况下,大多数系统调用vim文本编辑器。如果你像我一样不使用Vim,你可以在~/.bashrc文件中为自己设置一个不同的编辑器。我将我的设置为Emacs,但您也可以尝试使用Nano、Kate或任何您喜欢的编辑器。EDITOR环境变量定义您在终端中使用的文本编辑器,VISUAL变量定义您在图形模式下使用的编辑器:exportEDITOR=nanoexportVISUAL=kate更新设置后刷新您的shell会话:$source~/.bashrc您可以使用您喜欢的编辑器编辑crontab:$crontab-e安排要执行的任务cron系统本质上是一个日历系统。您可以通过五个不同的属性告诉cron您希望作业运行的频率:分钟、小时、天、月和周。这些属性的顺序是固定的,不一定直观,你可以把它们想象成滤镜或遮罩。默认情况下,您可以理解为所有设置为“始终”或“每个”。此命令将在一年中的每一天每小时和每分钟运行一次touch/tmp/hello:*****通过为每个属性表面设置特定定义,可以将touch/tmp/hello限制为这个包罗万象的时间表。要使任务在每小时的30分钟运行,请将分钟设置为30:30****touch/tmp/hello该指令可以进一步受特定小时的约束。要让任务每凌晨3:30运行一次:303***touch/tmp/hello你也可以让这个任务只在每个月的第一天运行:3031**touch/tmp/hello你可以使用1到12代表一月到十二月设置月份,用0到6代表周日到周六设置星期。此任务在4月的星期一3:15运行:153*41touch/tmp/hellosetincrements所有这些设置都与固定时间完全匹配。使用cron表示法在特定时间段后运行任务,例如,每15分钟运行一次任务:*/15****touch/tmp/hello每三天上午10:00运行一次任务:*10*/3**touch/tmp/hello每6小时运行一次任务:**/6***touch/tmp/helloCron速记现代cron实现为常见的计划添加了方便的速记,包括:@hourly:hourly@daily:daily@weekly:weekly@monthly:monthly@yearlyor@annually:annuallylisting使用crontab命令查看计划的cron任务列表:$crontab-l153*41touch/tmp/hello删除一个crontab当一个crontab任务不需要时,可以使用-r选项删除它:$crontab-r-i-ioption代表interactive。在删除文件之前,它会提示您进行确认。Cron可以做什么知道如何使用cron是一回事,而知道它的用途又是另一回事。一个典型的用例是备份计划。如果您的计算机大部分时间都在运行,或者整天整夜都在运行,那么对重要分区进行例行备份是可以的。我每天凌晨3点在主数据分区上运行一个名为rdiff-backup的备份程序:greprdiff*3***rdiff-backup/data//vault/another一个常见的用途是系统维护。在我的Slackware桌面上,本地存储库目录每周五下午更新:$crontab-l|grepslack*14**5sudoslackpkgupdate我还每3天15:00运行一个Ansible脚本来清理我的下载文件夹:$crontab-l|grepansible*15*/3**ansible-playbook/home/seth/Ansible/cleanup.yaml有一些重复数据删除脚本、文件大小和/tmp目录监视器、照片大小调整器、文件移动工具,以及许多您可以执行的琐碎任务可以安排在后台运行以帮助保持系统不受干扰。有了cron,计算机就可以像我希望我的实体公寓那样自我照顾。记住cron设置除了弄清楚为什么需要cron,根据我的经验,cron最难的事情是记住它的语法。一遍又一遍地对自己重复这句话,直到记住为止:分、时、日、月、星分、时、日、月、星分、时、日、月、星更好的是,去下载我们的免费备忘单,因此在您最需要的时候它总是触手可及!
