Orange的运维学习日记–23.Linux计划任务详解

文章目录

  • Orange的运维学习日记--23.Linux计划任务详解
    • 一次性计划任务
      • atd 服务
      • at 命令
        • 基本语法
        • 交互式示例
        • 脚本文件示例
        • timespec 格式示例
      • 查看与管理任务
        • 查看当前队列
        • 查看任务详细内容
        • 删除任务
      • 用户权限控制
    • 用户周期性计划任务
      • 查看任务
      • 编辑任务
      • 删除任务
      • 管理其他用户任务
      • 从文件导入任务
    • 系统周期性计划任务
      • /etc/crontab
      • /etc/cron.d
      • /etc/anacrontab

一次性计划任务

一次性计划任务用于在未来某个时间点执行单个命令或脚本

atd 服务

Linux 系统通过 atd 后台进程提供一次性计划任务功能
安装 at 软件包

yum install at

启用 atd 服务并设置开机启动

systemctl enable --now atd
systemctl status atd

at 命令

at 命令从标准输入读取要执行的命令

基本语法
at <timespec>
交互式示例

在提示符下输入命令内容,完成后按 Ctrl+D

at now +5 minutes
echo hello world > /tmp/hello.log
<Ctrl+D>
job 1 at Wed Dec 21 17:09:00 2022
脚本文件示例
cat > myscript.sh << 'EOF'
#!/bin/bash
date >> /tmp/myscript.log
echo hello myscript >> /tmp/myscript.log
EOFat now +5 minutes < myscript.sh
job 2 at Wed Dec 21 17:10:00 2022at now +100 minutes -f myscript.sh
job 3 at Wed Dec 21 18:46:00 2022
timespec 格式示例
  • now +5 hours
  • teatime tomorrow
  • noon +4 days
  • 5 pm august 3 2016

详细定义见 /usr/share/doc/at/timespec

查看与管理任务

查看当前队列

使用 at -latq

at -l
1    Wed Dec 21 17:09:00 2022 a root
2    Wed Dec 21 17:10:00 2022 a root
3    Wed Dec 21 18:46:00 2022 a root

atd 提供 a–z 共 26 个队列,字母越靠后优先级越低
指定队列使用 -q

at -q b now +5 minutes < myscript.sh
job 4 at Wed Dec 21 17:11:00 2022at -l -q b
4    Wed Dec 21 17:11:00 2022 b root
查看任务详细内容

使用 at -c 作业号

at -c 3
...
${SHELL:-/bin/sh} << 'marcinDELIMITER4bf95eea'
#!/bin/bash
date >> /tmp/myscript.log
echo hello myscript >> /tmp/myscript.logmarcinDELIMITER4bf95eea
删除任务

使用 atrm 作业号at -d 作业号

atrm 3

用户权限控制

/etc/at.allow/etc/at.deny 管理用户访问 atd 服务

  • 存在 /etc/at.allow 时,仅允许文件中列出的用户使用 at
  • 不存在 /etc/at.allow 时,禁止 /etc/at.deny 中列出的用户使用 at

用户周期性计划任务

周期性任务通过 crond 后台进程执行,使用 crontab 命令管理
如果未重定向 stdout 和 stderr,crond 会将输出通过邮件发送给作业所有者

在这里插入图片描述

查看任务

crontab -l

编辑任务

crontab -e

编辑文件支持

  • 环境变量声明(name=value),常见变量有 SHELL、MAILTO、PATH
  • 空行和 # 注释
  • 每行定义一个任务,按六列顺序排列
    1 分钟
    2 小时
    3 日
    4 月
    5 星期几
    6 要执行的命令

字段格式

  • * 表示任意
  • x-y 表示范围
  • x,y 表示列表,可混合范围
  • */n 表示步长间隔
  • 月份和星期支持三字母缩写(Jan、Feb…Mon、Tue…)

示例

# 每年 2 月 2 日 9:00 执行备份
0 9 2 2 * /usr/local/bin/yearly_backup# 七月每周五 9:00-16:00 每 5 分钟发送 Chime
*/5 9-16 * Jul Fri echo "Chime"# 工作日 23:58 运行日报脚本
58 23 * * 1-5 /usr/local/bin/daily_report# 工作日 9:00 发送 Checkingin 邮件
0 9 * * 1-5 mutt -s "Checking in" boss@example.com % Hi boss just checking in

示例操作

export EDITOR=vim
crontab -e
*/2 2,3-23 * * * date >> /tmp/date.logtail -f /tmp/date.log
2022年12月21日星期三21:02:01CST
2022年12月21日星期三21:04:01CST

删除任务

crontab -r

管理其他用户任务

root 用户可使用 -u 参数

crontab -u laoma -l
crontab -u laoma -r

从文件导入任务

crontab mycron

系统周期性计划任务

系统管理员可在多处定义周期性作业,crond 会统一读取

读取顺序

  • /etc/crontab
  • /etc/cron.d/ 目录内所有文件
  • /etc/anacrontab

