定时任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序

任务调度分类

  • 系统工作:有些重要的工作必须周而复始的执行
  • 个别用户工作:个别用户可能希望执行某些程序

crontab 进行任务的设置

基本语法

crontab [选项]

常用选项

-e:编辑 crontab定时任务

-l:查询crontab任务

-r:删除当前用户所有的crontab任务

快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度:crontab -e

接着输入任务到调度文件

*/1**** ls -l /etc/ > /tmp/to.txt

每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令

细节说明
  • 5个点位符的说明

    • 第一个 "*":一小时当中的第几分钟 【0-59】
    • 第二个 "*":一天当中的第几小时 【0-23】
    • 第三个 "*":一个月当中的第几天 【1-31】
    • 第四个 "*":一年当中的第几月 【1-12】
    • 第五个 "*":一周当中的周几 【0-7】( 0 和 7 都代表周日)
  • 特殊符号说明

    • *:表示任何时间。如第一个"*",就代表一小时中每分钟都执行一次
    • ,:表示不连续的时间。如“ 0 8,12 * * * ”,就代表每天的8点0分,12点0分执行一次
    • -:表示连续的时间范围。如“ 0 5 * * 1-6 ”,代表周一到周六凌晨5点0分执行
    • */n:表示每隔多久执行一次。比如“ */1 * * * * ”,代表每隔1分钟执行一次

crond 相关指令

终止任务调度

crontab -r

列出当前有那些任务调度

crontab -l

重启任务调度

service crond restart

at 定时任务

基本介绍

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
  2. 默认情况下,atd守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如时间与当前时间匹配,则运行此作业
  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
  4. 在使用at命令时,一定要保证atd进程的启动 可以使用相关指令来查看:ps -ef | grep atd

基本语法

at [选项] [时间]

Ctrl + D 结束at命令的输入,两次

常用选项

-m:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出

-Iatd的别名

-datrm的别名

-v:显示任务将被执行的时间

-c:打印任务的内容到标准输出

-V:显示版本信息

-q<队列>:使用指定的队列

-f<文件>:从指定文件读入任务而不是从标准输入读入

-t<时间参数>:以时间参数的形式提交要运行的任务

at 指定时间

  1. 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
  2. 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
  3. 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 例如:12pm
  4. 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
  5. 使用相对计时法。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。 例如:now + 5 minutes
  6. 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。

案例:2天后的下等5点执行 /bin/ls/home

$ at 5pm + 2 days
at> /bin/ls/home

我是阿廷,一个相信努力可以改变人生的人,我相信一切的上进行为都是值得的,至少可以让我看见更大的世界。