百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Linux计划任务之at命令实用案例

bigegpt 2024-08-12 14:26 2 浏览

请关注本头条号,每天坚持更新原创干货技术文章

如需学习视频,请查看本头条号简介,免费在线观看学习视频

Windows系统的计划任务估计大家都用过,图形界面,使用简单。Linux同样有计划任务工具,并且功能更为强大,尤其是结合脚本。Linux里常用2种计划任务工具命令:at和crontab。

1. Linux计划任务工具:at

at命令用于一次性执行某任务。当然,如果你结合能自动循环执行任何的脚本,实际上也能达到循环或定期反复执行的效果。如果你想定期反复执行某任务,首选crontab,而不是at。at只能定时一次性执行某程序或者某脚本。

以CentOS7.5为例,默认情况下,最小化安装并没有包含at工具。需要管理员手动安装。

[root@zcwyou ~]# at

-bash: at: 未找到命令

安装at

[root@zcwyou ~]# yum -y install at

最后系统表明安装成功:

Running transaction

正在安装 : at-3.1.13-23.el7.x86_64 1/1

验证中 : at-3.1.13-23.el7.x86_64 1/1

已安装:

at.x86_64 0:3.1.13-23.el7

完毕!

Linux安装at

CentOS 6开启atd服务。

[root@zcwyou ~]# /etc/init.d/atd start

或者

[root@zcwyou ~]# service atd start

CentOS 6检查:

[root@zcwyou ~]# ps -ef |grep atd

确认能看到/usr/sbin/atd正在运行:

root 53055 1 0 09:30 ? 00:00:00 /usr/sbin/atd -f

CentOS 7,开启atd服务。

[root@zcwyou ~]# systemctl start atd

CentOS 7检查:

[root@zcwyou ~]# systemctl status atd

确认能看到active (running):

Active: active (running)

OK!,现在at功能已经成功开启了。默认情况下,at已经设置好了开机自启动。

linux启用at计划任务

2. 常见使用方法

2.1 使用at命令定时执行某脚本

需求:2天后,下午6点执行/root/abc.sh,请提前写好abc.sh这个脚本文件,并保证具有x可执行权限。

[root@zcwyou ~]# at 6pm+2 days

执行过程

at> /root/abc.sh

at> 按键盘上的ctrl+d,表示计划任务设置完毕。

at>

job 2 at 2018-10-11 18:00

at计划任务保存位置

/var/spool/at

linux使用at设置计划任务

2.2 查看at计划任务

查看任务命令atq,可以看到有一个正在等待执行的任务,序号为4

[root@zcwyou ~]# atq

4 2018-10-11 18:00 a root

linux使用at查看计划任务

显示计划任务的自动生成的脚本,以序号为4的任务为例:

[root@zcwyou ~]# at -c 4

2.3 使用atrm命令删除计划任务

比如删除序号为4的计划任务:

[root@zcwyou ~]# atrm 4

linux删除at任务

2.4 定时重启

两分钟后后重启服务器

[root@zcwyou ~]# at now +2 minutes

at> reboot

at> 按键盘上的ctrl+d,表示计划任务设置完毕。

at>

job 1 at Wed Oct 10 10:09:00 2018

看到job 1被创建了,接下来查看它

[root@zcwyou ~]# atq

1 Wed Oct 10 10:09:00 2018 a root

确实可以看到有一个序号为1的任务等待执行。2分钟后,服务器被重启了。

2.5 指定时间执行任务

明天凌晨2点执行某任务

[root@zcwyou ~]# at 02:00am tomorrow

2018年12月30号凌晨4点执行某任务

[root@zcwyou ~]# at 04:00am 12/30/2018

结合以上例子,可以灵活修改一些时间选项

比如把minutes(分钟)改为hours(小时),2小时后执行某任务。

[root@zcwyou ~]# at now +2 hours

3. at的时间选项

  1. hh:mm,即小时:分钟(当天,如果时间已过,则在第二天执行)
  2. midnight(深夜),noon(中午),teatime(下午茶时间,即下午4点),today,tomorrow等
  3. 时间后加am表示上午,pm表示下午
  4. 指定具体执行日期mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)
  5. 相对计时法now + n 单位,now是现在时刻,n为数字,单位有minutes、hours、days、weeks,分别表示分钟、小时、天、周

4. 限制用户使用at命令,一个用户名占用一行

允许用户列表:

/etc/at.allow

禁止用户列表

/etc/at.deny

Step1: atd先检查allow列表,如果里面有指定的用户,即可允许该用户使用at。

Step2: 如果用户不在allow列表中,则需要继续查看deny列表文件是否存在并且需要匹配里面的内容,如果deny列表文件存在并且内容为空,则该用户可以使用at。如果deny列表文件不存在,则该用户不能使用at,root用户不受限制。

点击了解更多,快速查看更多的技术文章列表。

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...