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

LINUX——例行性工作

 单一执行的例行性工作

仅处理一次的工作,可用于在特定时间执行工作

  1. at命令的工作过程

    • at命令使用时的权限控制:通过两个文件/etc/at.allow/etc/at.deny来控制哪些用户可以使用at命令。如果这两个文件都不存在,那么只有root用户可以使用at命令。
    • at命令对应的系统服务atd的状态,通过systemctl status atd命令可以查看。
    • at命令的工作文件存放目录为/var/spool/at
    • at命令的工作日志文件位于/var/log/cron
  2. at命令详解

    • at命令的格式:at [参数] [时间]
    • at命令的一些常用参数:
      • -m:当任务完成之后,即使没有标准输出,也会给用户发送邮件。
      • -l(或atq):列出当前用户的所有at调度任务。
      • -d(或atrm):取消一个在at调度中的工作。
      • -v:使用较明显的时间格式,列出at调度中的任务列表。
      • -c:列出后面接的该项工作的实际命令内容。
      • -f:从文件中读取作业。
    • 时间格式的设置,例如HH:MM,表示在今天的HH小时MM分钟执行任务,如果这个时间点已经过了,则明天执行。(now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks)

循环执行的例行性工作

在预定的时间中执行任务,可设定为周期或特定时间

Crontab的工作过程:

  1. Cron守护进程:Cron是一个系统服务,通常称为cron守护进程。它负责检查crontab文件,并根据文件中的指令执行任务。

  2. Crontab文件:用户的crontab文件通常位于/var/spool/cron/目录下,每个用户都有自己的crontab文件。这些文件包含了要执行的命令和它们的执行时间。

  3. 权限控制:Linux系统通过两个文件/etc/cron.allow/etc/cron.deny来控制哪些用户可以使用crontab。如果cron.allow存在,则只有列在该文件中的用户才能使用crontab。如果cron.allow不存在而cron.deny存在,则列在cron.deny中的用户不能使用crontab。如果两个文件都不存在,则只有root用户可以使用crontab。

  4. 日志文件:Cron作业的执行通常会被记录在系统日志中,如/var/log/syslog/var/log/cron

  5. crontab工作调度对应的系统服务:通过systemctl status crond命令可以查看。

Crontab命令详解:(crontab --help)

  • crontab -e:编辑当前用户的crontab文件。
  • crontab -l:列出当前用户的crontab文件内容。
  • crontab -r:删除当前用户的crontab文件。
  • crontab -u [user]:指定要编辑、列出或删除的用户的crontab文件。

系统的计划任务:

Linux系统中的计划任务通常分为两类:

  1. 用户的计划任务:这些是由单个用户创建和维护的,使用crontab命令来管理。每个用户都可以有自己的crontab文件,用于安排自己的任务。

  2. 系统的计划任务:这些任务通常由系统管理员设置,用于执行系统级别的维护工作。这些任务的定义通常位于以下几个目录中:

    • /etc/crontab:这个文件包含了系统级别的crontab条目。
    • /etc/cron.d/:这个目录包含了额外的crontab文件,用于定义系统级别的任务。
    • /etc/cron.hourly//etc/cron.daily//etc/cron.weekly//etc/cron.monthly/:这些目录分别包含了每小时、每天、每周和每月执行的脚本。

Crontab计划任务的时间格式:

crontab时间格式中的五个字段,分别是分钟、小时、日、月和星期几。每个字段都有其有效范围,例如:

  • 分钟(分):0-59
  • 小时(时):0-23
  • 日(日):1-31
  • 月(月):1-12
  • 星期几(周):0-7(0或7代表周日)

[root@localhost ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR

sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

Crontab计划任务的时间格式中的特殊符号:

在crontab时间格式中使用的特殊符号及其含义:

  • 星号(*):代表任何时刻。例如,如果分钟字段是星号,则表示每分钟。
  • 逗号(,):用于分隔时段。例如,如果小时字段是"1,3,5",则表示在1点、3点和5点执行任务。
  • 连字符(-):用于表示一段时间范围。例如,如果日字段是"1-10",则表示在每月的1日至10日执行任务。
  • 斜杠(/数字):用于指定时间的间隔频率。例如,如果分钟字段是"*/15",则表示每15分钟执行一次任务。

使用crontab安排日常任务的示例:

安排一个简单的日常任务。在这个示例中,任务是在每天早上9点整执行一个wall命令,向所有登录的用户发送消息"good morning"。

  1. 使用crontab -e命令编辑当前用户的crontab文件。
  2. 在crontab文件中添加以下行:09 * * * * wall "good morning"。这行代码表示在每天的9点整执行wall命令,发送消息"good morning"。

注意事项:

%在crontab中有特殊含义。如果需要在命令中使用%,需要进行转义。

使用run-parts执行多个脚本:

run-parts命令,这是一个非常有用的工具,用于执行目录中的所有可执行文件。当你需要在同一时间执行多个脚本时,可以将这些脚本放在一个目录下,然后在crontab中添加一个条目来使用run-parts执行这个目录。

例如,如果你有一个目录/etc/cron.daily/,其中包含了多个每日执行的脚本,你可以在crontab中添加以下行:

07 04 * * * root run-parts /etc/cron.daily

这行代码表示每天早上4点07分,以root用户的身份执行/etc/cron.daily/目录中的所有脚本。

http://www.xdnf.cn/news/4201.html

相关文章:

  • 私有仓库 Harbor、GitLab
  • K8S使用--dry-run输出资源模版和兼容性测试
  • Django缓存框架API
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 如何添加或删除极狐GitLab 项目成员?
  • JPress安装(Docker)
  • 如何在使用 docker-compose 命令时指定 COMPOSE_PROJECT_NAME ?
  • 概统期末复习--速成
  • 区块链交易所开发:开启数字交易新时代
  • TypeScript简介
  • LeetCode 热题 100 198. 打家劫舍
  • 【机器学习-线性回归-6】机器学习中的维度:从特征工程到降维艺术
  • Missashe考研日记-day33
  • 数字政府大模型应用方案
  • MySQL 8.4.5 源码编译安装指南
  • 国联股份卫多多与国术科技签署战略合作协议
  • 使用OpenCV 和Dlib 实现表情识别
  • AI量化解析:从暴跌5%到飙涨3%—非线性动力学模型重构黄金极端波动预测框架
  • 人工智能如何革新数据可视化领域?探索未来趋势
  • 调用七牛云对象存储,附工具类
  • 多层PCB板的地层分割技巧有哪些?
  • Pytorch 的模型保存
  • 数据结构(一)——线性表的顺序表示和实现
  • k8s术语之service
  • k8s pod request/limit 值不带单位会发生什么?
  • 浅谈 - GPTQ为啥按列量化
  • NGINX `ngx_http_browser_module` 深度解析与实战
  • 螺杆支撑座:数控机床高效稳定运行的关键支撑
  • MYSQL的DDL语言和单表查询
  • 完全免费的PDF电子发票批量辅助打印工具