首页 > 其他分享 >菜鸡运维成长记-第二周

菜鸡运维成长记-第二周

时间:2023-12-17 15:22:19浏览次数:40  
标签:... 运维 -- 分区 文件系统 dev 第二周 菜鸡 root

文本处理工具总结:

查看文本文件内容:

cat:

-A|--show-all #显示所有控制符

-n|--number #对显示出的每一行进行编号

-b|--number-nonblank #非空行编号

-s|--squeeze-blank #压缩连续的空行成一行

nl:

显示行号,相当于cat -b

tac:

逆向显示文本内容,行倒序显示

rev:

将同一行的内容逆向显示,同一行倒序

查看非文本文件内容:

hexdump:

[root@ubuntu22]# hexdump /usr/bin/ls|head -n 2
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0003 003e 0001 0000 6ab0 0000 0000 0000

分页查看文件内容:

more:

more [OPTIONS...] FILE...

可以实现分页查看文件,可以配合管道实现输出信息的分页

常用选项:

-d #在底部显示提示

-s #压缩连续空行

命令选项:

空格键 #翻页

回车键 #下一行

!cmd #执行命令

= #显示行号

less:

less [OPTIONS...] FILE...

less 也可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器

常用选项:

-N #显示行号

-s #压缩连续空行

命令选项:

/string #搜索

显示文本前面或后面的行内容:

head:

head [OPTION]... [FILE]...

可以显示文件或标准输入的前面行

常用选项:

-n|--lines=N #指定获取前N行,N如果为负数,表示从文件头取到倒数第N前

tail:

tail [OPTION]... [FILE]...

tail 和head 相反,查看文件或标准输入的倒数行

常用选项:

-f|--follow=descriptor #跟踪显示文件fd新追加的内容,常用日志监控,当删除再新建同名文件,将无法继续跟踪

-n|--lines=N #指定获取后N行,如果写成+N,表示从第N行开始到文件结束

按列抽取文本:

cut 命令可以提取文本文件或STDIN数据的指定列

cut OPTION... [FILE]...

常用选项:

-d|--delimiter=DELIM #指定分割符,默认是tab

-f|--fields=LIST #要显示的列,-f1, -f1,2,3, -f 1-3,4

收集文本统计数据:

wc [OPTION]... [FILE]...

#常用选项

-l|--lines #只计数行数

-w|--words #只计数单词总数

-c|--bytes #只计数字节总数

-m|--chars #只计数字符总数

-L|--max-line-length #显示文件中最长行的长度

文本排序:

sort [OPTION]... [FILE]...

#常用选项

-n|--numeric-sort #以数字大小排序

-t|--field-separator=SEP #指定列分割符

-r|-reverse #倒序

-k|--key=KEYDEF #指定排序列

-u|--unique #去重

去重:

uniq [OPTION]... [INPUT [OUTPUT]]

#常见选项

-c|--count #显示每行出现次数

-d|--repeated #仅显示有重复行

-D #显示所有重复行具体内容

-u|--unique #仅显示不重复的行

grep总结:

作用:文本搜索工具,根据用户指定的 “模式” 对目标文本逐行进行匹配检查;打印匹配到的行

模式:由正则表达式字符及文本字符所编写的过滤条件

格式:

grep [OPTIONS...] PATTERN [FILE...]

#常用选项

-E|--extended-regexp         #使用ERE,相当于egrep

-v|--invert-match            #显示没有被匹配上的行,即取反

脱水
[root@ubuntu ~]# grep -Ev '^$|#' /etc/fstab
/dev/disk/by-id/dm-uuid-LVM-HKF80PEEHngcPAwMCGVHYNNtk6PsJg2YfKfb6hrRNHH93HGvLGLwnGXQCLTlm4Le / ext4 defaults 0 1
/dev/disk/by-uuid/04e1098b-d88f-4d9b-9888-61eeec1c3945 /boot ext4 defaults 0 1
/swap.img	none	swap	sw	0	0

-i|--ignore-case             #忽略字符大小写

忽略字符大小写
[root@ubuntu ~]# grep -i ROOt /etc/passwd
root:x:0:0:root:/root:/bin/bash

-n|--line-number             #显示匹配的行号

显示匹配的行号
[root@ubuntu ~]# grep -n bash /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
34:mmy:x:1000:1000:mmy:/home/mmy:/bin/bash

-o|--only-matching       #仅显示匹配到的字符串

仅显示匹配到的字符串
[root@ubuntu ~]# grep -o root /etc/passwd
root
root
root

正则表达式相关:

字符匹配

. #任意单个字符

[wang] #指定范围的字符

[^wang] #不在指定范围的字符

