Linux系统计划任务之一:at指令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统计划任务之一:at指令相关的知识,希望对你有一定的参考价值。
Linux系统的工作任务有两种工作排程方式:
1.一种是未来某个特定的时间点的,该任务执行完后则不再执行。例如在下周某一天几点钟提醒该出门办理签证。
2.一种是例行性的,就是按照设定的某种模式有规律的周期性执行。例如每周日凌晨4点钟进行数据库的备份工作;系统每隔半小时检查系统内存使用情况等。
那么在Linux系统中是如何达到这两个功能的呢?简单的讲,上面两种情况可分别使用at指令与cron系统服务来实现。
一、 at方式的例行性工作安排
1.启动atd服务
在linux系统上统一负责未来某个时间点的一次性工作任务的服务就是atd,它在CentOS系统上是默认是打开的。我们只需根据需要配置在某个时间点要执行的工作指令或任务,在时间点到来时atd会自动执行相关任务。atd服务的相关操作如下:
#查看系统默认atd服务的状态 [[email protected] ~]# chkconfig --list atd atd 0:off1:off2:off3:on4:on5:on6:off #打开该服务方法如下 [[email protected] ~]# /etc/init.d/atd start #检查当前状态: [[email protected] ~]# /etc/init.d/atd status atd (pid 2241) is running... #显示系统正在运行中。
2.at的工作
at指令有两种工作方式,一种是交互方式,就是用户在at>提示符后输入多个要执行的执行命令,在输入完成后用ctrl+d提交任务。另一种则是将要执行的任务的各指令写入文件中并由at进行调用。
#执行at命令,指定在某个时间点输出内容到/tmp/test.at文件 [[email protected] ~]# at 23:05 at> echo "now is:`date ‘+%F %R‘`" >/tmp/test.at at> cat /etc/fstab >> /tmp/test.at at> <EOT> job 7 at 2016-06-17 23:05 #查询当前at的所有工作排程 [[email protected] ~]# atq 72016-06-17 23:05 a root
其实,在执行完at指令后,系统会根据用户输入的指令内容自动的生成一文件,并保存在/var/spool/at目录中。如下指令所示:
[[email protected] ~]# ll /var/spool/at 总用量 8 -rwx------. 1 root root 2918 6月 17 22:58 a000070174de29 drwx------. 2 daemon daemon 4096 6月 17 22:40 spool #显示系统自动生成的at文件 [[email protected] ~]# cat /var/spool/at/a000070174de29 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 #…….中间删除部分内容 echo "now is:`date ‘+%F %R‘`" >/tmp/test.at cat /etc/fstab >> /tmp/test.at marcinDELIMITER6be5911e # cat /var/spool/at/a000070174de29文件内容结束 #at任务完成后,打开文件,显示执行时间与设定时间一致 [[email protected] ~]# cat /tmp/test.at now is:2016-06-17 23:05 # # /etc/fstab # Created by anaconda on Mon Jun 13 20:04:39 2016 # # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=b770379b-7394-4d18-bb60-31b6bdea2af9 / ext4 defaults 1 1 #………中间删除一部分内容 proc /proc proc defaults 0 0
上面是采用命令的交互方式,另一种方式则是将要执行的各指令写入文件中并由at进行调用。如下:
#编辑文件testat.sh,在文件中输入两指令 [[email protected] tmp]# vim /tmp/testat.sh echo "now is:`date ‘+%F %T‘`" > /tmp/test2.at cat /etc/fstab >> /tmp/test2.at #由at指令在某一时间点调用执行。 [[email protected] ~]# at -f /tmp/testat.sh 23:37
两种指令执行方式虽不同,但过程和效果是一样。
3.at的常用语法
at TIME 设置工作排序
Time可以具体的日期或时间了,如YYYY-MM-DD或例子中的HH:MM,也可以是模糊时间,now, noon, midnight, teatime, tomorrow等。
at –l 或atq :查看工作排程列表
at -d job_num或 atrm job_num : 删除工作排程,后接任务编号
以上是关于Linux系统计划任务之一:at指令的主要内容,如果未能解决你的问题,请参考以下文章