RHCE的学习(1)

一、 Linux的例行性工作

场景:

  • 生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。

  • 在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。

  • 但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪女朋友(new一个也行)。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。

  • at 命令就是为这个需求而诞生的。使用 at 命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!

ps -aux    查看所有的已运行的进程信息

/mnt /sr0  (选择挂载目录)
mount | grep /dev/sr0 执行查看挂载位置
每次重启都要mount /dev/sr0 /mnt进行挂载,才能安装

本地自带的的包只在前两行

单一执行的例行性任务--at(一次性)

安装

  • at命令需要安装

[root@server ~]# yum  install  at  -y
[root@server ~]# at  -V   # 大写V
at version 3.2.2
  • 启动服务

[root@server ~]# systemctl start  atd
[root@server ~]# systemctl enable  --now  atd  # 设置开机启动
[root@server ~]# systemctl  status  atd  # 查看状态

at命令详解

格式
xxxxxxxxxx at  -参数   日期时间
参数
-m:当任务完成后,即使没有标准输出,也会给用户发送邮件
-l:列出系统上所有用户的at任务,等价于atq
-d:删除或取消一个任务
-v:使用时间格式,列出at任务
-c:可以列出任务之后的命令内容
-f:从文件中读取
-V 显示版本

at>Ctrl + d   结束
at>Ctrl + delete    删除内容

时间格式
参数说明
HH:MM在今天HH小时的MM分钟执行,若时间点错过,将在明天执行
HH:MM YYYY-MM-DD规定在某年某月的某一天的特殊时刻执行该工作
now +2 minutes从现在开始的minutes、hours、days、weeks执行
实验1
  • 延迟执行ls /root ,并将结果写入到at.txt中

[root@server ~]# at  14:17
warning: commands will be executed using /bin/sh
at> ls  /root  >  at.txt
at> <EOT>      # 点击ctrl+d 结束交互性界面

[root@server ~]# at  -l   # 查看已存在的计划任务
3	Thu May 25 14:17:00 2023 a root
[root@server ~]# atq      # 同上
3	Thu May 25 14:17:00 2023 a root
实验2
  • 不使用交互性命令实现,通过管道符命令执行

[root@server ~]# echo  "echo  'hello  again'  >>  at.txt" | at  now  +1  minute
注意
  • at命令只要指定的时间正确,就可以执行对应的命令

  • at命令的输出结果不会显示到屏幕上

  • at命令中执行的命令最好使用绝对路径,不容易报错

  • 过程:输入at 时间 -> 回车 ->输入执行的命令->ctrl+d退出at

  • at命令只会执行一次

at命令执行过程分析
  • 第一步:寻找/etc/at.allow (白名单)是否存在,写在该文件中用户才可执行at命令

  • 第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令

  • 第三步:若两个文件都不存在则只有root用户可以使用at命令

  • 注意:若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中

#at工作调度对应的系统服务
[root@localhost ~]# ps -ef | grep at   ps-ef用于查看全格式的全部进程,
#其中“ps”是在Linux中是查看进程的命令,“-e”参数代表显示所有进程,“-f”参数代表全格式
[root@localhost ~]# systemctl status atd
#at的工作文件存放目录
[root@localhost ~]# ll  /var/spool/at
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron
实验3
  • 设置某账户at命令不可用

[root@server ~]# useradd  ce1   # 新建账户
[root@server ~]# passwd  ce1    # 设置密码
更改用户 ce1 的密码 。
新的密码:                       # 654321
无效的密码: 密码少于 8 个字符
重新输入新的密码:                # 654321
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# tail  -1  /etc/passwd  # 倒叙查看账户管理文件
ce1:x:1001:1001::/home/ce1:/bin/bash
[root@server ~]# vim  /etc/at.deny   # 设置黑名单
ce1                                  # 输入

