RHCE--复习(一)之系统延迟任务及定时任务

news/2024/9/18 12:24:52/ 标签: linux, 服务器, 运维

系统延迟任务及定时任务

  #关闭图形命令(第二次开启的时候)[root@localhost ~]# systemctl set-default multi-user.target#windos系统级别类型  0-6个级别#查看级别类型[root@localhost ~]# runlevel 

一、延迟任务

  • 在系统中我们的维护工作大多数时在服务器行对闲置时进行

  • 我们需要用延迟任务来解决自动进行的一次性的维护

  • 延迟任务时一次性的,不会重复执行

  • 当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者

  • 在RHEL9中默认系统中的所有普通用户都可以发起延时任务

1.1延迟任务的发起

在系统中我们可以使用at命令来发起延迟任务 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中at 任务信息存放在系统中/var/spool/at目录中at 任务的日志文件被存放到/var/log/cron中at 任务执行时如果遇到系统处于关闭状态,那么在开启时atd任务会检测未执行的任务并且立即执行 延迟任务发起方法如下:

环境搭建

#发起延迟任务
[root@rhce-fuxi ~]# at now+2min
warning: commands will be executed using /bin/sh
at> rm -fr /mnt/easylee/*  #输入延迟任务
at> <EOT>               # ctrl+d 启动延迟任务
job 1 at Wed Sep 11 21:39:00 2024
[root@rhce-fuxi ~]#

1.2 at命令参数

  • at 命令执行格式为 at 参数

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

  • -l atg的别名,可列出目前系统上面的所有该用户的at调度

  • -d atrm的别名,可以取消一个在at调度中的工作

  • -v 使用较明显的时间格式,列出qt调度中的任务列表

  • -c 可以列出后面接的该项工作的实际命令内容

  • -f 从文件中读取作作业

#安装邮件服务和邮件服务客户端
[root@rhce-fuxi ~]# dnf install postfix s-nail-14.9.22-6.el9.x86_64 -y
#启动
[root@rhce-fuxi ~]# systemctl enable --now postfix.service
#发送邮件和查看邮件

1.3 at 命令的时间表示方法

  • HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行。

  • HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作

  • now+2 minutes 从现在开始几分钟minutes,hours, days, or weeks

1.4 at非交互方式执行

[root@rhce-fuxi mnt]# vim test.sh
[root@rhce-fuxi mnt]# sh test.sh
warning: commands will be executed using /bin/sh
job 6 at Wed Sep 11 22:12:00 2024
[root@rhce-fuxi mnt]# at -l
6       Wed Sep 11 22:12:00 2024 a root
[root@rhce-fuxi mnt]# at -c 6

1.5 延迟任务的黑白名单

超级用户可以执行at,普通用户默认情况可以执行

[root@rhce-fuxi mnt]# useradd user1
您在 /var/spool/mail/root 中有新邮件
[root@rhce-fuxi mnt]# useradd user2
[root@rhce-fuxi mnt]# su - user1
[user1@rhce-fuxi ~]# at now+1min
warning: commands will be executed using /bin/sh
at> <EOT>
job 7 at Wed Sep 11 22:14:00 2024
[user1@rhce-fuxi ~]#

缺乏安全性,解决方法如下,限制用户的执行

[user1@rhce-fuxi mnt]# man at.deny

#用户黑名单
[root@rhce-fuxi mnt]# vim /etc/at.deny
[root@rhce-fuxi mnt]# cat /etc/at.deny
user1
[root@rhce-fuxi mnt]##此时user1写不了
[user1@rhce-fuxi ~]$ at now+1min
You do not have permission to use at.
[user1@rhce-fuxi ~]$#有白名单后 ,user2不能执行
[root@rhce-fuxi mnt]# touch /etc/at.allow
[root@rhce-fuxi mnt]# cat /etc/at.allow
[root@rhce-fuxi mnt]#[user2@rhce-fuxi ~]$ at now+1min
You do not have permission to use at.
[user2@rhce-fuxi ~]$#把user1写入白名单
[root@rhce-fuxi mnt]# vim /etc/at.allow
[root@rhce-fuxi mnt]# cat /etc/at.allow
user1
[root@rhce-fuxi mnt]# su - user1
[user1@rhce-fuxi ~]$ at now+1min
warning: commands will be executed using /bin/sh
at> <EOT>
job 10 at Wed Sep 11 22:43:00 2024
[user1@rhce-fuxi ~]$ exit
注销
[root@rhce-fuxi mnt]# su - user2
[user2@rhce-fuxi ~]$ at now+1min
You do not have permission to use at.
[user2@rhce-fuxi ~]$

二、定时任务

使用服务 crond.service

2.1.定时任务介绍

  • 和延迟任务类似,我们可以用crontab来解决自动进行的周期性的维护

  • 定时任务类似手机闹钟,会重复执行

  • 当定时任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者。

  • 在RHEL9中默认系统中的所有普通用户都可以发起定时任务

2.2定时任务的发起

  • 在系统中我们可以使用crontab命令来发起用户级定时

  • 任务在系统中/etc/cronfilename是系统级定时任务,只有root用户可以发起。

  • 定时任务执行是调用的是crond服务,即使系统最小化安装crond也会被安装到系统中

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

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

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

2.3发起用户级周期行任务

[root@rhce-fuxi ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@rhce-fuxi ~]# crontab -l
* * * * * rm -fr /mnt/test.sh
[root@rhce-fuxi ~]#
#  * * * * *   对应  分  时  天  月  周
#在创建后面也会删除
[root@rhce-fuxi ~]# touch /mnt/test.sh

2.4定时任务的时间表示

#查看时间表示
[root@rhce-fuxi ~]# man 5 crontabminute         0-59hour           0-23day of month   1-31month          1-12 (or names, see below)day of week    0-7 (0 or 7 is Sunday, or use names)* * * * *    每分钟
*/2 * * * *  每两分钟
*/2 09,17 * * *  9点和下午5点每两分钟执行一次
*/2 09-17 * * *  9点 到下午5点每两分钟执行一次
*/2 09-17 10,15 * *  每月10号和每月15号早上9点到下午5点每两分钟执行一次
*/2 09-17 10,15 3 *  3月10号和3月15号早上9点到下午5点每两分钟执行一次
*/2 09-17 10,15 3 5   3月的每个周五、 3月的10号和3月15号早上9点到下午5点每两分钟执行一次