/etc/crontab

该文件格式与用户 crontab 类似,多一个用户字段指定执行账户

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# .---------------- 分钟 (0-59)
# |  .------------- 小时 (0-23)
# |  |  .---------- 日 (1-31)
# |  |  |  .------- 月 (1-12 或 Jan-Dec)
# |  |  |  |  .---- 星期几 (0-7 或 Sun-Sat)
# |  |  |  |  |
# *  *  *  *  * 用户   命令
01 4 * * * root /usr/local/bin/system_daily_job

/etc/cron.d

该目录用于存放自定义系统级 crontab 文件,避免 /etc/crontab 被更新覆盖
示例 /etc/cron.d/0hourly

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

run-parts 会按文件名排序依次执行 /etc/cron.hourly 下的所有脚本

/etc/anacrontab

anacron 确保在系统关机后仍能执行重要任务,anacrontab 同样由 crond 处理

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
RANDOM_DELAY=45
START_HOURS_RANGE=3-22# period(天)  delay(分钟)  job-identifier  command
1              5             cron.daily      nice run-parts /etc/cron.daily
7              25            cron.weekly     nice run-parts /etc/cron.weekly
@monthly       45            cron.monthly    nice run-parts /etc/cron.monthly

字段说明

  • period 定义周期天数,支持整数或宏(@daily、@weekly、@monthly)
  • delay 定义首次执行前的延迟分钟数
  • job-identifier 对应 /var/spool/anacron 中的状态文件名
  • command 要执行的命令

anacron 在系统启动后根据状态记录执行错过的任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91508.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91508.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91508.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)

目录 前言 一、系统准备 二、安装 MySQL 8.0.36 1. 查看可用版本 2.如果没有对应版本则需要手动下载mysql-apt-config&#xff08;有则跳过&#xff09; 2.1下图是mysql-apt-config各版本对应的mysql版本 2.2下载mysql apt repository 2.3安装 MySQL APT Repository 包 …

【LLM】讲清楚MLA原理

需要你对MHA、MQA、GQA有足够了解&#xff0c;相信本文能帮助你对MLA有新的认识。 本文内容都来自https://www.youtube.com/watch?v0VLAoVGf_74&#xff0c;如果阅读本文出现问题&#xff0c;建议直接去看一遍。 按照Deepseek设定一些参数值&#xff1a;输入token长度n10&…

谷歌采用 Ligero 构建其 ZK 技术栈

1. 引言 前序博客有&#xff1a; Ligero 和 Ligetron 中的 MPC 和 ZKLigetron&#xff1a;Nim Network开发的针对AI的zkVMLigetron&#xff1a;基于MPC-In-The-Head范式的zkVM简介 在隐私保护身份验证领域迈出重要一步&#xff0c;谷歌最近宣布 将零知识证明&#xff08;ZKP…

Flutter渲染引擎:Impeller和Skia

一、Impeller 渲染引擎的发布时间Impeller 是 Flutter 团队为解决 Skia 引擎在移动端&#xff08;尤其是 iOS 平台&#xff09;的性能问题而开发的全新渲染引擎&#xff0c;其发展历程如下&#xff1a;首次公开&#xff1a;2021 年 Google I/O 大会上首次提及&#xff0c;作为 …

网络编程-加密算法

目录 一.网络编程基础 1. 概述 2. IP地址 3. 域名 4. 网络模型 5. 常用协议 6. 小结 二.TCP编程 1. 什么是Socket&#xff1f; 2. 服务器端 3. 客户端 4. Socket流 5. 小结 三.UDP编程 1. 概述 2. 服务器端 3. 客户端 4. 小结 案例&#xff1a; 四.加密算法 …

【网络工程师软考版】网络安全

任何形式的网络服务都会导致安全方面的风险&#xff0c;问题是如何将风险降到最低程度&#xff0c;目前的网络安全措施有数据加密、数字签名、身份认证、防火墙、特征过滤等。所涉内容&#xff1a;1、网络安全基础2、加密技术与哈希算法3、数字签名4、数字证书5、VPN技术6、防火…

深入浅出设计模式——创建型模式之建造者模式 Builder

文章目录建造者模式简介建造者模式结构建造者模式代码实例定义产品类House定义建造者定义抽象建造者AbstractBuilder定义具体建造者定义指挥者客户端代码示例运行结果建造者模式总结代码仓库建一栋房子总共分几步&#xff1f;建造者模式告诉你答案&#xff01;“把大象装冰箱&a…

OpenVLA: 论文阅读 -- 开源视觉-语言-行动模型

更多内容&#xff1a;XiaoJ的知识星球 目录OpenVLA&#xff1a;开源视觉-语言-行动模型1. 介绍2. 相关工作1&#xff09;视觉条件语言模型&#xff08;Visually-Conditioned Language Models&#xff09;2&#xff09;通用型机器人策略&#xff08;Generalist Robot Policies&a…

JavaWeb(苍穹外卖)--学习笔记15(分页查询PageHelper)

