shell学习之定时运行作业

当你开始使用脚本时,可能会想要在某个预设时间运行脚本。 Linux系统提供了多个在预选时间运行脚本的方法:at命令和cron表,来安排脚本的运行时间和频率。

一.用at命令来计划执行作业

at命令允许指定Linux系统何时运行脚本。at命令会将作业提交到队列中,指定shell何时运 行该作业。at的守护进程会以后台模式运行,检查作业队列来运行作业。

at命令的基本格式非常简单:at [-f filename] time

默认情况下,at命令会将STDIN的输入放到队列中。你可以用-f参数来指定用于读取命令(脚本文件)的文件名。

time参数指定了Linux系统何时运行该作业。如果你指定的时间已经错过,at命令会在第二天的那个时间运行指定的作业。

在如何指定时间这个问题上,你可以非常灵活。at命令能识别多种不同的时间格式。

  • 标准的小时和分钟格式,比如10:15。
  • AM/PM指示符,比如10:15 PM。
  • 特定可命名时间,比如now、noon、midnight或者teatime(4 PM)。
  • 标准日期格式,比如MMDDYY、MM/DD/YY或DD.MM.YY。
  • 文本日期,比如Jul 4或Dec 25,加不加年份均可。
  • 当前时间+25 min
  • 明天10:15 PM
  • 10:15+7天

shell学习之定时运行作业

输出:

shell学习之定时运行作业

atq命令可以查看系统中有哪些作业在等待,作业列表中显示了作业号、系统运行该作业的日期和时间及其所在的作业队列。

shell学习之定时运行作业

一旦知道了哪些作业在作业队列中等待,就能用atrm命令来删除等待中的作业。

shell学习之定时运行作业

只要指定想要删除的作业号就行了。只能删除你提交的作业,不能删除其他人的。

二. cron时间表

Linux系统使用cron程序来安排要定期执行的作业。cron程序会在后台运行并检查一个特殊的 表(被称作cron时间表),以获知已安排执行的作业。

cron时间表采用一种特别的格式来指定作业何时运行。

其格式如下:min hour dayofmonth month dayofweek command

cron时间表允许你用特定值、取值范围(比如1~5)或者是通配符(星号)来指定条目

在crontest.cron中编写以下:

shell学习之定时运行作业

加入定时任务中:crontab /root/shellleaner/crontest.cron

每个系统用户(包括root用户)都可以用自己的cron时间表来运行安排好的任务。Linux提供 了crontab命令来处理cron时间表。要列出已有的cron时间表,可以用-l选项:crontab -l

shell学习之定时运行作业

如果你创建的脚本对精确的执行时间要求不高,用预配置的cron脚本目录会更方便。有4个 基本目录:hourly、daily、monthly和weekly。

shell学习之定时运行作业

因此,如果脚本需要每天运行一次,只要将脚本复制到daily目录,cron就会每天执行它。

相关推荐