当前位置: 首页 > news >正文

at:定时任务,仅执行一次

at​ 命令用于在指定时间执行一次性任务。这个命令也是需要独立安装的:apt install at

它的兄弟crontab​用于执行周期性任务。

创建任务

这个命令是比较灵活的:

  • 第一行写时间,第二行写任务,第三行按下Ctrl+D​结束输入

    at 10:30 PM
    at> echo "Hello, world!" > output.txt
    at> Ctrl+D
    
  • 你也可以在一行中完成

    $ echo "ls -l" > output.txt | at now + 1 hour
    warning: commands will be executed using /bin/sh
    job 1 at Wed Sep 11 17:05:00 2024
    

  • 任务还可以是脚本

    at 3pm tomorrow < script.sh
    
  • 最准确是是指定一个绝对时间

    at 10:00 2024-04-07 < script.sh
    

查看任务

使用atq​或at -l​查看当前计划任务列表

$ at -l
1       Wed Sep 11 17:05:00 2024 a root
2       Wed Sep 11 17:10:00 2024 a root

查看任务内容:使用at -c 任务序号​命令,输出的最底部就是任务的内容。输出不太友好。

取消任务

先查看任务列表,再使用atrm​或者at -r​命令可以取消一个计划任务。例如,要取消任务编号为1的任务:

atrm 1

守护进程

atd

● atd.service - Deferred execution schedulerLoaded: loaded (/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2024-07-31 09:05:04 CST; 1 month 11 days agoDocs: man:atd(8)Main PID: 1072 (atd)Tasks: 1 (limit: 9283)Memory: 284.0KCPU: 169msCGroup: /system.slice/atd.service└─1072 /usr/sbin/atd -f

配置文件

默认:所有用户都可以使用at命令

/etc/at.allow​ 明确指出可以使用at命令的用户:

zhangsan
lisi
wangwu

/etc/at.deny​明确指出不可以使用at命令的用户:

zhaoliu

详细选项

at 选项 时间
  • -m​: 当任务完成时,发送邮件给用户。如果不想发送邮件,可以在命令后面加上>/dev/null 2>&1​,将输出重定向到/dev/null​。
  • -f <file>​: 指定一个包含要执行命令的文件。
  • -l​: 列出当前用户的所有at​任务。
  • -d <job>​: 删除指定的at​任务。
  • -r <job>​: 删除指定的at​任务,与-d​参数相同。
  • -q <queue>​: 指定任务的优先级队列。数字越小,优先级越高。
  • -v <job>​: 显示指定at​任务的详细信息。
  • -c <job>​: 显示指定at​任务的命令。
  • -t <time>​: 指定任务的执行时间,格式为HH:MM​。
  • -d​: 删除所有当前用户的at​任务。

短命令

  1. atq: 等效at -q​命令。
  2. atrm: 等效at -r​命令。
  3. batch: 在系统资源较为空闲时执行一组任务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python 内置的一些数据结构
  • ISAC: Toward Dual-Functional Wireless Networks for 6G and Beyond【论文阅读笔记】
  • 02 Flask-快速上手
  • Docker中的容器内部无法使用vi命令怎么办?
  • 敏捷开发方法例题
  • 说一下解除docker限制内存警告
  • Java中的linkedList类及与ArrayList的异同
  • opencv彩色图像转灰度图原理
  • .net 获取某一天 在当月是 第几周 函数
  • 【go】pprof 性能分析
  • 什么是CPU、GPU、NPU?(包懂+会)
  • 为什么eBay的防IP关联很重要?
  • react | 自学笔记 | 持续更新
  • 深拷贝与数据扁平化封装打开即用
  • java --- 性能优化01
  • [deviceone开发]-do_Webview的基本示例
  • 10个最佳ES6特性 ES7与ES8的特性
  • gulp 教程
  • JavaScript 奇技淫巧
  • React的组件模式
  • 从输入URL到页面加载发生了什么
  • 判断客户端类型,Android,iOS,PC
  • 前端代码风格自动化系列(二)之Commitlint
  • 使用docker-compose进行多节点部署
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • !!Dom4j 学习笔记
  • #在 README.md 中生成项目目录结构
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (ZT)出版业改革:该死的死,该生的生
  • (苍穹外卖)day03菜品管理
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (原)本想说脏话,奈何已放下
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 表达式计算:Expression Evaluator
  • .NET 服务 ServiceController
  • .net 连接达梦数据库开发环境部署
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET成年了,然后呢?
  • .NET导入Excel数据
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET周刊【7月第4期 2024-07-28】
  • .考试倒计时43天!来提分啦!
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [20171102]视图v$session中process字段含义
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C++]模板与STL简介
  • [CF407E]k-d-sequence
  • [Design Pattern] 工厂方法模式
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [HUBUCTF 2022 新生赛]