Linux学习记录

第一周 

第1天-行业介绍和计算机基础
第2天-Linux基本操作和帮助
第3天-文件管理和IO重定向
第4天-用户权限和文本工具

1.Linux基础

1.1vmware安装

准备好vm15.5的安装包,以管理员身份运行安装文件。安装完成后将虚拟网络编辑器按下图设置好方便后面使用

1.2.Rokey8.6和ubuntu2204安装

安装包地址Rokey8.6 ubuntu2204
 

  准备好以上两个系统镜像,左上角  文件--新建虚拟机--自定义,后续参数设置为:centos 8 处理器2 内存2G 使用NAT 200G磁盘(将文件储存为单个文件)。

安装完成后启动虚拟机,在第一个选项回车

后续根据需要设置时区,用户。

1.3 使用Xshell远程登录

安装好Xshell后,左上角 文件----打开 如图自定义连接名称和输出主机IP

或者直接用命令行

ssh root@10.0.0.150

1.4虚拟机快照

定期创建快照有利于对系统文件的保护

2.帮助

2.1如何使用帮助

使用man+命令;info+命令来查看命令的说明手册 

man cp
info cat

使用Q退出

使用--help查看命令帮助(因为有-h:对人类友好,所以不要简写)

id --help

3.文件系统基本知识和常用操作

3.1文件系统结构

3.2文件系统常用命令

pwd 打印当前路径

cd 切换目录

ls 列出文档名称

history 查看历史命令

touch创建文件

mv 移动

cp 复制(复制为覆盖操作,记得备份)

rename 重命名

rm 删除

mkdir创建目录

rmdir创建目录

>覆盖写入

>>追加写入

3.3Linux安全模型

Authentication:认证,验证用户身份

Authorization:授权,不同的用户设置不同权限

Accouting|Audition:审计

3A认证

3.4用户和组

用户(user):为获取系统资源权限相同特征的逻辑集合,主要为:管理员用户;系统用户;普通用户。

组(group):为有相同特性的用户集合。

一个用户可以存在于一个或者多个组

多个用户可以存在于一个或者多个组中。

4.文件权限属性管理

4.1用户身份

用户分为owner(拥有者) group(同组用户) others(其他) root(超级用户)

4.2权限介绍

4.3普通权限设置

属主与属组

属主:所属的用户,文档持有人

属组:所属的用户组 

(下图所示root为这些文件的属主和属组)

4.3.1权限修改

修改文件权限

chmod 选项 权限模式 文档
chamod u+x  g+r o+W test.txt

修改文件的属主

chown 选项 新的username 文档路径
[root@localhost f1]# chown mage a1.txt 
[root@localhost f1]# ll
total 0
-rw-r--r-- 1 mage root 0 Apr  7 16:57 a1.txt
-rw-r--r-- 1 root root 0 Apr  7 16:57 a2.txt
-rw-r--r-- 1 root root 0 Apr  7 16:57 a3.txt

修改文件的属组 

chgrp 选项 组名 文档路径
[root@localhost f1]# chgrp mage a2.txt 
[root@localhost f1]# ll
total 0
-rw-r--r-- 1 mage root 0 Apr  7 16:57 a1.txt
-rw-r--r-- 1 root mage 0 Apr  7 16:57 a2.txt
-rw-r--r-- 1 root root 0 Apr  7 16:57 a3.txt

4.4特殊权限设置

SUID(可执行文件):可执行文件有SUID权限时,启动进程后的属主为此可执行文件的属主。

SGID(目录,程序):此目录下的所有新文件的属组都为目录的属组。

作用于程序上,用户将继承此程序所有组的权限。

Sticky(目录):只有目录所有者和root可以删除该文件

a #对文件:可追加内容,不可被删除,不可被修改,不可被重命名;对目录,可新建,修

改文件,但不可删除文件

i #对文件:不可被删除不可被修改不可重命名;对目录:可修改查看目录中的文件,不可

新建文件,不可删除文件

4.5使用ACL实现权限管理

ACL访问控制列表:主要用于针对于某些目录或者文件授予某个用户rwx权限的细节设置