[root@server ~]# su  ce1             # 切换账户
[ce1@server root]$ cd  ~
[ce1@server ~]$ at  14:36         # 测试,at命令不可用
You do not have permission to use at.
[ce1@server ~]$ su  root         # 切换到root账户
密码: 
su: 拒绝权限

# 安全考虑,openEuler做了用户权限切换限制,解决方法如下:
# 重新开启一个ssh连接,以root账户登录
[root@server ~]# vim  /etc/pam.d/su # PAM(Pluggable Authentication Modules)
负责系统中很多应用程序的登录认证,安全设置问题

# 注释掉第21行:
# auth          required        pam_wheel.so use_uid

# 保存关闭后,切换到原ssh连接
[ce1@server ~]$ su  root
密码: 

Welcome to 5.10.0-153.12.0.92.oe2203sp2.x86_64

System information as of time: 	2023年 11月 15日 星期三 13:38:45 CST

System load: 	0.00
Processes: 	139
Memory used: 	9.8%
Swap used: 	0%
Usage On: 	7%
IP address: 	192.168.48.130
Users online: 	2

[root@server ce1]# cd  ~
[root@server ~]# 

循环执行的例行性任务--crontab(周期性)

crontd服务

  • at 命令是在指定的时间只能执行一次任务,crontab 命令可以循环重复的执行定时任务,与Windows 中的计划任务有些类似

  • crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的,若需要安装则执行如下命令:

[root@server ~]# yum  install  crontabs    # 安装,注意包名

[root@server ~]# systemctl status  crond   # 查看状态
  • crond 进程==每分钟==会定期检查是否有要执行的任务,如果有,则会自动执行该任务,crontab 命令需要 crond 服务支持

  • linux 任务调度的工作主要分为以下两类:

    • 系统执行的工作系统周期性所要执行的工作,如备份系统数据、清理缓存

    • 个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

crontab工作过程

  • 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高

  • 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令

  • crontab 执行的每一项工作都会被 记录到 /var/log/cron 这个日志文件中

  • 当用户使用 crontab 新建工作之后,该项工作就会被记录到 /var/spool/cron/目录里面

crontab命令详解

格式
crontab  [-u  user]  [-l| -r | -e]  
参数
参数解释示例
-llist 查看定时任务crontab -l
-eedit 编辑定时任务,建议手动编辑crontab -e
-i删除定时任务,提示用户确认删除,避免出错crontab -i
-r删除定时任务,移除/var/spool/cron/username文件crontab -r
-u user指定用户执行任务,root 可以管理普通用户计划任务crontab -u redhat -l

执行crontab 命令就是在修改 /var/spool/cron 中的定时任务文件。

#crontab工作调度对应的系统服务
[root@localhost ~]# systemctl status crond
#crontab工作的日志文件
[root@localhost ~]# ll /var/log/cron
#用户定义计划任务的文件所在目录
[root@localhost ~]# ll /var/spool/cron/

编辑crontab
  • 格式:

[root@server ~]# crontab  -e
  • 写入的命令格式:每一行书写一个工作,每个工作共有6个字段

代表意义分钟小时日期月份星期命令
数字范围0-590-231-311-120-7(0和7表示周日)执行的动作

每小时的n分钟   每天的n点  每月的n号  每年的n月   每周n

*/5 6-8 * 8 1  /bin/bash  /test.sh    建议命令都是用绝对路径写
特殊字符
特使字符含义
*任意时刻
-表示时间范围
,(逗号)分割时段
*/数字指定时间间隔的频率,如:每3分钟执行一次,*/3
时间含义
1 2 * * *每天凌晨2点零1分执行动作
0 17 * * 1每周一下午17点整执行动作
0 5 1,15 * *每月的1号和15号凌晨5点执行动作
40 4 * * 1-5每周1到周5的凌晨4点40分执行动作
*/10 4 * * *每天凌晨4点每隔10分钟执行动作
3,15 8-11 */2 * *每隔2天的上午8点到11点的第3分钟和第15分钟执行动作
* * * * *每个1分钟执行一次动作

