学完rh124,rh134和rh254就可以参加认证考试了。
这篇是rh124的部分
文章目录
第一章 访问命令行
1.1 登录Linux系统并运行简单命令
物理访问Linux的两种方式,一种是tty(终端);还有一种是console(控制端)。
Linux系统中还有一个虚拟终端( ctrl + Alt + F {1…6})的概念,可以让我们更好的访问Linux系统。
软件端访问Linux可以通过shell来执行命令和调用资源,bash shell(GNU Bourne-Again Shell)是许多Linux发行版本的默认shell。
shell的几种惯例:
1.2 在GNOME环境下启动应用
工作区切换 Ctrl+ Alt + 上下箭头
1.3 练习使用bash shell执行命令
几个简单的命令示例
date # 显示日期
passwd #修改密码
file # 查看文件类型
head # 从文件开头开始产看文件
tail #查看文件尾部的
wc ##行字符数
## 历史命令
history # 查看历史命令
!num 或者!str #查看history命令对应编号的运行回显
Esc + . # 快速补齐上条命令的参数
在bash命令行里面有一些快捷键可以让我们更加高效的使用shell
第二章 从命令行管理文件
2.1 Linux文件系统层次结构
位置 | 用途 |
---|---|
/usr | 安装的软件、共享的库,包括文件和静态只读程序数据。重要的子目录有: - /usr/bin: 用户命令 - /usr/sbin: 系统管理命令 - /usr/local: 本地自定义文件 |
/etc | 特定于此系统的配置文件 |
/var | 特定于此系统的可变数据,在系统启动之间保持有永久性。动态变化的文件(如数据库、缓存目录、日志文件、打印机后台处理文档和网站内容)。可以在 /var下找到。 |
/run | 自上一次系统启动以来启动的进程的运行时数据。这包括ID文件和锁定文件等等。此目录中的内容在重启时重新创建 |
/home | 普通用户存储其个人数据和配置文件的主目录。 |
/root | 超级管理员用户root的主目录。 |
/tmp | 供临时文件使用的全局科可写空间。10天内未访问、未更改或未修改的文件将自动从该目录中删除。还有一个临时目录 /var/tmp,该目录中的文件如果在30天内未曾访问、更改或修改过,将被自动删除。 |
/boot | 开始启动过程所需的文件 |
/dev | 包含特殊的设备文件,供系统用于访问硬件。 |
2.2 根据名称查找文件
搞清楚绝对路径和相对路径,以/
开头的都是绝对路径,没啥好说的。
2.3 使用命令行工具管理文件
目标: 能够在各种目录中创建、复制、链接、移动和删除文件与子目录。
## cp mv rm mkdir
cp file1 file2 file3 dir ## 一次复制多个文件到dir mv、rm同理
## 处理目录相关的操作一般加上-r参数
2.4 使用路径名扩展匹配文件
目标:使用元字符和扩展技巧来提高文件管理效率
- 文件通配
获取帮助
3.1获取本地帮助信息
man [-k] [-K] string
-k 关键字
3.2 获取在线帮助
root用户下输入sosreport可以生成一个tar .xz文件(tar -xvJf),可以用md5sum校验文件hash,cat读取文件内容
4 创建、查看、编辑文本文件
4.1 输出重定向到文件或者程序
标准输入、标准输出和标准错误
其他文件从信号3开始。
> file # 重定向stdout以覆盖文件
>> file # 重定向stdout以追加文件
2>file # 重定向stderr覆盖文件
2> /dev/null # /dev/null 黑洞
>file 2>&1 # stderr和stdout覆盖同一个文件, 同 & >file
>>file 2>&1 # stderr和stdout追加同一个文件, 同 & >>file
管道符
管道符将第一个命令的标准输出连接到下一个命令的标准输入
管道符和重定向命令都存在时,shell会优先处理管道内部的命令,如命令
ls > /tmp/saved-output | less
执行完不会有任何输出,因为ls的结果已经重定向到文件了,而不是从管道传输到下一个命令。
为了解决这个问题,可以使用tee命令,-i 覆盖方式写入文件,-a 追加形式写入文件
示例
ls -l |tee /tmp/saved-output |less
4.2 从shell提示符编辑文本文件
vim的使用,可以网上搜索详细教程
补偿被注意到的是命令模式下hjkl可以当成上下左右按键,o可以下下一行插入
4.3 图形编辑器编辑文本文件
gedit 的使用,没啥好记的
ctrl +o 打开文件
ctrl + n 新建文件
管理本地linux用户和组
5.1 用户和组
用户和组的配置文件为/etc/passwd和 /etc/group
id # 显示用户id和所属群体id
ps # 显示瞬时的动态 [常用参数 -aux]
newgrp # 切换所在用户组命令,登入另一个组
用户和组的关系可以1对一,一对多,多对一,多对多
5.2 获取超级用户访问权限
建议仅在需要的时候切换超级用户
su命令直接切换到其他使用者身份,su username启动non-loginshell,不会切换到对应使用者家目录。sudo命令要求用户在/etc/sudoers中配置过,sudo是输入当前用户密码,保证了root密码的安全。
5.3 管理本地linux用户和账户组
useradd # 添加用户
usermod # 可以用来修改用户账号修改
userdel # 不加选项仅删除用户,不删除相关文件,一般加上 -r参数同时删除用户相关所有文件
passwd # 设置密码,root可以修改所有用户的密码
uid
5.4 管理本地组账号
groupadd [-g gid] [-r 系统组] groupname
groupmod [-g gid] [-n name]
groupdel # 会修改/etc/group和/etc/gshadow,当前组为某个用户主要组则不能删除,需要先修改用户组
5.5 管理用户和密码
chage # changeage 修改密码期限
# 例 chage -m 0 -M 90 -W 7 -l 14 student 修改student账户最小密码期限0天,最大期限90天,到 # 期前7天提醒换密码,延长14天
usermod -L -U username # 锁定用户或者解锁用户
usermod -s /sbin/nologin username # 通过nologinshell限制用户登陆,但不限制资源访问
6 利用linux 文件系统权限控制系统权限
6.1 Linux 文件权限系统
rwx 读,写,执行。搞清kogn楚属主,属组和other即可,很基础
6.2 从命令行管理文件系统权限
chmod [u,g,o,a] [+,-,=][r,w,x] filename # 改变文件权限。也可如chmod 755 filename, -R递归目录
chown [-R] user:group file/dir # 更改属主属组
chgrp [-R] group filename # 更改文件属组
6.3 管理默认权限和文件访问
管理特殊权限和默认umask,linux有三种特殊权限
设置特殊权限示例
chmod u+s filename
chmod 2750 filename # 这里是setgid,setuid=4, setgid=2, sticky=1
redhat默认文件权限666,目录权限777,umask用来设置限制新建文件权限的掩码,新文件创建时,其最初的权限由文件创建掩码决定,每次用户注册进入系统,umask命令都会被执行,可以通过umask修改权限,如umask 007,新创建的文件权限other组的rwx权限就全部拿掉了。
文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
永久更改umask通过在.bashrc文件后加umask命令或者直接通过root用户修改/etc/bashrc和/etc/profile配置文件。
7 监控和管理linux 进程
7.1 进程
进程的状态可以分为running,sleep,zombie等
systemd是所有linux进程的父进程。
ps [aux][lax][-ef] #列出当前系统的进程状态
方括号里面的进程通常是内核进程,ps只显示一次,top可以持续观察进程
7.2 控制作业
会话(session)可以理解成终端(terminal)
作业(job)可以理解成一条命令或命令集合,可能是进程组,包含管道符
jobs
fg %1
bg %1
ctrl+z ctrl+c
7.3 中断进程
可以通过前台发送信号去中止进程,ctrl+c,ctrl+z,ctrl+/ 等
kill -l # 列出常用信号
killall [-signal] [-u] comman_pattern# 使用进程名称来杀死进程,可以杀死一组同名进程
pkill [-signal][-U][-G][-P][-t] command_pattern #使用进程的名称来杀死进程,类似killall
以管理员身份注销用户(pkill)
w # 可以查看当前登陆系统的用户,以及累计活动
pstree # 可以查看父子关系利用父进程去终止进程
下图是利用杀死进程来注销用户
7.4 监控进程活动
负载均衡值:linux内核以负载数(活动系统资源请求的cpu累计数)的指数移动平局数计算负载平均值指标,,计算结果表示为系统过去1分钟、5分钟、15分钟内运行进程队列的平均进程数量
cat /proc/loadavg
0.00 0.01 0.05 2/199 30259
top # 类似windows进程管理
uptime
w #登陆用户数
一般负载均衡值小于1说明资源利用比较合理,大于一说明有资源等待。
8 控制服务和守护进程
8.1 识别自动启动的系统进程
能够列出systemd服务和套接字字单元启动的系统守护进程和网络服务
systemd单元
systemctl -t help可以列出systemd可用单元。重点是service
systemclt status servicename.service # 查看服务状态
systemctl list-units --type=service # 列出servcie服务单元
systemctl status sshd # 查看特定服务
systemclt is-enabled sshd # 查看一个服务是否开机自启动
8.2 控制系统服务
能够通过systemctl控制系统守护进程和网络服务
单元依赖项
9 配置和保护openssh
9.1 使用ssh访问远程命令行
ssh remotehostname # 以当前用户登录
ssh root@remotehostname # 以root登录
ssh root@remotehostname command # 远程运行单条指令
9.2 配置ssh密钥的身份认证
ssh免密登录
ssh-keygen # 生成公私钥
ssh-copy-id root@remotehost # 把公钥加到要免密登录的机器上
9.3 自定义ssh服务配置
ssh配置文件放在/etc/ssh/sshd_config
# 禁止root用户登录
PermitRootLogin no
# 仅允许root用户通过密钥的身份认证
PermitRootLogin without-passwd
# 禁止密码登录,只能通过密钥登录
PassWordAuthentication no
需要重启ssh服务才能配置生效
10 分析和存储日志
10.1 日志系统架构及日志系统文件
systemd-journald 守护进程提供一种改进的日志管理服务
rsyslog服务是syslog加强版。将他们写入到/var/log目录的永久文件
/var/log/messages # 日志,系统,其他
/var/log/secure # 身份验证,安全相关
/var/log/maillog # 跟邮件和mail有关的日志
/var/log/cron # 计划任务相关的,系统时间
/var/log/boot.log # 系统启动过程中产生的日志文件
系统日志优先级,分级和详情可以慢慢参考帮助手册
man 5 rsyslog.conf
10.2 查看日志系统文件
配置文件/etc/rsyslog.conf,各个五日至文件位置在####RULES###
字段下面配置
日志文件轮转(logratate)防止/var/log中文件系统填满。通常结合cron来做。
tail -f 日志文件 # 显示最后10条并滚动显示,f = follow
logger -p user.notice hello # 发送日志 p= priority,通常用来测试rsyslog配置的正确性
10.3 查看systemd日志条目
journalctl查找事件
systemd日志将日志数据存储在带有索引的结构化二进制文件中,不能直接文本编辑器读取,要用journalctl查看
注意每次重启会清除systemd日志
journalctl -o verbose 显示日志详细信息
10.4 保存systemd日志
可以配置systemd-journald将日志存在磁盘而不是内存,默认systemd日志存在/run/log/journal中,永久保留的日志放在/var/log/journal中。同时支持日志轮转机制,每月清除.
mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2775 /var/log/journal
reboot # 或者以root身份将特殊信号USR1发送到systemd-journal进程
journalctl -b -1 # 查看系统上次启动systemd日志
10.5 保持系统时间准确
对于多个系统间分析日志,时间同步非常重要
timedatectl # 显示当前的时间相关的系统设置
timedatectl list-timezones # 列出可用时区
timedatectl set-timezone # 设置时区
timedatectl set-time "2021-06-18 15:00:00" # 设置时间
timedatectl set-ntp true/false #设置ntp开关
配置和监控chronyd
chronyd服务通过与配置的ntp服务器同步是通常不精确的本地硬件时钟(rtc保持准确)
11 管理红帽企业linux网络
11.1 网络概念
四层网络模型和osi模型
11.2 验证网络配置
ip addr show eth0 # 显示ip地址
ip -s link show eth0 # 看eth0 连接状态
ip route
ping -c3 172.25.0.253 # c3表示发送三个数据包
tracepath #链路跟踪
端口和服务
常用端口名称和服务在/etc/services里面列出
ss和nestat
ss -ta # display all tcp socket
netstat -ta
11.3 使用nmcli配置网络
NetworkManager是监控和管理网络设置的守护进程,网络配置的配置文件目录为/etc/sysconfig/network-scripts
11.4 编辑网路配置文件
配置文件存储位置 /etc/sysconfig/network-scripts/ifcfg-
配置完成后可以通过重启机器reboot或者通过重新加载连接使配置生效
nmcli con reload
nmcli con down "ID"
nmcli con up "ID"
## 重连网络一条一条输入的话可能会造成连不上主机,谨慎操作,确认配置正确还是reboot安全一些
11.5 配置主机名和名称解释
hostname # 同cat /etc/hostname
hostnamectl set-hostname # 设置静态主机名
hostnamectl status
配置主机名解析/etc/hosts
getent hosts hostname # 测试hosts文件主机解析
如果一个主机名在hosts文件中没有找到,系统会去解析/etc/resolvs.conf。一般通过直接修改文件修改,也可通过networkmanager去更新配置文件
nmcli con mod ID ipv4.dns IP # ID是网络接口配置
nmcli con mod ID +ipv4.dns IP # 添加配置
host [hostname] # 测试dns连接
12 归档文件并在系统间复制文件
12.1 管理压缩tar存档
tar支持gzip,bzip2,xz的方式压缩或者解缩
用法可以参考
https://www.runoob.com/linux/linux-comm-tar.html
12.2 在系统间安全地复制文件
scp
scp file1 file2 root@server2:/root/ # 复制file1和file2 到远程/root目录下
scp -r root@server2:/var/log /tmp # -r
sftp 缺点在于不能传输文件夹
sftp [user@]host ##通过push ,get去下载或同步文件
12.3 在系统间安全的同步文件
rsync
rsync -nav /var/log /tmp # n参数 执行空运行,模拟操作不做更改。确保文件不被覆盖或删除
rsync -av /var/log /tmp # 复制目录到目标目录
rysnc -av /var/log/ /tmp # 复制目录下文件到目标目录
安装和更新软件包
13.1 RPM软件包和yum
rpm
yum 是rpm包管理器,可以自动处理依赖关系,yum配置文件/etc/yum.conf。 yum存储库/etc/yum.repos.d/*
cat /etc/yum.repos.d/xxx.repo #查看配置 gpgcheck=0表示不校验gpgkey,baseurl,name, enabled等
yum repolist # 仓库列表
yum list all |less # 获取已经安装的软件包
13.2 使用yum管理软件更新
yum help
yum list all httpd
yum info httpd
yum search keyword
yum provides /var/www/html
yum whatprovides # 反查询命令在什么包中。
yum provides # 反查询文件在什么包中。
yum install httpd -y # install httpd, assume yes
yum update
yum remove httpd
yum组
查看历史操作记录
所有安装日志放在/var/log/yum.log
yum history # yum安装历史
yum history undo 3 # undo 数字为3的安装
13.3 启用yum软件存储库
yum repolist all # 当前yum启用情况
yum-config-manager -enable "repo name" # 启用或者禁止yum仓库
yum-config-manager -add-repo="http://xxxxx" # 或者在/etc/yum.repos.d/新建文件
# 存储库的rpm配置软件包
rpm -import http://xxxxxx
yum localinstall http://xxxx/xxx.rpm
13.4 检查rpm软件包文件
rpm使用程序可以从本地数据库或包文件本身获取软件包文件和已安装软件包的内容相关信息
rpm -q -a # 查询所有已安装软件包
rpm -q pkgname # 当前安装pkgname
rpm -q -p pkgfile.rpm
rpm -q -f filename # 等同于yum provides,查询文件由那个软件包提供
使用yum安装本地软件包文件
yum localinstall # 同rpm -ivh *.rpm, 用yum可以保留yumhistory
# 从rpm软件包提取文件
rpm2cpio xxx.rpm|cpio -id "*txt" # 提取软件包中txt后缀的文件
14 访问linux 文件系统
14.1 识别文件系统和设备
挂载mount,卸载umount,挂载点/mnt/
分区, 块设备
ll /dev/sda #
逻辑卷管理(LVM)
物理存储介质,物理卷,卷组,逻辑卷
df -h # 看分区
du -h # 目录
14.2 挂载和卸载文件系统
手动挂载文件系统
需要root用户才可以mount
blkid # 查看块设备uuid
mkdir /mnt/mydata
mount /dev/vda1 /mnt/mydata/ #挂载
blkid /dev/vdb1/ # 查看
mount uuid="xxxxxxx-xxxxxxx-xxxxxxx-xxxx" /mnt/mydata
默认手动挂载到目录/mnt
用作挂载的目录如果原来有文件,挂载后原文件不可访问,卸载之后才可以访问原文件
卸载可通过
umount /mnt/mydata # umount [挂载点]
lsof /mnt/mydata # 查看当前什么进程正在使用挂载点
如果挂载点正在由某进程使用无法卸载,可以通过lsof命令对相应进程处理后再尝试
usb闪存插入后可在图形化界面自动挂载,挂载点为/run/media//
14.3 制作文件间的连接
硬连接和软链接可以参考https://www.jianshu.com/p/dde6a01c4094
硬链接
ln file1 /tmp/file2 # 为file1创建硬链接
ls -li file1 /tmp/file2 #查看两个文件,innode值和属性是一样的,共用存储空间
rm -f file1 # 删除file1
cat /tmp/file2 # 删除file1后硬链接file2还是不受影响的
#硬链接只能链接文件,不能是目录
软链接相当于windows快捷方式
ln -s file1 /tmp/file2
ls -l /tmp/fiel #文件属性是lrwxrwxrwx这种
rm -f file1
cat /tmp/file2 # 删除file1之后file2会变成死链接
#目录可以创建软链接
14.4 查找系统中文件
locate命令根据locate数据库中的文件名或路径搜索结果
locate -i # 不区分大小写
locate -n 5 # 返回结果数量,如这里输出5个
# locate数据库会通过定时任务每天自动更新,root用户可以通过updatedb命令更新数据库
find在文件系统实时搜索
find / -name # 按照文件名搜索,支持通配符
find / -iname # 不区分大小写
find / -user student -group mail -perm 777 -size [10k,+10k,-10k,M,G] -type [f,d,l,b] -links [+1 链接数] #可用其他属性删选
15 使用虚拟化
15.1 管理本地虚拟机主机
KVM kernalbased virtual machine
libvirt软件包提供了管理虚拟机功能,管理虚拟机可以通过图形化界面virtual-manager
命令行工具virsh
15.2 安装新的虚拟机
主要是virtual-manager的使用,图形化操作。略
rh134
1 使用kickstart自动安装
可以参考 https://blog.csdn.net/mpu_nice/article/details/107922312
没有环境实践,学习的意义是在需要的时候知道有这样一个功能
1.1 定义Anaconda Kickstart系统
1.2 创建和编辑kickstart文件
system-config-kickstar &
调取配置的图形化工具,按照步骤操作即可。
或者通过文本文件编辑配置文件。
可以通过ksvalidator检查kickstart配置文件是否正确。如果正确则不返回任何结果。
1.3 使用kickstart部署新的虚拟系统
创建配置文件----------> 配置文件发送到安装程序----------> anaconda 指向配置文件安装系统
2 通过grep使用正则表达式
2.1 正则表达式的基础
2.2 使用grep 匹配文本
grep(global search regular expression and print out the line)打印匹配的正则
grep -i 'cat$' file # 不区分大小写
ps aux | grep '^student' # 管道符传参
### grep 常用参数
-v # 反选,打印不包含的行
-r # 递归匹配正则表达式的数据搜索应用到一组文件或目录中
-A <Number> # 显示正则匹配项之后的行数
-B <Number> # 显示正则匹配项之前的行数
-e # 使用多个-e选项可以提供多个正则表达式,并将与逻辑or一起使用
grep -e 'cat' -e 'dog' file -A 1 # 显示包含cat或dog的行及其后面一行
3 使用vim创建和编辑文件
命令模式下hjkl 可以上下左右移动光标,^ 移动到行首,$ 移动到结尾,gg到文档第一行,G 移动到文档最后一行。
命令行模式 :help可以获取帮助文档。shell环境下可以使用vmtutor查看教程