RHCE 一、OpenEuler22.03安装部署及例行性任务
- 一、网络服务
- 1.准备工作
- 2、RHEL9操作系统的安装部署
- 3、配置并优化OpenEuler22.03
- 4、网络配置
- 实验:修改网络配置
- 二、例行性工作
- 1、 单一执行的例行性任务:at(一次性)
- at命令详解
- 2、循环执行的例行性工作:crontab(周期性)
- 实验1:编写脚本test.sh并执行
- 实验2:设置邮件报警及例行性发送功能
- 三、书写定时任务的注意事项
- 四、系统级别的计划任务
RHCE
一、网络服务
1.准备工作
先下载vmware workstation pro软件,下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html(红帽虚拟机安装链接)
-
第一步:文件菜单->新建虚拟机->典型->下一步
-
第二步:稍后安装操作系统
-
第三步:选择操作系统类型,由于我们使用的是OpenEuler22.03 LTS SP2,使用Linux5.10内核,则选择如下:
-
第四步:命名虚拟机
-
第五步:设置磁盘空间,根据虚拟机安装要求设置,如下:
设置32G,动态空间申请,设置为单个文件
-
第六步:自定义硬件,设置硬件参数
- 第七步:设置自定义硬件
- 内存:推荐2GB
- 处理器:1颗、2核心
- 新CD/DVD:适应ISO映像文件,点击浏览按钮,选择之前下载好的openEuler-22.03-LTS-SP2-x86_64-dvd.iso镜像文件
- 网络适配器:选择NAT模式
- 显示器:去掉"加速3D图形“的对钩
- 最终:
- 选择关闭、完成
2、RHEL9操作系统的安装部署
- 使用鼠标点击黑色界面进入OpenEuler22.03系统,通过ctrl+alt可以释放鼠标焦点回到Windows
- 通过键盘方向键选择第一项Install openEuler 22.03-LTS-SP2 选项进行安装系统
- 选择语言:中文或英文
- - 安装信息摘要设置
- 安装目的地:显示安装位置,一般为硬盘,点击自定义分区进行分区
- /boot:系统启动分区,推荐500M或1GB
- swap:交换分区,4G
- /:根分区,期望容量省略,表示将剩余空间全部分配
- 方法:点击下图的加号,设置挂载点及期望容量(重复多次),点击完成,点击接收更改
- 网络和主机名:打开网卡连接
- root账户密码设置:密码为OPENlab123
- 创建用户:创建一个普通账户fox,设置密码:OPENlab123
- 重启系统
3、配置并优化OpenEuler22.03
-
登录
- 账户:root
- 密码:OPENlab123
-
xshell7建立连接
-
关闭防火墙及SELinux
[root@localhost ~]# vi /etc/selinux/config
[root@localhost ~]# systemctl stop firewalld # 关闭防火墙
[root@localhost ~]# systemctl disable firewalld # 取消开机启动
- 修改主机名
[root@localhost ~]# hostnamectl set-hostname server # server为主机名
[root@server ~]# reboot # 重启
- 修改root密码
[root@server ~]# passwd root
更改用户 root 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
- 查看yum源
[root@server ~]# cat /etc/yum.repos.d/openEuler.repo
[root@server yum.repos.d]# yum makecache # 制作缓存
- 查看网卡配置文件
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
- 下载所需软件
[root@server ~]# yum install vim make gcc tree net-tools tar -y
- 测试
[root@server ~]# cat /etc/os-release # 查看系统信息
[root@server ~]# lscpu # 查看cpu信息
[root@server ~]# free -m # 查看内存信息
[root@server ~]# fdisk -l # 查看磁盘信息
[root@server ~]# top # 查看进程信息
[root@server ~]# ping -c 2 www.qq.com
- 制作快照:虚拟机菜单->快照->拍摄快照->命名为“初始”->拍摄
- 使用虚拟机进行克隆,命名为node1,启动后后需要更改主机名,重启生效,重新制作node1的快照
4、网络配置
可视化配置
格式
[root@server ~]# nmtui
实验:修改网络配置
- 例:为当前网卡增加一个IP地址
nmcli命令
格式:
[root@server ~]# nmcli --help
用法:nmcli [选项] 对象 { 命令 | help }
查看网卡信息:
[root@server ~]# nmcli c show
NAME UUID TYPE DEVICE
ens32 bed6c767-610c-49c3-8bd1-2b892132e17d ethernet ens32
[root@server ~]# nmcli c show 网卡名 # 查看网卡详细信息,点q退出
[root ~]# nmcli dev status #查看已有设备的状态
DEVICE TYPE STATE CONNECTION
ens32 ethernet 已连接 ens32
lo loopback 未托管 --
[root ~]# nmcli dev show #查看所有硬件设备状态
GENERAL.DEVICE: ens32
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:63:8C:4C
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
GENERAL.CONNECTION: ens32
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: 开
IP4.ADDRESS[1]: 192.168.110.135/24
IP4.GATEWAY: 192.168.110.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.110.2, mt = 100
IP4.ROUTE[2]: dst = 192.168.110.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[3]: dst = 192.168.110.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 192.168.110.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::20c:29ff:fe63:8c4c/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10(未托管)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ::1/128, nh = ::, mt = 256
激活网卡和关闭连接
[root ~]# nmcli c up 网卡名
[root ~]# nmcli c down 网卡名 # 停用连接
添加网络连接
[root ~]# nmcli c add type ethernet ifname ensens32 con-name ens33 autoconnect yes ip4 192.168.48.135/24 gw4 192.168.48.2
[root ~]# nmcli c up ens161 # 激活
[root ~]# nmcli c show
- 命令解释
- 关键字:nmcli c add type
- 网络类型:ethernet
- 现有网卡名:ifname ens32
- 新网络名称:con-name ens33
- 开启自动连接:autoconnect yes
- 新连接的IP地址与网关地址:ip4 192.168.48.135/24 gw4 192.168.48.2
修改网络连接
- 例:通过ens32连接设置静态ip地址:
[root ~]# nmcli c mod ens32 ipv4.method manual ipv4.addresses '192.168.110.134/24' ipv4.gateway '192.168.110.2' ipv4.dns '114.114.114.114'
[root ~]# nmcli c up ens32 #激活
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root ~]# ip a #查看结果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:63:8c:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.110.134/24 brd 192.168.110.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe63:8c4c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
-
ipv4.method manual :手动获取(静态)
-
通过配置文件查看和编辑:
[root ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens32
UUID=b50354dd-8e11-4494-9072-a152ea6b0783
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.48.130
PREFIX=24
GATEWAY=192.168.48.2
DNS1=114.114.114.114
删除网络连接
[root ~]# nmcli c show # 查看网络连接
[root ~]# nmcli c del ens32 # 删除
[root ~]# nmcli c show # 再次查看
- 以上做完之后需要恢复快照
二、例行性工作
场景:
-
生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。
-
在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。
-
但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪女朋友。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。
-
at
命令就是为这个需求而诞生的。使用at
命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!
1、 单一执行的例行性任务:at(一次性)
- at命令需要安装
[root ~]# yum install at -y
[root ~]# at -V # 大写V
at version 3.2.2
- 启动服务
[root ~]# systemctl start atd
[root ~]# systemctl enable --now atd # 设置开机启动
[root ~]# systemctl status atd # 查看状态
at命令详解
格式
at -参数 日期时间
参数
-m:当任务完成后,即使没有标准输出,也会给用户发送邮件
-l:列出系统上所有用户的at任务,等价于atq
-d:删除或取消一个任务
-v:使用时间格式,列出at任务
-c:可以列出任务之后的命令内容
-f:从文件中读取
时间格式
参数 | 说明 |
---|---|
HH:MM | 在今天HH小时的MM分钟执行,若时间点错过,将在明天执行 |
HH:MM YYYY-MM-DD | 规定在某年某月的某一天的特殊时刻执行该工作 |
now +2 minutes | 从现在开始的minutes、hours、days、weeks执行 |
实验1
- 延迟执行ls /root ,并将结果写入到at.txt中
[root ~]# at 14:17
warning: commands will be executed using /bin/sh
at> ls /root > at.txt
at> <EOT> # 点击ctrl+d 结束交互性界面
[root ~]# at -l # 查看已存在的计划任务
3 Thu May 25 14:17:00 2023 a root
[root ~]# atq # 同上
3 Thu May 25 14:17:00 2023 a root
实验2
- 不使用交互性命令实现,通过管道符命令执行
[root ~]# 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中
实验3
- 设置某账户at命令不可用
[root ~]# useradd ce1 # 新建账户
[root ~]# passwd ce1 # 设置密码
更改用户 ce1 的密码 。
新的密码: # 654321
无效的密码: 密码少于 8 个字符
重新输入新的密码: # 654321
passwd:所有的身份验证令牌已经成功更新。
[root ~]# tail -1 /etc/passwd # 倒叙查看账户管理文件
ce1:x:1001:1001::/home/ce1:/bin/bash
[root ~]# vim /etc/at.deny # 设置黑名单
ce1 # 输入
[root ~]# su ce1 # 切换账户
[ce1 root]$ cd ~
[ce1 ~]$ at 14:36 # 测试,at命令不可用
You do not have permission to use at.
[ce1 ~]$ su root # 切换到root账户
密码:
su: 拒绝权限
# 安全考虑,openEuler做了用户权限切换限制,解决方法如下:
# 重新开启一个ssh连接,以root账户登录
[root ~]# vim /etc/pam.d/su # PAM(Pluggable Authentication Modules)负责系统中很多应用程序的登录认证,安全设置问题
# 注释掉第21行:
# auth required pam_wheel.so use_uid
# 保存关闭后,切换到原ssh连接
[ce1 ~]$ 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 ce1]# cd ~
[root ~]#
2、循环执行的例行性工作:crontab(周期性)
crontd服务
at
命令是在指定的时间只能执行一次任务,crontab
命令可以循环重复的执行定时任务,与Windows 中的计划任务有些类似- crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的,若需要安装则执行如下命令:
[root ~]# yum install crontabs # 安装,注意包名
[root ~]# 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]
参数
参数 | 说明 |
---|---|
-u | 只有root才能执行该任务 |
-e | 编辑crontab工作内容 |
-l | 查询crontab任务内容 |
-r | 删除cronatb任务 |
编辑crontab
- 格式:
[root ~]# crontab -e
写入的命令格式:每一行书写一个工作,每个工作共有6个字段
代表意义 | 分钟 | 小时 | 日期 | 月份 | 星期 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7(0和7表示周日) | 执行的动作 |
*/5 6-8 * 8 1 /bin/bash /test.sh
特殊字符
特使字符 | 含义 |
---|---|
* | 任意时刻 |
- | 表示时间范围 |
,(逗号) | 分割时段 |
*/数字 | 指定时间间隔的频率,如:每3分钟执行一次,*/3 |
实验1:编写脚本test.sh并执行
[root ~]# vim test1.sh
#!/bin/bash
while :
do
echo "this is my test sh"$(date) >> /root/cro.txt
sleep 1
done
- 设置循环周期性任务
[root ~]# crontab -e
*/1 * * * * sh /root/test1.sh
- 注意:crond服务是自动启动的,crontab命令只要保存退出后就会生效
- 查看任务:
[root ~]# crontab -l
*/1 * * * * sh /root/test.sh
- 删除任务
[root ~]# crontab -r # 删除
[root ~]# crontab -l # 查看列表
no crontab for root
- 此实验还需终止循环进程
xxxxxxxxxx [root ~]# ps -aux | grep test1[root ~]# kill 进程号
实验2:设置邮件报警及例行性发送功能
- 设置邮件发送告警功能,每1分钟发送一封邮件
- qq邮箱设置:
开启pop3/SMTP 服务:
复制授权码:
安装邮件服务
[root ~]# yum install mailx -y
配置邮件服务
[root ~]# vim /etc/mail.rc
# 最后一行添加以下内容:
set from=17674044.com
set smtp=smtp.qq.com
set smtp-auth-user=17674044.com
set smtp-auth-password=do***cvqdubqbibj
set smtp-auth=login
# 注意:该文件输入完毕有的系统需要强制保存退出,输入wq!
测试邮件服务
[root ~]# echo "testmail" | mail -s "testmail" 17674044.com
设置定时任务
[root ~]# crontab -e
MAILTO=17674044.com
* * * * * echo "警告,SERVER服务器内存较低,速处理" | mail -v -s "告警邮件" 17674044.com
三、书写定时任务的注意事项
- 6 个字段都不能为空,如果不确定则使用*表示任意时间
- crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别
- 定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆
- 在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错
四、系统级别的计划任务
- crontab -e 时每个用户都可以执行的命令,但有时定时任务必须由系统执行,此时就需要编辑/etc/crontab配置文件来实现
- 主配置文件:
xxxxxxxxxx [root ~]# 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 ~]# vim testcrontab.sh
#!/bin/bash
date >> /t1.txt
[root ~]# vim /etc/crontabvim /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 ~]# mkdir /backup # 新建目录
[root ~]# vim /etc/crontab # 编辑系统计划任务
0 6 * * * root /bin/cp /var/log/messages /backup/logfile`date +\%Y-\%m-\%d-\%H:\%M:\%S`
# 注意:可以使用* * * * * 进行测试
# 反引号`` 表示将引起的内容识别为命令
# 在crontab系统中%表示换行,需要增加转义符\