大家好,我是良旭。生活中,我们有太多的场景需要用到闹钟,比如早上7点起床、下午4点开会、晚上8点逛街等等。在Linux系统中,我们也有类似的需求。比如我们想在凌晨1点上传一个文件到服务器,或者晚上10点查看系统状态等等。但是我们不能一直守在电脑前。毕竟我们也要下班/睡觉,还要陪闺蜜(新人也行)。而且即使是上班时间,如果时间到了,还需要人工操作,效率太低了。at命令就是为了这种需要而诞生的。使用at命令,可以在特定时间自动完成你设定的任务,还可以自动化,非常方便快捷!安装at命令一般来说,大多数Linux发行版都已经安装了at命令。如果不确定,可以使用at-V命令查看,如果有版本返回,说明at命令可以正常使用。$at-Vatversion3.1.13您可能还需要启动名为atd的at守护程序。在大多数Linux系统上,您可以使用systemctl命令启用atd服务并将它们设置为从现在开始自动启动:$sudosystemctlenable--nowatdat命令基本用法语法at[option][datetime]option-f:指定包括特定命令任务文件-q:指定新任务的队列名-l:显示要执行的任务列表-d:删除指定要执行的任务-m:任务执行完成后给用户发送邮件参数日期和时间:指定任务执行日期和时间使用at命令交互调度任务想一想,我们如何使用闹钟这个工具呢?首先我们在闹钟软件上点击加号,然后设置时间,然后在备注里输入闹钟的用途。使用at命令以交互方式调度任务也是如此。首先你输入at命令,然后跟上具体的时间。回车后会进入交互界面,可以输入具体要做的事情(命令),最后结束输入,任务就设置好了。比如你想在上午11点20分在at-test.txt文件中写入一句helloworld,你可以这样交互输入:$at11:20AMwarning:commandswillbeexecutedusing/bin/shat>echo"helloworld">~/at-test.txtat>job3atMonJul2611:20:002021如上所示,at命令使用了直观自然的时间格式。您不需要知道24小时制或将时间转换为UTC。通常直接用我们生活中常用的词就可以理解,比如noon,1:30PM,13:37等,11:20之后可以使用cat命令查看是否有写入的内容在at-test.txt文件中:$cat~/at-test.txtthelloworld使用at命令来安排任务如果你不想使用交互方式给at命令来安排任务,你可以管道值echo或printf到at命令。例如,我想在一分钟后将helloagain语句写入at-test.txt文件:$echo"echo'helloagain'>>~/at-test.txt"|atnow+1minute一分钟后,验证new命令是否执行过:$cat~/at-test.txtthelloworldhelloagain时间表达式前面说了,at命令使用的是我们日常生活中使用的时间格式,非常方便:YYMMDDhhmm[.ss](缩写年份,month,day,hour,minute[seconds])CCYYMMDDhhmm[.ss](fullyear,month,day,hour,minute,and[seconds])nowmidnightnoonteatime`(4pm)AMPM时间和日期可以是绝对的,您还可以添加一个加号(+)使它们相对于现在。指定相对时间时可以使用以下日常用语:分钟小时天周月月年以下是at命令的一些有效表达式示例:$echo"rsync-av/home/tuxme@myserver:/home/tux/"|at3:30AMtomorrow$echo"/opt/batch.sh~/Pictures"|at3:30AM08/01/2022$echo"echohello"|atnow+3days查看at任务队列随时间推移,我们可以忘记设置了多少任务在命令队列中,如果要检查,可以使用atq命令:$atq10ThuJul2912:19:002021atux9TueJul2703:30:002021atux7TueJul2700:00:002021atux要从队列中删除任务,请使用atrm命令和任务序列号。比如删除任务7:$atrm7$atq10ThuJul2912:19:002021atux9TueJul2703:30:002021atux如果要查看定时任务的具体内容,必须查看atspool。只有root用户可以查看spool,所以必须使用sudo查看spool或cat任务的内容。总结at命令是避免忘记将来某个时间的任务或让计算机在您离开时为您运行任务的好方法。与cron命令不同,它不需要从现在开始循环执行任务,因此它的语法比cron的简单得多。下次你想在下班后要求系统为你做某事时,试试at命令吧。本文转载自微信公众号“良旭Linux”,可通过以下二维码关注。转载本文请联系良旭Linux公众号。