小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
at命令用于一次性定时计划任务,使用at可以在特定时间执行命令,用at创建的作业仅执行一次。接下来我们将介绍一下at命令的使用方法。
安装at服务
可以使用yum install at或者apt install at进行安装。
使用at命令
语法格式
at [选项] runtime
常用选项如下:
- -f:指定包含具体指令的任务文件
- -q:指定新任务的队列名称
- -l:显示待执行任务的列表
- -d:删除指定的待执行任务
- -m:任务执行完成后向用户发送e-mail
指定执行时间
-
指定时间,使用
HH:MM(小时:分钟)形式。若要指示12小时制,在时间后使用am(上午)或pm(下午)即可。您还可以使用now,midnight(深夜 0点),noon(中午 12点)或teatime(饮茶时间,一般指16点)之类的字符串。如果过了指定的时间,则作业将在第二天执行。 -
指定日期,格式为
month day(月 日)、mm/dd/yy(月/日/年)、dd.mm.yy(日.月.年)等,指定的日期必须跟在指定时间的后面。也可以使用例如today,tomorrow等。 -
增量,
at也接受以now + count time-unit格式递增,其中count是数字,time-unit可以是以下字符串之一:minutes,hours,days或weeks。
例如:
从现在起两天后的下午1点执行任务:
at 1pm + 2 days
2021年10月31日14点执行任务:
at 14:00 10/31/21
从现在开始一小时后执行任务:
at now + 1 hours
实例
两天后的上午10点执行mkdir at_test命令:
[root@centos7 ~]# at 10am + 2 days
at> mkdir at_test
at> <EOT>
job 1 at Sun Oct 17 10:00:00 2021
[root@centos7 ~]#
明天13:30执行输出日期到指定文件:
at 13:30 tomorrow
at> date > ./date.log
at> <EOT>
job 2 at Sat Oct 16 13:30:00 2021
[root@centos7 ~]#
注意: 执行at命令时,系统会显示以at>开命令提示符,需要输入要执行的一个或多个命令,例如mkdir at_test,完成输入命令后,按Ctrl+D退出提示并保存作业,将会显示作业编号以及执行时间和日期。
计划任务设定后,在没有执行之前我们可以用atq命令或者at -l来查看系统待处理的工作任务:
[root@centos7 ~]# atq
1 Sun Oct 17 10:00:00 2021 a root
2 Sat Oct 16 13:30:00 2021 a root
[root@centos7 ~]# at -l
1 Sun Oct 17 10:00:00 2021 a root
2 Sat Oct 16 13:30:00 2021 a root
每行包括作业编号、日期及时间、队列字母和用户名。
使用atrm命令或者at -d命令可以删除未执行的任务:
atrm 2
[root@centos7 ~]# at -l
1 Sun Oct 17 10:00:00 2021 a root
使用at -c命令可以查看任务的内容:
[root@centos7 ~]# at -c 1
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=24; export XDG_SESSION_ID
HOSTNAME=centos7; export HOSTNAME
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
···
${SHELL:-/bin/sh} << 'marcinDELIMITER5e7044d9'
mkdir at_test
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !