theme: condensed-night-purple
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
上文有讲到
date
命令,使用它我们可以查看当前时间,定制化时间的显示,以及修改系统时间。这篇文章我们要讲到延时执行命令at
,我们可以使用这个命令设置一个命令延时执行的时间。
一、环境准备
不是所有的Linux
发行版都支持使用at
命令。
如果你使用的是Ubuntu
,请使用以下的命令行安装此命令。
$sudo apt install at
如果你使用的是Centos
,请使用以下的命令行安装此命令。
```
反查所需的依赖包,获取at的版本
$yum provides at
安装
$yum install -y ```
检查是否安装可正常使用!
at 14:30
控制台输出结果为:
终端上有一个warning
的提示,意思是让你提供要在14:30要执行的命令,这就表示at
命令安装成功了。
二、使用
2.1 基础使用
入门
如果我们想要在指定时间创建文件,可以按照图示的方法输入创建文件的命令。
现在延迟执行的命令已经输入完成,需要退出并保存设置,可以使用crtl+D
组合键完成退出,首先会显示EOF
,这个缩写代表End Of Transmission(传输结束),退出完成,终端会输出以下图示内容。
内容表达的含义如下:
- job - 表示创建了一个任务
- 3 - 表示第3号任务
- at - 表示“在...时刻”
- Sat Sep 25 14:32:00 2021 - 表示命令具体执行的时间,精确到秒
时间到了约定的时间,就会去执行具体的命令。检查文件目录,的确成功执行。
完整用法
明天14:32执行命令
$ at 14:32 tomorrow
2021年9月27日14:32执行命令
$ at 14:32 09/27/2021
时间间隔后执行
除了指定时刻,还能指定时间间隔后执行。
```
30分钟后执行命令
$ at now +30 minutes ```
间隔时间单位包含 minutes hours days weeks months years
。
2.2 管理查看功能
延迟命令执行后,它就会成为一个任务,等待设置的时间一到就执行,那么如何管理查看这些延时任务呢?
很简单,每次设置延迟执行的命令后,会得到一个job编号,我们基于这个编号可以管理这些任务。
atq命令
atq
命令可列出正等待执行的at
延迟任务,q
表示英语单词queue
,即队列,表示列出at
命令的任务队列,使用方法如图所示。
atrm
atrm
命令可删除正在等待执行的at
延迟任务,rm
表示英语单词remove
,命令后接job编号,使用方法如图所示。
图上延迟执行的任务被删除,因此就不会再被执行了。
三、扩展
通过上面的使用,at
命令确实达到了延迟执行命令的效果,但是需要注意的是,at
命令只能让需要延迟执行的程序只执行一次,如果要达到定时重复执行的效果,请使用另一个强大的命令crontab
。