[:alnum:] #字母和数字

[:alpha:] #代表任何英文大小写字符,亦即 A-Z, a-z

[:lower:] #小写字母,示例:[[:lower:]],相当于[a-z]

[:upper:] #大写字母

[:blank:] #空白字符(空格和制表符)

[:space:] #水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:] #不可打印的控制字符(退格、删除、警铃...)

[:digit:] #十进制数字

[:xdigit:] #十六进制数字

[:graph:] #可打印的非空白字符

[:print:] #可打印字符

[:punct:] #标点符号

匹配次数

*   #匹配前面字符任意次

? #0或1次

+ #1次或多次

{n} #匹配n次

{m,n} #至少m,至多n次

位置锚定

^ #行首

$ #行尾

\<, \b #词首

\>, \b #词尾

分组其它

() 分组 #后向引用:\1, \2, ... 注意: \0 表示正则表达式匹配的所有字符

| #或者

a|b #a或b

C|cat #C或cat

(C|c)at #Cat或cat

变量总结:

变量赋值是临时生效,当退出终端后,变量会自动删除,无法持久保存,脚本中的变量会随着脚本结束,也会自动删除

Shell中变量命名法则:

区分大小写

不能使程序中的保留字和内置变量:如:if, for

只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反

命名习惯

见名知义,用英文单词命名,并体现出实际作用,不要用简写,如:ATM

变量名大写

局部变量小写

函数名小写

大驼峰StudentFirstName,由多个单词组成,且每个单词的首字母是大写,其它小写

小驼峰studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母是大写,其它小写

下划线: student_first_name

变量的生效范围等标准划分变量类型

普通变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell 进程均无效

环境变量:生效范围为当前shell进程及其子进程

本地变量:生效范围为当前shell进程中某代码片断,通常指函数

环境变量:

可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程

一般只在系统配置文件中使用,在脚本中较少使用

声明并赋值

export name=VALUE

declare -x name=VALUE

只读变量:

只读变量:只能声明定义,但后续不能修改和删除,即常量

声明只读变量:

readonly name

declare -r name

位置变量:

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

$1,$2,... #对应第1个、第2个等参数,shift [n]换位置

$0 #命令本身,包括路径

$* #传递给脚本的所有参数,全部参数合为一个字符串

$@ #传递给脚本的所有参数,每个参数为独立字符串

$# #传递给脚本的参数的个数

#注意:$@ $* 只在被双引号包起来的时候才会有差异

sehll总结:

[] 中的表达式,前后要有空格

当使用正则表达式或通配符使用[[ ]],其它情况一般使用 [ ]

-e和-a 表示判断文件的存在性,建议使用-e

脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字

如果exit后面无数字,终止退出状态取决于exit命令前面命令执行结果

如果没有exit命令,即未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一 条命令的状态码

鸡兔同笼
#!/bin/bash
while true;do
read -p "输入鸡和兔有多少个头?" HEAD
if [[ "$HEAD" =~ [^0-9]+ ]] || [[ $HEAD < 2 ]];then
	echo "输入有误,请输入数字,并且至少要有2个头"
else
	echo "鸡和兔共有$HEAD个头"
	break
fi
done
while true;do
read -p "输入鸡和兔有多少条退?" FEET
if [[ "$FEET" =~ [^0-9]+ ]] || [[ $FEET < 6 ]];then
	echo "输入有误,请输入数字,并且至少要有6条退"
else
	echo "鸡和兔共有$FEET条退"
	break
fi
done
echo "计算中..."
rabbit=$[ (FEET-HEAD-HEAD)/2 ]
cock=$[ HEAD-rabbit ]
sleep 1
echo "兔子有$rabbit只" 
echo "鸡有$cock只"

[root@ubuntu22 1217]# ./jitu.sh 
输入鸡和兔有多少个头?30
鸡和兔共有30个头
输入鸡和兔有多少条退?80
鸡和兔共有80条退
计算中...
兔子有10只
鸡有20只
批量创建用户
#!/bin/bash
  2 for i in {1..10};do
  3         #echo $i
  4         id user$i &> /dev/null                                                                             
  5        if [ $? == 1 ];then
  6                echo "user$i不存在,创建用户user$i"
  7                echo -e "12345\n12345"|useradd -m user$i
  8                echo "user$i,创建完成!"
  9        else
 10                echo "user$i,已存在!"
 11        fi
 12 done

磁盘管理总结:

硬盘存储术语 CHS

磁头head一个盘面对应一个磁头
磁道track盘面上的每一圈就是一个磁道
扇区sector把每个磁道按512bytes大小再进行划分,这就是扇区,每个磁道上的扇区数量是不一样的
柱面cylinder磁头移动的时候,是一起移动,如果是6个盘面,则6个磁头对应的磁道是一致的,这就是柱面

