Linux定时任务
at命令
语法 :at [选项] [日期时间]
选项
-
-f:指定包含具体指令的任务文件
-
-q:指定新任务的队列名称
-
-l:显示待执行任务的列表
-
-d:删除指定的待执行任务
-
-m:任务执行完成后向用户发送 E-mail
日期时间:指定任务执行的日期时间
YYMMDDhhmm[.ss] (缩写年、月、日、小时、分钟[秒]
CCYYMMDDhhmm[.ss] (完整年、月、日、小时、分钟和[秒])
now midnight (深夜)
noon (中午)
teatime(下午4点)
AM
PM
时间和日期可以是绝对的,也可以添加一个加号 ( + ) 使它们相对于现在。在指定相 对时间时,下面这些日常生活中所使用的词汇都可以使用:minutes ;hours; days ;weeks; months ;years
比如:now + count time-units
now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours (小时)、days(天)、weeks(星期)。count 是时间的数量,究竟是几天,还是 几小时,等等。更有一种计时方法就是直接使用 today(今天)、tomorrow(明 天)来指定完成命令的时间。
比如:
- at 5pm+3 days(三天后的下午 5 点)
- at 17:20 tomorrow(明天 17 点二十分)
[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.log
at> <EOT>
job 8 at 2013-01-06 17:20
比如上面代码:明天 17 点钟,输出时间到指定文件内
安排at任务,先at命令然后具体时间,后车后在交互界面输入具体指令,然后ctrl+d就可以
查看at任务队列
- atq:查看at任务
- atrm:加任务编号,删除任务
- at -c:加编号,可以查看具体的任务内容
定时任务调度(crontab命令)
crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将 其存放于“crontab”文件中,以供之后读取和执行。
crontab 服务的启动和关闭命令如下:
systemctl start crond # 启动服务
systemctl stop crond # 关闭服务
systemctl restart crond # 重启服务
systemctl reload crond # 重新载入配置
systemctl status crond # 查看crontab服务状态
systemctl enable crond # 加入开机启动
crontab命令
crontab -e : 编辑当前用户的定时任务列表
crontab -l : 查看当前用户的定时任务列表
crontab -r : 删除当前用户的定时任务列表
crontab定时任务格式
比如: * * * * * * command(具体命令)
注意:使用命令是要加命令的绝对路径,涉及文件也要写绝对路径
其中前面的6个星号表示的含义如下:
minute :表示分钟,可以是从0到59之间的任何整数。
hour :表示小时,可以是从0到23之间的任何整数。
day :表示日期,可以是从1到31之间的任何整数。
month :表示月份,可以是从1到12之间的任何整数。
week :表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command :要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
每一个星号部分可用下面的特殊符号:
星号(*):通配符匹配,代表所有可能的值。 *
逗号(,):可以用逗号隔开的值指定一个列表范围,例如“1,2,5,7,8,9”。
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示 “2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执 行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段, 表示每十分钟执行一次。
后台执行:无论是在控制台直接执行,还是在定时任务脚本中,我们在某一条命令的最后面加 上 & 符号,表示当前命令在后台运行,不占用控制台。
新创建的 cron job,不会马上执行,至少要过 2 分钟才执行。如果重启 cron 则马 上执行。