当前位置: 首页 > 科技观察

使用at命令在Linux上安排任务

时间:2023-03-14 23:15:12 科技观察

at命令可以轻松安排Linux任务在您选择的任何时间或日期运行,让我们看看它能为您做什么。当您希望命令或脚本在特定时间运行时,您无需将手指悬停在键盘上等待按下Enter键,或在特定时间坐在办公桌前。相反,您可以通过at命令设置任务。在本文中,我们将了解如何使用at来安排任务,如何准确选择任务要运行的时间,以及如何使用at查看计划运行的任务。atvscron对于那些使用cron在Linux系统上安排任务的人来说,at命令类似于cron,因为您可以在选定的时间安排任务,但cron用于定期运行的作业——即使一年一次.大多数cron作业设置为每天、每周或每月运行,但您可以控制它们运行的??频率和时间。另一方面,at命令用于只运行一次的任务。想在午夜重启您的系统吗?没问题,at可以为您做这件事,只要您有适当的权限。如果您希望系统在每周六凌晨2点重新启动,请改用cron。使用atat命令很容易使用,只需记住几件事。使用at的一个简单示例如下所示:$at5:00PMat>date>>thisfileat>输入at和应该运行命令的时间后,at将提示您该命令将在设定的时间运行时间(在这个例子中是日期命令)。键入^D(Ctrl+d)以完成请求。假设我们在下午5点之前设置这个at命令,那么这个日期和时间将在当天下午5点添加到名为thisfile的文件的末尾。否则,该命令将在第二天下午5点运行。与at命令交互时,可以输入多个命令。如果要同时运行多个命令,只需输入多个命令行:$at6:22warning:commandswillbeexecutedusing/bin/shat>echofirst>>thisfileat>echosecond>>thisfileat>在上面的命令中,我们使用了普通用户帐户,并向用户主目录中的文件添加了一些简单的文本。如果您在早上6:22之后运行命令,命令将在第二天运行,因为6:22表示早上6:22。如果您想在下午6:22运行,请使用下午6:22或18:22。下午6:22也可以。您还可以使用at安排命令在指定的日期或时间运行,例如10:00AMApril152021或noon+5days(从今天起5天内的中午运行),以下是一些示例:at6PMtomorrowatnoonApril152021atnoon+5daysat9:15+1000days指定要运行的命令并按^D后,你会注意到at命令为每个请求分配了一个作业编号,这个编号会显示在jobof队列中的at命令。$atnoon+1000dayswarning:commandswillbeexecutedusing/bin/shat>date>>thisfileat>job36atTueDec2712:00:002022<==job#is36checkqueue你可以使用atq(atqueue)命令查看at作业队列:$atq32ThuApr203:06:002020ashs35MonApr612:00:002020ashs36TueDec2712:00:002022ashs34ThuApr218:00:002020ashs如果您需要取消队列中的作业,请使用带有作业编号的atrm(删除)命令:$atrm32$atq35MonApr612:00:002020ashs36TueDec2712:00:002022ashs34ThuApr218:00:002020ashs可以使用at-c命令查看定时任务详情,其他详情(活动搜索路径等)也可以可以看到,但最后一行将显示计划运行的命令。$在-c36|尾巴-6cd/home/shs||{echo'Executiondirectoryinaccessible'>&2exit1}date>>thisfile注意,这个命令说明会先测试是否可以通过cd命令进入用户目录。否则,作业将退出并出现错误。如果可以,运行at中指定的命令。它将命令视为“输入/home/shs或错误退出”。以root身份运行作业要以root身份运行作业,只需将sudo与at命令一起使用,如下所示:$sudoat8PM[sudo]shs的密码:警告:命令将使用/bin/shat>rebootnowat>job37atWedApr116:00:002020请注意,root的任务显示在以root为执行者的队列中。35MonApr612:00:002020ashs36TueDec2712:00:002022ashs37WedApr120:00:002020aroot<==runthescript您还可以使用at命令运行脚本,这里有一个例子:$at4:30PMwarning:commandswillbeexecutedusing/bin/shat>bin/trymeat>禁止使用at命令/etc/at.deny文件提供了一种方式来禁止用户使用at命令。默认情况下,它可能包含一个不允许的帐户列表,例如ftp和nobody。可以使用/etc/at.allow文件完成相反的操作,但通常只配置at.deny文件。总结当您安排一次性任务时,无论您希望它在今天下午还是几年后运行,at命令都是通用且易于使用的。