注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。

实验4
  • 编写脚本test1.sh

[root@server ~]# vim  test1.sh

#!/bin/bash
while :
do
        echo  "this is my test sh"$(date)  >>  /root/cro.txt
        sleep  1
done
  • 设置循环周期性任务

[root@server ~]# crontab  -e
*/1 * * * *   sh   /root/test1.sh
  • 注意:crond服务是自动启动的,crontab命令只要保存退出后就会生效

  • 查看任务:

[root@server ~]# crontab  -l
*/1 * * * * sh  /root/test.sh
  • 删除任务

[root@server ~]# crontab  -r   # 删除
[root@server ~]# crontab  -l   # 查看列表
no crontab for root
  • 此实验还需终止循环进程

[root@server ~]# ps  -aux  |  grep  test1
[root@server ~]# kill  进程号
实验5
  • 让系统在每周1凌晨6点重启一次

[root@server ~]# crontab  -e
0 6 * * 1  /sbin/shutdown  -r now
实验6(了解)
  • 设置邮件发送告警功能,每1分钟发送一封邮件

  • qq邮箱设置:

  • 开启pop3/SMTP 服务:

  • 复制授权码:

  • 安装邮件服务

[root@server ~]# yum  install  mailx  -y
  • 配置邮件服务

[root@server ~]# vim  /etc/mail.rc
# 最后一行添加以下内容:
set  from=17674044@qq.com
set  smtp=smtp.qq.com
set  smtp-auth-user=17674044@qq.com
set  smtp-auth-password=do***cvqdubqbibj
set  smtp-auth=login

# 注意:该文件输入完毕有的系统需要强制保存退出,输入wq!
  • 测试邮件服务

[root@server ~]# echo  "主题"  |  mail  -s  "发送的信息"  17674044@qq.com
  • 设置定时任务

[root@server ~]# crontab  -e
MAILTO=17674044@qq.com

* * * * *   echo  "警告,SERVER服务器内存较低,速处理"  |  mail -v -s  "告警邮件"  17674044@qq.com  

书写定时任务的注意事项
  • 6 个字段都不能为空,如果不确定则使用*表示任意时间

  • crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别

  • 定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆

  • 在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用==绝对路径==,相对路径有时会报错

系统级别的计划任务

  • crond 服务除了会在工作时查看 /var/spool/cron 文件夹下的定时任务文件以外,还会查看 /etc/cron.d 目录。而在 /etc/anacrontab 文件里面存放每天、每周、每月需要执行的系统任务。

  • 可唤醒停机期间的工作任务

    • anacron 可以处理关机状态时未执行的计划任务,anacron不能指定何时执行某项任务,而是以天为单位或是在开机后立刻进入anacron的操作(/etc/anacrontab)。它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了

[root@server ~] # ls -l /etc/ | grep cron*
cron.d			# 系统定时任务
cron.daily		# 每天的任务
cront.deny		# 定时任务黑名单
cron.hourly		# 每小时执行的任务
cron.monthly	# 每月的定时任务
crontab			# 定义任务管理文件
cron.weekly		# 每周的定时任务
  • crontab -e 时每个用户都可以执行的命令,但有时定时任务必须由系统执行,此时就需要编辑/etc/crontab配置文件来实现

  • 主配置文件:

[root@server ~]# vim  /etc/crontab
  • 仅能通过root定义,不可以使用普通账户身份去执行计划任务

  • 方法:在/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
  • 分析

    • SHELL=/bin/bash : 指定系统使用那个shell解释器去执行

    • PATH=/sbin:/bin:/usr/sbin:/usr/bin : 系统执行命令的搜索路径

    • MAILTO=root : 表示执行任务的信息通过邮件发送给谁

    • user-name : 表示执行命令的用户是谁

  • 例1:编写脚本testcrontab.sh,将时间写入/t1.txt文件中,每周二11点循环执行

