我是靠谱客的博主 冷酷小懒虫,最近开发中收集的这篇文章主要介绍运维日记019 -- Linux下使用at执行定时任务运维日记019 – Linux下使用at执行定时任务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

运维日记019 – Linux下使用at执行定时任务

在Linux中cron机制适宜于处理周期性执行的规律工作,但如果仅仅想把任务安排在某个预定时间执行一次,则应该用at。at既可以接收来自stdin的命令,也接收预先写在文件中的命令。

at的安装

RHEL6最小化安装后是没有at的,可以用如下方式查询at所在的软件包并安装之:

# yum provides at
... ...
at-3.1.10-43.el6_2.1.x86_64 : Job spooling tools
... ...

# yum install at

查看一下atd服务是否开启,并将其设置为开机启用:

# service atd status
atd is stopped

# service atd start
Starting atd:                                              [  OK  ]

# chkconfig --list atd
atd             0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭

at的语法

  • at [-f] time
  • at [options]

at命令的第一种形式会从stdin或者file文件读取命令,将命令排入队列,使其于指定时间(time)执行;第二种形式可以列出或者删除队列中的任务。

常用选项:

  • -d job1 [,jib2, …]
    删除队列中的特定任务

  • -l
    列出已排在队列中的任务

设置成功的at计划任务会在/var/spool/at下生产一个可执行脚本,例如:

# at -f my_program 12:00

# ll /var/spool/at
总用量 8
-rwx------. 1 root   root   2638 11月  1 11:06 a000070177ddfb
drwx------. 2 daemon daemon 4096 11月  1 11:05 spool

文件a000070177ddfb就是这个计划任务的可执行脚本,当任务执行完成后,该脚本文件又会被删除。

范例

  • 在今天10:58执行一次date命令
$ at 10:58
at> date > /tmp/at.txt
at> <EOT>
job 1 at Tue Nov  1 10:58:00 2016

$ cat /tmp/at.txt
20161101日 星期二 10:58:00 CST
  • 三分钟后对磁盘sdb1执行一次检查:
# at now+3 minutes
at> fsck /dev/sdb1
at> <EOT>
  • 2016年11月1日上午8点执行一次my_comm_list文件中所列的命令:
# at -f my_comm_list 8:00 am 11012016
  • 查看队列中的未完成任务,然后删除5号任务:
# at -l
6       2016-10-31 12:29 a root
5       2016-11-01 08:00 a root

# at -d 5

at的访问控制

和cron类似,at也提供了访问控制措施,以决定哪些用户可以使用调度服务。

  • /etc/at.deny
  • /etc/at.allow

如果两个文件都不存在,则只有root管理员可以使用at;如果只有at.deny文件,而at.allow文件不存在,则除了黑名单之外的所有用户都可以使用at;如果at.allow文件存在,则只有白名单用户才可以使用at。

最后

以上就是冷酷小懒虫为你收集整理的运维日记019 -- Linux下使用at执行定时任务运维日记019 – Linux下使用at执行定时任务的全部内容,希望文章能够帮你解决运维日记019 -- Linux下使用at执行定时任务运维日记019 – Linux下使用at执行定时任务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部