我是靠谱客的博主 冷酷小懒虫,最近开发中收集的这篇文章主要介绍运维日记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
2016年 11月 01日 星期二 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执行定时任务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复