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

Linux系统如何完成系统周期化任务

1.系统周期化任务也称系统的延迟任务及定时任务:系统的维护工作大多数在服务器闲置时进行,利用延迟任务解决一次性维护,延迟任务的输出以邮件形式发送至发起者。

2.使用at命令发起延迟任务(调用atd服务,即使系统最小化安装atd任务也会被安装到系统中)首先要确保该系统的atd服务有没有开启,才可进行该任务。

atd是系统延时任务的守护进程

at 任务信息存放在系统中/var/spool/at 目录中;at 任务的日志文件被存放在/var/logcron中;at 任务执行时如果遇到系统处于关闭状态,那么在开启时atd任务会检测未执行的任务并且立即执行。

at延迟任务书写格式

at + 时间

touch + 目录+文件

ctrl+d 退出任务书写

 

at + -l ---查看任务列表

at + -c + 任务号 ---查看任务内容

at + -r + 任务号 ---删除任务

 at命令可分两种模式进行延迟任务,交互模式与非交互模式,以上为交互模式,而非交互模式在文件中进行书写任务,格式要求。

vim at.sh 进入改延迟任务书写文件

at + 延迟时间  <<EOF

touch + 任务

EOF

date

 

以邮件形式接收和进行延迟任务,首先下载一个软件仓库,在rhel9的目录中挂载,vim rhel9.repo的文件中设置AppStream和BaseOS,寻找该程序名称,并下载程序,开启程序systemctl enable --now + 程序名称,后可以确保能够接收并从查看邮件形式的延迟任务。

at命令参数:

-m 当任务完成之后,即使没有标准输出,也将给用户发送邮件

-l 列出系统上面的用户的所有at调度任务

-d 取消at调度的任务

-v 使用较明显的时间格式

-c 列出后面接的该项工作的命令内容

-f 从文件中读取作业

3.延迟任务的安全优化:at任务在执行之前会查看执行者是否在该名单里;黑名单为/etc/at.deny,写入该文件中的用户会被禁止使用at任务;白名单/etc/at.allow,该文件出现黑名单不会被检测,而白名单只有里面存在的用户和root用户才能执行at命令;

4.定时任务:用crontab来解决自动进行的周期性的维护;重复执行;当定时任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者

在系统中使用crontab命令发起用户级定时任务;

/etc/cron/filename是系统级定时任务,root用户才能发起;

定时任务调用crond服务;

定时任务信息存放在系统中/var/spool/cron目录中,存放文件和发起人名称一致;

定时任务的日志文件被存放到/var/log/cron中;

定时任务执行时如果遇到系统处于关闭状态,那么在开启时crond任务会检测未执行的任务并立即执行 

man 5 crontab 查看crontab里的服务

用户级周期性任务

crontab -u 用户名 -e  ---crontab命令的执行格式

-u :用来设定某个用户的crontab服务此参数一般有root用户来运行

-e :编辑某个用户的crontab文件内容,如果不指定用户,则编辑当前用户的crontab文件

-l :显示某个用户的crontab文件内容,如果不指定用户,则显示当前用户的crontab文件

-r :从/var/spool/cron目录中删除某个用户的crontab文件

-i :在删除用户的crontab文件时给予确认提示

crontab在设定定时任务时会以vi命令打开临时文件,保存时把内容同步到/var/spool/cron中

 

 用户级的周期性任务在var/spool/cron/的目录中;而系统级的周期性任务在/etc/cron.

 系统级别crontab目录

/etc/cron.d  ---系统自定义周期任务

/etc/cron.daily  ---每天周期任务

/etc/cron.hourly  ---每小时周期任务

/etc/cron.monthly  ---每月周期任务

/etc/cron.weekly  ---每周周期任务

 5.定时任务执行优化:首先查看执行者是否在名单中;系统中默认只存在黑名单/etc/cron.deny,写入文件中的用户会被禁止使用定时任务;白名单/etc/cron.allow,文件出现黑名单不会被检测。

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

相关文章:

  • 什么是 Redis?
  • 定长滑动窗口(基础)
  • 【Mytais系列】核心工作流程
  • C++类_移动构造函数
  • <init-param>和<load-on-startup>的作用
  • 重新构想E-E-A-T:提升销售与搜索可见性的SEO策略
  • 如何优化MySQL主从复制的性能?
  • 【电路笔记】-自耦变压器
  • c++ 函数参数传递
  • 推理能力:五一模型大放送
  • 硬件零基础入门(尚硅谷)
  • JavaScript中的AES加密与解密:原理、代码与实战
  • Day04 新增套餐
  • 双指针算法详解(含力扣和蓝桥杯例题)
  • 王道考研数据结构课后题代码题(2026版)——排序部分
  • 第5章 Python 基本数据类型详解(int, float, bool, str)
  • 融智学16字方针无歧义表述并构建人机协同的非零和博弈模型
  • systemd-notify(linux服务状态通知消息)
  • 视频编解码学习一之相关学科
  • Java框架“若依RuoYi”前后端分离部署
  • 2025年最新嵌入式开发STM32单片机详细教程(更新中)
  • GTS-400 系列运动控制器板(十四)----软限位使用
  • 多元随机变量协方差矩阵
  • 62常用控件_QDial的使用
  • Learning vtkjs之PolyDataNormals
  • Spring MVC注解式控制器开发
  • 计算方法实验五 插值多项式的求法
  • java 洛谷题单【算法2-2】常见优化技巧
  • 纯Java实现STDIO通信的MCP Server与客户端验证
  • 【Java】2025 年 Java 学习路线:从入门到精通