使用at命令设置值的计划任务只在指定时间点执行一次,前提是对应的系统服务atd必须已经运行。需要注意的是,计划任务的时间、日期必须安排在当前系统的时刻之后,否则无法正确设置计划任务。At的服务名为atd。
设置一次性计划任务时,在at命令行中一次指定计划执行任务时间、日期作为参数(若只是指定时间则表示当前的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按ctrl+D
组合件提交任务即可。所设置的命令操作将在计划的时间点被一次执行。
如:统计某一时间点root用户运行的进程数量,并将其值保存到/tmp/ps.root
文件中。
[root@c7-44 ~]# at 10:10 2020-05-21
at> pgrep -u root | wc -l >/tmp/ps.root
at> <EOT>
at> #ctrl+D 保存退出
job 2 at Thu May 21 10:10:00 2020
Can't open /var/run/atd.pid to signal atd. No atd running?
查看任务
已经设置,但是还未执行的计划任务,可以通过atq命令(at -l)进行查询。但是已经执行过的任务将不会再出现在列表中了
[root@c7-44 ~]# at -l
2 Thu May 21 10:10:00 2020 a root
[root@c7-44 ~]# atq
2 Thu May 21 10:10:00 2020 a root
若要删除指定编号的at任务,可以使用命令atrm(at –d pid)命令。删除后的at任务将不会被执行,并且不会显示在atq命令显示的列表中。问:已经执行过的任务是否可以删除?
[root@c7-44 ~]# atq
2 Thu May 21 10:10:00 2020 a root
[root@c7-44 ~]# at -d 2
#atrm 1 也可以
[root@c7-44 ~]# atq