前言 终于开始学习做项目了&#xff0c;本篇文章是学习B站黑马程序员苍穹外卖的学习笔记&#x1f4d1;。我的学习路线是Java基础语法-JavaWeb-做项目&#xff0c;管理端的功能学习完之后&#xff0c;就进入到了用户端微信小程序的开发&#xff0c;这篇文章来看看分页查询&#…

金融专题|某跨境支付机构:以榫卯企业云平台 VPC 功能保障业务主体安全

作者&#xff1a;SmartX 金融团队 金融机构在信息化建设时面临诸多数据合规要求&#xff0c;例如&#xff1a;不同业务区域之间互相隔离、数据库仅能由关联的应用服务器访问、仅有特定的服务器允许被外网访问等。对此&#xff0c;某跨境支付机构以 SmartX 榫卯企业云平台构建私…

Win10下python环境变量呼出微软应用商店

以下是三种彻底解决 Windows 10 的 CMD 中运行 python 命令弹出应用商店问题的方法​​方法一&#xff1a;调整环境变量优先级​-或者直接删除微软应用商店的环境变量%USERPROFILE%\AppData\Local\Microsoft\WindowsApp​​​操作步骤​​打开系统环境变量设置&#xff08;右键…

字节跳动“扣子”(Coze)开源:AI智能体生态的技术革命

&#xff08;以下借助 DeepSeek-R1 辅助整理&#xff09; 在2025年7月26日的深夜&#xff0c;GitHub上悄然出现的两个仓库——Coze Studio和Coze Loop&#xff0c;在48小时内狂揽超过9,000颗Star。字节跳动以Apache 2.0许可证将自家AI智能体平台的核心技术彻底开源。 “当所有人…

Camx-usecase ID和pipeline的匹配源码解读

组件关系整体流程&#xff1a;camxhal3.cpp:704 open()camxhal3.cpp:1423 configure_streams()chxextensionmodule.cpp:2810 InitializeOverrideSessionchxusecaseutils.cpp:850 GetMatchingUsecase()chxadvancedcamerausecase.cpp:4729 Initialize()chxadvancedcamerausecase.…

日志管理进入「对话式」时代:日志易MCP Server落地实录

01 背景&#xff1a;MCP协议介绍在AI蓬勃发展的当下&#xff0c;大型语言模型&#xff08;LLM&#xff09;虽展现出强大潜力&#xff0c;却受困于与外部资源连接的难题。数据分散、接口繁杂&#xff0c;致使AI模型难以灵活对接本地资源与远程服务&#xff0c;极大限制了其响应质…

django-3模型操作

from django.db import modelsclass Book(models.Model):title models.CharField(max_length200) # 书名author models.CharField(max_length100) # 作者publish_date models.DateField() # 出版日期price models.DecimalField(max_digits10, decimal_places2) # 价格s…

【绘制图像轮廓】——图像预处理(OpenCV)

目录 1 什么是轮廓 2 寻找轮廓 2.1 mode参数 2.2 method参数 3 绘制轮廓 1 什么是轮廓 轮廓是一系列相连的点组成的曲线&#xff0c;代表了物体的基本外形。轮廓是连续的&#xff0c;边缘不一定连续。轮廓是一个闭合的、封闭的形状。 轮廓的作用&#xff1a; 形状分析 目…

嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)

嵌入式 Linux 深度解析&#xff1a;架构、原理与工程实践&#xff08;增强版&#xff09; 目录嵌入式 Linux 深度解析&#xff1a;架构、原理与工程实践&#xff08;增强版&#xff09;第一章 嵌入式 Linux 基础概念1.1 定义与核心特征1.2 典型架构栈深度解析第二章 Linux 文件…

xcode swift项目运行、连接真机运行报错,引入文件夹失败

最近乱七八糟解决了很多报错&#xff0c;看着记录点吧 xcode版本&#xff1a;16 failed to emit precompiled header ‘/Users/yuqing/Library/Developer/Xcode/DerivedData/cloudspace-ios-ejldldcfhouqnretchuzoewmsqkg/Build/Intermediates.noindex/PrecompiledHeaders/spic…

[python][selenium] Web UI自动化8种页面元素定位方式

测试工程师必备&#xff01;Selenium自动化测试全攻略 | 手写POM框架数据驱动&#xff0c;轻松搞定UI自动化&#xff01;简单的加个前置知识&#xff1a; 第一&#xff1a;webdriver.Chrome()这句话&#xff0c;通过WebDriver的构造方法&#xff0c;拿到浏览器驱动的对象&…

丝杆支撑座在电子装配中的关键作用

丝杆支撑座是电子装配过程中不可或缺的组件&#xff0c;主要用于支撑和固定丝杆&#xff0c;确保其稳定性和精度。在高速、高精度装配场景中&#xff0c;丝杆支撑座的作用尤为突出。稳定性与精度保障&#xff1a;丝杆支撑座采用高品质钢材制作&#xff0c;具有高刚性和高强度&a…