Linux基础命令介绍十四:定时任务

在计算机的使用过程中,经常会有一些计划中的任务需要在将来的某个时间执行,linux中提供了一些方法来设定定时任务。

wkiol1hkf6mhmjjbaacubv1ynxu061-jpg-wh_651x-s_1325389309

1、at

命令at从文件或标准输入中读取命令并在将来的一个时间执行,只执行一次。at的正常执行需要有守护进程atd:

  1. #安装at
  2. yum install -y at 或 apt-get install at -y
  3. #启动守护进程
  4. service atd start 或 systemctl start atd
  5. #查看是否开机启动(关于systemctl请看这一篇)
  6. chkconfig –list|grep atd 或 systemctl list-unit-files|grep atd
  7. #设置开机启动
  8. chkconfig –level 235 atd on 或 systemctl enable atd

如果不使用管道|或指定选项-f的话,at的执行将会是交互式的,需要在at的提示符下输入命令:

  1. [root@centos7 temp]# at now +2 minutes #执行at并指定执行时刻为现在时间的后两分钟
  2. at> echo hello world > /root/temp/file #手动输入命令并回车
  3. at> <EOT>                              #ctrl+d 结束输入
  4. job 9 at Thu Dec 22 14:05:00 2016      #显示任务号及执行时间
  5. [root@centos7 temp]#

选项-l或命令atq查询任务

  1. [root@centos7 temp]# atq
  2. 9       Thu Dec 22 14:05:00 2016 a root

到达时间后任务被执行,生成一个新文件file并保存echo的输出内容

  1. [root@centos7 temp]# ls -l file
  2. -rw-r–r– 1 root root 12 12月 22 14:05 file
  3. [root@centos7 temp]# cat file
  4. hello world
  5. [root@centos7 temp]#

at指定时间的方法很丰富,可以是

1)hh:mm小时:分钟(当天,如果时间已过,则在第二天执行)

2)midnight(深夜),noon(中午),teatime(下午茶时间,下午4点),today,tomorrow等

3)12小时计时制,时间后加am(上午)或pm(下午)

4)指定具体执行日期mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)

5)相对计时法now + n units,now是现在时刻,n为数字,units是单位(minutes、hours、days