[root@server ~]# vim  testcrontab.sh
#!/bin/bash
date >> /t1.txt
[root@server ~]# vim  /etc/crontab
0 11 * * 2  root  /bin/bash  /root/testcrontab.sh
  • 例2:每天6:00点将日志/var/log/messages 文件备份到/backup目录中,备份后的日志文件名修改为logfileYYYY-MM-DD-HH:MM:SS

[root@server ~]# mkdir  /backup     # 新建目录

[root@server ~]# vim  /etc/crontab  # 编辑系统计划任务
0 6 * * *   root   /bin/cp  /var/log/messages /backup/logfile`date  +\%Y-\%m-\%d-\%H:\%M:\%S`

# 注意:可以使用* * * * * 进行测试
# 反引号`` 表示将引起的内容识别为命令
# 在crontab系统中%表示换行,需要增加转义符\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891640.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++进阶:map和set的使用

目录 一.序列式容器和关联式容器 二.set系列的使用 2.1set容器的介绍 2.2set的构造和迭代器 2.3set的增删查 2.4insert和迭代器遍历的样例 2.5find和erase的样例 ​编辑 2.6multiset和set的差异 2.7简单用set解决两道题 两个数组的交集 环形链表二 三.map系列的使用…

Android Framework AMS(04)startActivity分析-1(am启动到ActivityThread启动)

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读AMS通过startActivity启动Activity的整个流程的第一阶段&#xff1a;从am启动到ActivityThread启动。 第二阶段文章链接为&#xf…

FFmpeg的简单使用【Windows】--- 视频倒叙播放

实现功能 点击【选择文件】按钮可以选择视频&#xff0c;当点击【开始处理】按钮之后&#xff0c;会先将视频上传到服务器&#xff0c;然后开始进行视频倒叙播放的处理&#xff0c;当视频处理完毕之后会将输出的文件路径返回&#xff0c;同时在页面中将处理好的视频展示出来。…

SHELL脚本之重定向符号的使用。

一.shell脚本&#xff08;对应完成某一个功能的命令熟悉与否&#xff0c;决定着shell脚本的熟练与否。&#xff09; 一个shell脚本就是一个普通的文本文件。 作用&#xff1a;将重复执行的操作写成脚本&#xff0c;自动执行。 二.Linux操作系统中重定向符号的使用。 类型&a…

ESP32接入扣子(Coze) API使用自定义智能体

使用ESP32接入Coze API实现聊天机器人的教程 本示例将使用ESP32开发板通过WiFi接入 Coze API&#xff0c;实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题&#xff0c;ESP32将通过Coze API与智能体进行通信&#xff0c;并返回对应的回复。本文将详细介绍了如…

selenium有多个frame页时的操作方法(5)

之前文章我们提到&#xff0c;在webdriver.WebDriver类有一个switch_to方法&#xff0c;通过switch_to.frame()可以切换到不同的frame页然后才再定位某个元素做一些输入/点击等操作。 比如下面这个测试网站有2个frame页&#xff1a;http://www.sahitest.com/demo/framesTest.h…

wordpress 子比主题美化 四宫格 多宫格 布局插件

wordpress 主题美化 四宫格 多宫格 布局插件&#xff08;只在子比主题上测试过&#xff0c;其它主题没测试&#xff09; A5资源网四宫格布局插件是一个功能丰富的WordPress插件,专为创建自适应的四宫格布局而设计。这个插件具有以下主要特点: 灵活的布局: 支持1到8个宫格的自定…

如何设置 GitLab 密码长度?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 60天专业…

星海智算:【RVC】无需部署一键启动

镜像介绍 RVC全称 Retrieval-based-Voice-Conversion-WebUI 简称 RVC 一个基于VITS的简单易用的语音转换&#xff08;变声器&#xff09;框架 RVC 是一款前沿的音色替换项目&#xff0c;可以进行歌曲的翻唱&#xff0c;和实时的变声&#xff0c;具有低延迟、优秀的变声效果、…