2.5用户级定时任务的发起

  1. 周期任务发起方式 crontab命令的执行格式为: crontab-u用户-e

  1. crontab命令参数如下

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

  • file: file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab

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

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

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

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

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

  • 文件格式为:分 时 天 月 周 执行动作 1111 * * * echo hello #每天11点11分执行echo hello 命令

    时间表达方式

#参数演示#发起并指定
[root@rhce-fuxi mnt]# crontab -u user1 -e
no crontab for user1 - using an empty one
crontab: installing new crontab
[root@rhce-fuxi mnt]# ls -l /var/spool/cron/user1
-rw------- 1 root root 15  9月 13 14:30 /var/spool/cron/user1
[root@rhce-fuxi mnt]#[root@rhce-fuxi mnt]# crontab  -l -u user1
* * * * * date[root@rhce-fuxi mnt]# crontab -r -i -u user1
crontab: really delete user1's crontab?

 

2.6 发起系统级别的周期任务

系统级别crontab目录详解

2.7定时任务执行优化

  • 定时任务在执行时首先会查看执行者是否名单中

  • 系统中默认只存在黑名单/etc/cron.deny,写入此文件中的用户会被禁止使用定时任务。

  • 在系统中可以手动建立白名单/etc/cron.allow,当此文件出现黑名单不会被检测

  • 白名单出现只有root用户和白名单用户可以执行定时任务

  • 如果系统中没有黑白名单那么只有root用户可以执行任务

  • 黑白名单为用户列表,每个用户一行

  • 黑白名单只针对用户级定时任务进行限制