MBR分区:

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

MBR分区:主和扩展分区对应的1--4,/dev/sda3,逻辑分区从5开始,/dev/sda5

分区管理命令:fdisk

fdisk [options]

fdisk [options] -l [disk]

显示所有设备 fdisk -l

显示指定设备 fdisk -l /dev/sda

#常用子命令

p #输出分区列表

t #更改分区类型

n #创建新分区

d #删除分区

v #校验分区

u #转换单位

w #保存并退出

q #不保存并退出

x #高级功能(专家模式)

GPT分区:

支持128个分区,使用64位,支持 8Z( 512Byte/block )64Z ( 4096Byte/block)

使用128位UUID(Universally Unique Identifier) 表示磁盘和分区,GPT分区表自动备份在头和尾两份, 并有CRC校验位

UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动

分区管理命令:gdisk

gdisk [ -l ] device

常用子命令

b       #备份分区表到指定文件

c       #修改分区名

d       #删除分区

i       #显示分区详细信息

l       #列出所有分区类型

n       #新建分区

o       #创建新的分区表

p       #查看分区

q       #退出

r       #恢复和转换选项,非专业人士勿用

s       #排序

t       #修改分区类型,默认 8300,表示普通分区

v       #检测硬盘是否有问题

w       #保存退出

x       #额外功能,专家模式

同步分区表:partprobe

文件系统总结:

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

常用的文件系统特性:

FAT32

最多只能支持16TB的文件系统和4GB的文件

NTFS

最多只能支持16EB的文件系统和16EB的文件

EXT3

最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件

Ext3目前只支持32000个子目录

Ext3文件系统使用32位空间记录块数量和 inode数量

当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块

EXT4

EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本

Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB

理论上支持无限数量的子目录

Ext4文件系统使用64位空间记录块数量和 inode数量

Ext4的多块分配器支持一次调用分配多个数据块

修复速度更快

XFS

根据所记录的日志在很短的时间内迅速恢复磁盘文件内容

用优化算法,日志记录对整体文件操作影响非常小

是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB

能以接近裸设备I/O的性能存储数据

文件系统管理:

创建文件系统:

mkfs

mkfs [options] [-t ] [fs-options] [size]

点击查看代码
创建ext4 文件系统
#mkfs.ext4 /dev/sdc1 等同于 mkfs -t ext4 /dev/sdc1
[root@ubuntu2204 ~]# mkfs.ext4 /dev/sdc1

创建xfs文件系统
[root@ubuntu2204 ~]# mkfs.xfs /dev/sdc2

mke2fs

ext系列文件系统专用管理工具

mke2fs [OPTION]... DEVICE

-t #指定文件系统类型 {ext2|ext3|ext4|xfs}

点击查看代码
[root@ubuntu ~]# mke2fs -t ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 717e5aaa-0d9b-4f84-a46b-cbb18efc0639
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

列出块设备:

lsblk

lsblk [options] [device ...]

常用选项

-f|--fs             #显示文件系统

点击查看代码
[root@ubuntu ~]# lsblk -f /dev/sdb1
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb1 ext4   1.0         717e5aaa-0d9b-4f84-a46b-cbb18efc0639 

查看和管理分区信息:

blkid

查看块设备属性信息

blkid [OPTION]... [DEVICE]

点击查看代码
[root@ubuntu ~]# blkid |grep sdb
/dev/sdb1: UUID="717e5aaa-0d9b-4f84-a46b-cbb18efc0639" BLOCK_SIZE="409UUID="983eb902-a632-4229-aafb-ecc09b1df2f9"

挂载和卸载:

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为

卸载:为解除此关联关系的过程

把设备关联挂载点:mount Point

挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空 进程正在使用中的设备无法被卸载

挂载:mount

mount device mountpoint

device:指明要挂载的设备

设备文件:例如:/dev/sda5

卷标:-L 'LABEL', 例如 -L 'MYDATA'

UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'

伪文件系统名称:proc, sysfs, devtmpfs, configfs

mountpoint:挂载点目录必须事先存在,建议使用空目录

点击查看代码
[root@ubuntu /]# mount /dev/sdb1 /1216
[root@ubuntu /]# lsblk -f /dev/sdb1
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb1 ext4   1.0         717e5aaa-0d9b-4f84-a46b-cbb18efc0639    9.2G     0% /1216

卸载:umount

设备卸载

umount /dev/sdb1

挂载点卸载

umount /1216

持久挂载

将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载