【可答疑】基于51单片机的自动烘手器(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

C++ 算法学习——1.8 快速幂算法

背景知识&#xff1a; 1.位运算 在C中&#xff0c;位运算是对整数类型的位进行操作的一种运算方式。常见的位运算符包括按位与&#xff08;&&#xff09;、按位或&#xff08;|&#xff09;、按位异或&#xff08;^&#xff09;、取反&#xff08;~&#xff09;、左移&am…

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇

今天小编给大家介绍的是UI_Creator&#xff08;μgui&#xff09;平台下关于图像处理的选项。 UI_Creator&#xff08;μgui&#xff09;平台图片类控件有图像控件和分级图像控件&#xff0c;均包含以下选项&#xff1a; 1、消除水波纹&#xff1a; 由于16位真彩色&#xff08…

基础IO -- 理解文件(1)

目录 一&#xff1a;回顾文件 二&#xff1a;加深对文件的理解 1.概念 2.以w写方式打开 3.以a追加方式打开 4.重定向 一&#xff1a;回顾文件 以前学习过在C语言中的文件操作&#xff0c; 但那根本是不足以理解文件的&#xff0c;即站在语言角度是不可能理解文件的 我们要…

QT 中如何保存matlab 能打开的.mat数据矩阵!

Windows 上安装并使用 MATIO 库来保存 MATLAB 格式的 .mat 文件&#xff0c;需要进行以下步骤&#xff1a; 1. 下载并安装 CMake MATIO 使用 CMake 构建项目&#xff0c;因此你需要先安装 CMake。 前往 CMake 官网下载适用于 Windows 的安装程序并安装。 2. 下载 MATIO 库源…

说下SSL/TLS四次握手过程?

参考自&#xff1a;SSL/TLS四次握手过程是怎么样的&#xff1f;HTTPS、SSL、TLS三者之间的联系和区别 一.SSL/TLS 简介 SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层&#xff0c;用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。 SSL 是 HT…

AD报错failed to add class member\net

什么原因导致的我到现在还没弄懂&#xff0c;总之解决方法是在PCB端删除所有现有的并且可删除的nets与components。下次问题复现了再补充截图&#xff08;不想再遇到了球球了这种玄学问题&#xff09;。 网络截图&#xff1a; 解决步骤&#xff1a;设计->类 把可删除的网络…

西门子828d的plc一些信息记录

1、虽然是200的plc但是引入了DB的形式替代原来的V存储区。 2、用户自定义DB块范围&#xff0c;DB9000-DB9063,共64个DB块。 可用地址范围如上图 机床MCP483面板地址表&#xff0c;其它类型的面板地址自己在828d简明调试手册里查看。 如何上载828d的plc程序&#xff1a; 1.通…

coze bot开发的最小实践

一、coze专业版开通 网站地址&#xff1a;扣子专业版-火山引擎 开通流程&#xff1a; 1."立即使用" 扣子专业版 1.点击【立即使用】2.登录账号(上一步已登录可跳过) 2.进行实名认证后&#xff0c;开启【扣子专业版】&#xff08;已认证可跳过&#xff09; 1. 前…

Mysql行转列的写法

一、何为行转列&#xff1f; 在搞清楚这一概率之前&#xff0c;不妨来认识一下我们mysql表二维表结构数据&#xff0c;例如学生成绩表格&#xff0c;属性有学生姓名&#xff0c;学生科目&#xff0c;成绩&#xff0c;表结构如下&#xff1a; CREATE TABLE test_9 (id int(11) …

Android map 获取值

Android Map 获取值的完整指南 在Android开发中&#xff0c;使用Map&#xff08;映射&#xff09;来存储和检索数据是非常常见的需求。Map是一种键值对集合&#xff0c;能够快速而高效地根据特定的键获取值。在这篇文章中&#xff0c;我们将深入探讨如何在Android应用中使用Ma…