[root@rhce-fuxi ~]# ll /etc/cron.deny
-rw-r--r--. 1 root root 0 11月 30  2023 /etc/cron.deny
[root@rhce-fuxi ~]# ll /etc/cron.allow[root@rhce-fuxi ~]# vim /etc/cron.deny
[root@rhce-fuxi ~]# cat /etc/cron.deny
user1[root@rhce-fuxi ~]# su - user1
[user1@rhce-fuxi ~]$ crontab -e
You (user1) are not allowed to use this program (crontab)
See crontab(1) for more information
[user1@rhce-fuxi ~]$#创建白名单
[root@rhce-fuxi ~]# touch /etc/cron.allow
[root@rhce-fuxi ~]# cat /etc/cron.allow
[root@rhce-fuxi ~]#此时普通用户都不可以[root@rhce-fuxi ~]# echo user1 > /etc/cron.allow
[root@rhce-fuxi ~]#[user1@rhce-fuxi ~]$ crontab -l
* * * * * date
[user1@rhce-fuxi ~]$#超级用户可以使用,无权限限制
[root@rhce-fuxi ~]# crontab -u user2 -e#限制超级用户的
[root@rhce-fuxi mnt]# chattr +i easylee/
[root@rhce-fuxi mnt]# ls
!  easylee  hgfs
[root@rhce-fuxi mnt]# rm -fr easylee/
rm: 无法删除 'easylee/': 不允许的操作
[root@rhce-fuxi mnt]##查看
[root@rhce-fuxi mnt]# lsattr -d easylee/
----i----------------- easylee/
[root@rhce-fuxi mnt]# chattr -i easylee/


http://www.ppmy.cn/news/1524921.html

相关文章

MySQL定长窗口SQL

SQL 定长窗口&#xff08;Sliding Window&#xff09;是一种使用窗口函数来处理一段固定范围内的数据。这种方式可以对一定范围内的数据进行聚合或分析&#xff0c;并且窗口会随着数据的行逐步滑动。 在 SQL 中&#xff0c;窗口函数常与 OVER() 子句一起使用&#xff0c;定义一…

Swift 创建扩展(Extension)