点击查看代码
查看UUID:
[root@ubuntu ~]# blkid /dev/sdb1
/dev/sdb1: UUID="717e5aaa-0d9b-4f84-a46b-cbb18efc0639" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="983eb902-a632-4229-aafb-ecc09b1df2f9"

[root@ubuntu ~]# vim /etc/fstab 
添加下列信息
/dev/disk/by-uuid/717e5aaa-0d9b-4f84-a46b-cbb18efc0639 /1216 ext4 defaults 0 0

添加新的挂载项,需要执行下面命令生效
此命令只针对文件新增行或删除行有效,如果在中间修改了挂载选项,则此命令无效
mount -a

[root@ubuntu ~]# lsblk -f /dev/sdb
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb                                                                           
└─sdb1 ext4   1.0         717e5aaa-0d9b-4f84-a46b-cbb18efc0639    9.2G     0% /1216

新添加硬盘流程:

①:添加硬盘不重启识别

grep mptspi /sys/class/scsi_host/host*/proc_name

echo '- - -' > /sys/class/scsi_host/host32/scan

②:硬盘分区

gidk /dev/sdb

③:格式化创建文件系统

mkfs.ext4 /dev/sdb

④:挂载

mount /dev/sdb /1216

⑤:设置永久挂载

标签:...,运维,--,分区,文件系统,dev,第二周,菜鸡,root
From: https://www.cnblogs.com/giantmoon/p/17887160.html

相关文章

  • 某航空公司引入运维管理软件,提升信息化运营效率
      在信息化时代,企业信息化的程度已经成为影响其核心竞争力的重要因素。某航空公司作为行业领导者,积极推进信息化建设,不断提升运维管理水平,以适应日益激烈的市场竞争。该公司成功引入了一款先进的运维管理软件,实现了对IT设备的集中监控、自动化管理和安全管理,显著提升了信息化业......
  • SRE Google运维解密 第三章
    第二部分指导思想本部分将描述SRE日常工作背后的指导思想——工作模式、行为方式,以及平时运维工作中关注的重点等。第三章拥抱风险管理风险在构建系统的过程中,可靠性的进一步提升成本并不是线性增加的。高昂的成本主要存在于以下两个维度:冗余物理服务器/计算资源的成......
  • 云平台运维过程问题,以及解决方法
    1.裸金属替换下发,后bond1网络不通或者丢包。:排查用到的命令:ifdown  ifconfigeth0down/up ip-bra  demsg|grepDMI查看服务器厂家 、cat/etc/os-release查看操作系统版本#用带外看服务器的状态ipmitool-Ilanplus-H22.234.11.158-Uadmin-PPCfwq@psbc202......
  • openGauss学习笔记-161 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-161openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-无权限角色导出数据161.1无权限角色导出数据gs_dump和gs_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导出所要求的权限时,会无法导出......
  • 蔡锦濠10天让你从菜鸡升大师Ⅱ
    C++提供了以下两种类型的字符串表示形式:    C风格字符串    C++引入的string类类型C 风格的字符串起源于C 语言,并在C++中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成字符串的字......
  • openGauss学习笔记-160 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-160openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-导出全局对象160.1导出全局对象openGauss支持使用gs_dumpall工具导出所有数据库公共的全局对象,包含数据库用户和组、表空间及属性(例如:适用于数据库整体的......
  • 【漫话运维】信创化浪潮下,如何实现运维丝滑过渡
    点击立即体验WeOps简便易用的平台,全面的监管控功能,从工具、人员到流程,全面应对挑战,让信创化变得更加便捷和可控。嘉为蓝鲸WeOps一体化平台嘉为蓝鲸WeOps一体化运维平台,是为企业的IT运维部门提供覆盖资源管理、监控告警、健康扫描、运维工具、知识库、IT服务台等多项功能为一体的运......
  • Java云架构、云服务、云运维的医院信息管理系统源码(云HIS)
    医院信息系统(HIS)经历了从手工到单机再到局域网的两个阶段,随着云计算、大数据新技术迅猛发展,基于云计算的医院信息系统将逐步取代传统局域网HIS,以适应人们对医疗卫生服务越来越高的要求。利用云计算、大数据等现代信息技术研发的医疗卫生信息平台(HIP)实现了医院信息化从局域网向互......
  • MySQL运维5-Mycat配置
    一、schema.xml1.1简介schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库、逻辑表、分片规则、分片节点即数据源的配置。主要包括一下三组标签schema标签datanode标签datahost标签1.2schema标签用于定于Mycat实例中的逻辑库,......
  • openGauss学习笔记-159 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-159openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-导出所有数据库159.1导出所有数据库openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根......