getfacl:查看a.txt的权限详情
[root@localhost 0405]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
group::r--

让mage拥有对a.txt的rwx权限
[root@localhost 0405]# setfacl -m u:mage:rwx a.txt 
[root@localhost 0405]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:mage:rwx
group::r--
mask::rwx
other::r--

5.编辑器之神--vim

5.1 vim基础操作

打开文件

vim a.txt

退出vim

shift+: 进入命令模式,输入q(wq ,q!)退出

vim中按i进入 insert 插入模式 。

cat验证文件:

[12:17:05 root@localhost[ 0405]#cat a.txt 
马哥出品,必属精品。

在扩展命令模式下使用地址定界和扩展命令快速编辑文本

例:

1,3d:删除1-3行

1,3y:复制1-3行,按p在光标处粘贴

在命令模式下使用 h左j右k下l 上实现光标跳转


 


第二周    1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
2. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
4. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
6. 磁盘存储术语总结: head, track, sector, sylinder.
7. 总结MBR,GPT结构。
8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff    

第二周

1.文本处理常用命令

cat -A:查看文本内容并显示所有控制符号

tail -n :查看指定后几行 

head -n:查看指定前几行 

sort:文件排序

cut:提取指定行

uniq:删除重复的行

wc:统计行,单词,字节,字符的总数

2.扩展正则表达式

通配符:匹配文件名中的字符串

正则表达式:用来匹配文本中字符串

元字符分类:字符匹配,匹配次数,位置锚定,分组

* 表示*前面的符号出现任意次

.* 表示任意符号的任意次数

单词:字母,数字,下划线。

扩展正则表达式

egrep= grep -E

锚定:

^ 行首:

[22:03:16 root@localhost[ ~]#echo linux | grep '^l'

linux

$行尾:

[22:03:04 root@localhost[ ~]#echo linux | grep 'x$'

linux

分组:

分组:( )将多个字符捆绑在一起,当作一个整体处理,如:\(root\)+

\|:或

grep:打印匹配到的行

sed:行编辑器

sed -i .bak:-i 编辑文件 加.bak改之前备份

找出端口号为6000的log文件修改为6010

[11:11:49 root@localhost[ 0405]#sed -i.bak '/^SELINUX=/c SELINUX=disabled' /etc/sysconfig/selinux 

sed 's/6000/6010/' test.txt > test2.txt
[12:08:29 root@localhost[ 0405]#cat test.txt 
port 6000
log redis-6000.log
[12:08:33 root@localhost[ 0405]#cat test2.txt 
port 6010
log redis-6010.log

[12:10:07 root@localhost[ 0405]#sed 's/6000/6010/g' test.txt > test2.txt
[12:10:24 root@localhost[ 0405]#cat test.txt 
port 6000 6000
log redis-6000.log

xargs

xargs :接收输入 做为cmd 的参数,可动态生成cmd的参数。

3 find

find 是实时查找工具,通过遍历指定路径完成文件查找

工作特点:

查找速度略慢

精确查找

实时查找

查找条件丰富

可能只搜索用户具备读取和执行权限的目录

find 选项 路径 条件 处理动作

查找路径:指定具体目标路径;默认为当前目录

查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕

查找/home 里面用户为mage且以s结尾的文件
[18:50:20 root@localhost[ 0405]#find /home/ -user mage  -name '*s'
/home/mage/.mozilla/extensions
/home/mage/.mozilla/plugins
/home/mage/.config/ibus

文件压缩和打包

tar
将/etc目录打包并压缩放到/opt/etc.tar.gz 文件中
[root@localhost ~]# tar zcf /opt/etc.tar.gz /etc
tar: Removing leading `/' from member names
[root@localhost ~]# ll /opt
total 7592
-rw-r--r-- 1 root root 7771693 Apr 10 16:51 etc.tar.gz

将/opt/etc.tar.gz解压放到/0405 目录中
[root@localhost ~]# tar xf /opt/etc.tar.gz -C /0405
[root@localhost ~]# ll /0405/
total 20
drwxr-xr-x 146 root root 8192 Apr 10 16:12 etc

3.shell

变量

变量表示命名的内存空间,将数据放在内存空间中,通过变量名引用,获取数据。

1.变量类型

普通变量

环境变量

用于存储系统配置,账号等数据信息。

对每个进程都有效,且能被子系统调用。

查看命令:env export

[root@localhost ~]# env
......
SSH_CONNECTION=10.0.0.1 54212 10.0.0.150 22
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
......

环境变量:export:将当前变量设置为环境变量。仅对当前窗口有效。

只读变量(常量) :readonly

位置变量:在bash shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数

脚本安全:

set -u :检测到不存在的变量时停止执行该条命令。

-e :errror exit:检测到错误自动停止并退出。

2.变量赋值

赋值 = ; =" "; =' ' ;

引用 $ ; ${ } ; $ " "

取消变量 unset 
    [root@localhost ~]# name=yunwei
    [root@localhost ~]# echo $name
    yunwei
    [root@localhost ~]# echo ${name}
    yunwei
使用+=追加变量内容
    [root@localhost ~]# TITLE=wang
    [root@localhost ~]# TITLE+=' sir'
    [root@localhost ~]# echo $TITLE
    wang sir

3.条件测试

test

[ ]

[[ ]]正则表达式

()会开启子shell,并且对其中变量赋值及内部命令执行后,将不再影响后续的环境.

{}不会开启子shell,在当前shell中运行,会影响当前shell环境.

&& 短路与 :命令A成功执行后执行命令B,反之则不执行命令B。

|| 短路或:命令A成功执行后不执行命令B,反之则执行命令B。



鸡兔同笼shell脚本

#!bin/bash
HEAD=$1
FOOT=$2

RABBIT=$((FOOT-HEAD-HEAD)/2)
CHICKEN=(HEAD-RABBIT)
echo RABBIT=$RABBIT
echo CHICKEN=$CHICKEN



批量创建用户脚本

#!/bin/bash
  
tart=1
end=10

for id in $(seq $start $end); do
          if id -u "user$id" >/dev/null 2>&1; then
               echo "用户user$id已存在"
                 else useradd -m -s /bin/bash "user$id"
               echo "用户user$id已添加"
          fi
done

5.磁盘管理

5.1分区方式

分区大小不能随意调整,要调整大小只能重建分区。

MBR分区:最大不超过2T,最多不超过4个主分区(分区表64字节,每16字节标识一个分区。)

4个主分区或者 3个主分区+1个扩展分区(扩展分区里可以再创建逻辑分区)

GPT分区:最大支持8Z,最多可以有128个分区。

df :查看文件系统的使用情况

[root@localhost ~]$df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 867M 0 867M 0% /dev

du:查看文件夹大小

[root@localhost ~]$du -sh /etc

33M/etc

5.3分区常用命令

lsblk:列出块设备

-f:查看详细信息

fdisk /路径:管理mbr分区 /路径 -l:查看分区详细情况

[root@localhost ~]$fdisk -l
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 8A27A58B-C3EC-4CE7-B2E3-FE9F73CDEBCB

gdisk/路径:管理gpt分区

parted:操作分区,(实时生效谨慎使用!)

partprobe:同步分区表

5.4文件系统

ext4 (ubuntu)

xfs(linux)

uuid:分区的唯一标识

modinfo 文件系统名:查看是否支持此文件系统

mkfs. :指定文件系统格式

5.4.2 挂载

在 /etc/fstab 中编辑挂载配置文件

mount:将新的分区挂载到文件夹

挂载时选择的文件夹内的旧文件会被隐藏

ro:只读

-a:刷新内存里的挂载关系

持久挂载

UUID=48b412cf-25b0-42d8-8380-47e2a8b85af6 /logs xfs defaults(pri= 修改此分区优先级) 0 0

umount:取消挂载关系。

tune2fs:查看ext4文件系统详细属性

tune2fs -f /挂载点

xfs_info:查看xfs文件系统详细属性

xfs_info /挂载点

5.4.3 swap:虚拟内存

free -h :显示系统内存使用情况

swapon /路径:开启此路径下的swap

swapoff /路径:禁用此路径下的swap

禁用swap:将/etc/fstab文件内swap行首添加#,并更新

[root@localhost ~]$sed -i.bak '/swap/s@^@#@' /etc/fstab

[root@localhost ~]$swapoff -a (swapon -a 启用swap) 禁用全部swap

[root@localhost ~]$free -h

total used free shared buff/cache available

Mem: 1.7Gi 320Mi 979Mi 9.0Mi 490Mi 1.3Gi

Swap: 0B 0B 0B

修改swappiness值,实现系统启用swap的阈值。

[root@localhost ~]$cat /proc/sys/vm/swappiness

30

[root@localhost ~]$ sysctl -p 使新的值生效


第三周

1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

RAID0

n个磁盘垂直叠加,n利用率,0冗余,读写性能提升,最少1+硬盘实现

RAID1

2个以上磁盘互相作为镜像,1/n利用率,有较好冗余,读写性能下降,最少2个磁盘实现

RAID5

 3块以上硬盘,每一块都可以作为校验盘。

n*(n-1)利用率 ,最多可以损坏一块硬盘。,读写性能提升,最少3块硬盘实现

RAID10

两个raid1组成raid0,n/2利用率,每组raid最多损坏一块盘,读写性能提升,最少4块盘实现

RAID01

两个raid0组成raid1,n/2利用率,有较好冗余,读写性能提升,最少4块盘实现

2. LVM磁盘扩容及缩容示例

2.1 扩容

pvcreate +  /dev/sdb /dev/sdc (磁盘路径)                    创建物理卷
pvs                           查看物理卷
vgcreate +(-s指定pe大小 默认4M)+ 卷组名 + pv磁盘路径         创建卷组
vgdisplay 和 vgs                     查看卷组
lvcreate +(-n指定卷名 -L指定大小)+ 卷组名                    创建逻辑卷
lvs                             查看逻辑卷

后续指定文件系统并挂载

lvextend -r(同步文件系统)-l +100%free(分配所有剩余空间) + 逻辑卷路径  逻辑卷扩容并同步文件系
统


vgextend +扩容目标卷组名+新增加卷组名                          卷组扩容


3.1 缩容

有可能丢失数据!

建议备份并离线操作!

只支持ext

umount + /logs (挂载点)                        解除挂载
fsck  + -f (缩容目标卷路径)                     检查目标卷信息
resize2fs + /dev/testvg/logs (缩容目标卷路径)  4G (缩容目标大小)   缩减
lvreduce + -L + 4G  +                          (缩减目标逻辑卷)
mount -a 重新挂载
   

3.总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。

3.1 rpm命令

rpm -q:查询软件包是否安装

       -qi:查询软件包详细信息

       -ql:查看软件包内文件信息

       -qf:查询文件所属的软件包

3.2 yum

remove

repolist

list 

search

history

clean all

yum provides: 查询安装缺失文件的来源

yum provides */缺失的文件:补全缺失文件

3.3 apt

4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。

第一步 服务器上建立repo文件

[BaseOS]
name=SelfBaseOS
baseurl=http://10.0.0.150/rockylinux/8/BaseOS/
gpgcheck=0

情路yum缓存

查看是否有yum源

[root@localhost yum.repos.d]$yum clean all

[root@localhost yum.repos.d]$yum repolist 

第二步安装httpd服务并立即启动服务实现网站功能

[root@localhost yum.repos.d]$yum -y install httpd
[root@localhost yum.repos.d]$systemctl enable --now httpd

第三步建立本地仓库文件夹使用reposyc拉取互联网的源数据到本地仓库

mkdir /var/www/html/rockylinux/8/
[root@localhost yum.repos.d]$yum reposync --repoid=BaseOS --download-metadata -p /var/www/html/rockylinux/8/

第四步 在客户端配置repo文件,使用服务器端的本地yum仓库

[BaseOS]
name=SelfBaseOS
baseurl=http://10.0.0.150/rockylinux/8/BaseOS/
gpgcheck=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值