类别(Category) 和 扩展(Extension) 的 用法很多. 常用的 扩展(Extension) 有分离代码和封装模块的功能,例如登陆页面有注册功能,有登陆功能,有找回密码功能,都写在一个页面就太冗余了,可以考虑使用 扩展(Extension) 登陆页面的方法来分离代码 本文介绍Swift 如何创建扩展(Ex…

Linux cut命令详解使用:掌握高效文本切割

cut 是 Linux 中一个用于从文本文件或标准输入中提取指定字段的命令。它根据分隔符或者字符位置来裁剪文本&#xff0c;是处理文本文件中的字段、列和子字符串的常用工具。 基本语法 cut [选项] 文件或 命令 | cut [选项]常用选项 -b&#xff1a;按字节位置切割&#xff08…

HTML+CSS箭头闪动

HTML+CSS实现箭头闪动,效果如下: 代码如下: <div class="design_ani_item"><div class="arrow"><em></em></div><div class="arrow"><em></em></div><div class="arrow"…

text-overflow:ellipsis 不生效的情况解决办法

<swiper :autoplay"true" :interval"3000" :duration"1000" circular vertical><swiper-item v-for"item in 4">文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字…

Jmeter_循环获取请求接口的字段,并写入文件

通过JSON提取器、计数器、beanshell&#xff0c;循环读取邮箱接口的返回字段&#xff0c;筛选出flag为3的收件人&#xff0c;并写入csv文件。 1、调用接口&#xff0c;获取所有的邮件$.data.total.count&#xff1b; 2、beanshell后置处理total转换成页码&#xff0c;这里是227…

Android 进程间通信

在 Android 中&#xff0c;进程间通信 (IPC, Inter-Process Communication) 是指在不同进程之间进行数据交换的机制。Android 提供了几种主要的 IPC 方法&#xff0c;每种方法适用于不同的场景。 1. Binder 机制 Binder 是 Android 核心的 IPC 机制&#xff0c;底层是通过操作…

联蔚盘云再获发明专利授权—多云环境下云资源自动化运维的方法与设备

上海联蔚盘云科技有限公司荣获了一项重要的发明专利——“多云环境下云资源自动化运维的方法与设备”&#xff08;专利授权号&#xff1a;CN 112667468 B&#xff09;。该专利旨在解决企业在多云环境下云资源管理和自动化运维的难题&#xff0c;标志着公司在云计算技术领域取得…

Facebook Marketplace:防封与出单策略

Facebook Marketplace为用户提供一个在本地交易商品的平台&#xff0c;包括二手商品、房屋出租和家政服务等都可以在上面检索到相关信息。据数据统计&#xff0c;每月约有4亿人使用Facebook Marketplace功能&#xff0c;潜力巨大&#xff0c;为商家提供了广阔的商机。然而&…

Java集成开发环境(IDE)之 => “IntelliJ IDEA“ 安装

一、软件介绍 IntelliJ IDEA 是一款由 JetBrains 公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它主要用于 Java 语言的开发&#xff0c;但同时也支持多种其他编程语言&#xff0c;如 Kotlin、Groovy、Scala、Python、Ruby、PHP、JavaScript、TypeScript 等…

Linux创建虚拟磁盘并分区格式化

快速创建一个虚拟磁盘 你可以通过以下步骤在Linux上虚拟一个磁盘&#xff0c;并将其挂载到 /mnt/ 目录下&#xff1a; 步骤 1: 创建一个虚拟磁盘文件 使用 dd 命令创建一个虚拟磁盘文件&#xff08;例如大小为1GB&#xff09;&#xff1a; dd if/dev/zero of/root/virtual_…

算力服务器和GPU服务器的区别是什么?

随着互联网科技的快速发展&#xff0c;服务器的类型也变得多种多样了&#xff0c;今天小编就来为大家介绍一下算力服务器和GPU服务器还有他们之间的区别是什么&#xff1f; 算力服务器通常是指具有着较高计算能力的服务器&#xff0c;算力服务器一般都是用于处理大量的计算任务…

MFC工控项目实例之十二板卡测试信号输出界面

承接专栏《MFC工控项目实例之十一板卡测试信号输入界面》 1、在BoardTest.h文件中添加代码 CButtonST m_btnStart[16],m_btnStart_O[16];2、在BoardTest.cpp文件中添加代码 UINT No_IDC_CHECK_O[16] {IDC_CHECK16,IDC_CHECK17,IDC_CHECK18,IDC_CHECK19,IDC_CHECK20,IDC_CH…

Android-10分区存储介绍及百度APP适配实践(1)

1.2 应用数据保护: 添加外部存储应用私有目录文件访问限制&#xff0c; 应用即使申请了存储权限也不能访问其他应用外部存储私有目录文件 1.3 用户数据保护&#xff1a; 添加pdf、office、doc等文件的访问限制&#xff0c;用户即使申请了存储权限也不能访问其他应用创建的pd…

好用的 Markdown 编辑器组件

ByteMD bytedance/bytemd: ByteMD v1 repository (github.com) 这里由于我的项目是 Next&#xff0c;所以安装 bytemd/react&#xff0c; 阅读官方文档&#xff0c;执行命令来安装编辑器主体、以及 gfm&#xff08;表格支持&#xff09;插件、highlight 代码高亮插件&#xf…

Nacos1.X中对NacosNamingService的实现

NacosNamingService Nacos Client包中的NamingService实现类为NacosNamingService&#xff0c;通过封装好的SDK供用户使用&#xff0c;来调用nacos对外暴露的OpenAPI SDK方式只是提供了一种访问的封装&#xff0c;在底层仍然是基于HTTP协议完成请求的。 NamingService提供了…

CleanClip for mac(苹果电脑剪切板管理器)

CleanClip 是一款为 Mac 设计的强大剪贴板管理工具&#xff0c;它能够显著提升你的工作效率和生产力。无论是在日常办公中还是进行创意设计&#xff0c;CleanClip 都能帮助你更轻松地管理和使用剪贴板内容。让我们一起来探索一下这个功能丰富的软件吧&#xff01; 下载地址&am…

快手视频怎么去水印保存到手机?

在这个信息爆炸的时代&#xff0c;短视频已成为我们日常生活中不可或缺的一部分。而作为国内知名的短视频平台&#xff0c;快手凭借其庞大的用户群体和海量的优质内容&#xff0c;成为了很多人娱乐、学习甚至工作的主要来源。但是有时候&#xff0c;我们会发现&#xff0c;想要…

Minio笔记-Centos搭建Minio

下载 Minio wget https://dl.min.io/server/minio/release/linux-amd64/minio 赋予执行权限 chmod x minio 创建存储目录 mkdir /data 运行 Minio ./minio server /data 默认端口为9000 访问 Minio 控制台&#xff1a;在浏览器中输入 http://your-server-ip:9000 默认…

通过 Sniper Links 提高您的电子邮件确认率

通过使用狙击链接重定向用户到只显示确认邮件的收件箱搜索&#xff0c;GrowthDesign 将他们的邮件确认率提高了 12%&#xff0c;从而增加了数千个已完成的注册。 目录 简要概述营销策略是什么&#xff1f;结果如何&#xff1f;如何实施为什么有效&#xff1f;获取更多类似策略…