当前位置 : 主页 > 操作系统 > centos >

Linux系统学习笔记整理2021/8/27

来源:互联网 收集:自由互联 发布时间:2022-06-20
一:计算机基础 1.计算机系统:硬件系统和软件系统组成 2.计算机体系结构: (1)程序:指令和数据组成 (2)计算机体系结构:运算器,控制器,存储器,输入和输出设备        

一:计算机基础

1.计算机系统:硬件系统和软件系统组成

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理

2.计算机体系结构:

(1)程序:指令和数据组成

(2)计算机体系结构:运算器,控制器,存储器,输入和输出设备

               运算器:实现运算(如加法器)

               控制器:控制运算器到内存的什么位置读取数据,又将数据存储到什么位置

               存储器:内存

               输入设备:键盘鼠标等

               输出设备:屏幕

        硬盘既是输入也是输出

3.操作系统:

(1)Linux操作系统基本原则

  • 由目的单一的小程序组成;小程序组合起来完成复杂任务
  • 一切皆文件
  • 尽量避免捕获用户接口
  • 配置文件保存问纯文本格式

(2)操作系统结构

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_02

CPU和内存是计算机最核心的硬件设备,是计算机得以运行的基础,因此我们将CPU和内存抽象为计算机硬件;硬件之上是内核,内核将CPU的计算功能抽象为系统调用,由于系统调用太过底层(底层:如Word和excel都需要一个打印的功能,那么需要给Word和excel都开发一个打印模块,而通过库调用就只需要开发一个打印模块),因此将系统调用进行封装为库,向外提供KPI接口供程序员调用。当然也可以直接通过系统进行调用。计算机顶端就是程序,最基本的程序就是shell,shell是人家接口界面。

shell:人机接口

        GUI:图形用户接口

        CLI:命令行接口

二:常用命令

1.学习命令

命令格式:命令    选项    参数

        短选项:-           ;多个选项可以组合:-a -b = -ab

        长选项:--

        参数:命令作用对象   

(1)显示命令类型(type)

内置命令(shell内置)

外部命令:文件系统中某个路径有一个与命令名称相应的可执行文件

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_03

(2)显示命令manual pages(man)

内部命令:help COMMAND

外部命令:COMMAND --help

命令手册:man COMMAND

在线文档:info COMMAND

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_04

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_05

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_06

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_07

(3)查看日历(cal)

cal 2021:查看2021年日历

cal 8 2021:查看2021nian8月日历

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_08

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_09

(4)确定文件格式(file)

window:PE

Linux:ELF

2.常见目录操作

根目录下的目录:

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_10

/bin:可执行文件,用户命令

/sbin:管理命令

/dev:设备文件----块设备(随机访问,数据块),字符设备(线性访问,按字符为单位),设备号(主设备号和次设备号)))

/home:用户的家目录,每个用户家目录通常默认为/home/USERNAME

/lib:库文件----静态库(.a),动态库(.dll,.so),/lib/modules(内核模块文件)

/mnt:挂载点目录,额外的临时文件系统

/proc:伪文件系统,内核映射文件

/tmp:临时文件

/var:可变化文件

/boot:系统启用相关文件,如内核,initrd,grub

/etc:配置文件

/media:挂载点目录,移动设备

/opt:可选目录,第三方程序的目录文件

/root:管理员的家目录

/sys:伪文件系统,跟硬件设备相关的属性映射文件

(1)展示所有的目录列表ls(list)

ls 展示当前目录下的可见文件

ls -a 显示当前文件下所有文件,包含隐藏文件

ls -l 显示文件详细信息

ll 显示当前目录下所有目录

ll -a 展示当前目录下所有目录的详细信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_11

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_12

符号含义

     第一个字符:文件类型

           -:普通文件(f)

           d:目录文件

           b:块设备文件

            l:符号链接文件

           p:命令管道文件

            s:套接字文件

     9位字符:文件权限

            每3位一组,每一组rwx(读,写,执行)

            第一组代表文件拥有者权限,第二组文件所属组权限,第三组其他用户权限

      数字:硬链接次数

      文件属主(owner)

      文件属组(group)

      文件大小(size),单位字节

      时间戳(timestamp):最近一次被修改时间

(2)切换目录cd(change directory)

cd 目录名字:切换到指定目录

cd ..:返回上一级目录

cd /:切换到系统根目录

cd ~:切换到当前用户的根目录

cd ~chen:切换到指定用户家目录

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_13

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_14

(3)目录的创建(mkdir)和目录的删除(rmdir)

mkdir 目录名:在指定目录下创建一个目录

mkdir -p 目录名/a/b:在指定目录下的a目录创建一个b目录,如上一级目录(父目录)不存在,则一起创建

rmdir 目录名:删除指定目录

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_15

(4)文件的创建(touch)和删除(rm)

touch a.txt:在你所在的目录下创建一个文件

rm a.txt:删除指定的文件(会提示,需要y确定)

rm -f a.txt:直接删除指定文件(不提示)

rm -r 目录名:递归删除,删除指定目录下的所有子目录(会提示,需y确认)

rm -rf 目录名:递归删除,直接删除你指定目录下的所有子目录(不提示)

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_16

(5)文件的打包和解压tar

-c:创建一个新的tar文件

-v:显示运行过程中的解压或打包信息

-f:指定文件名

-z:调用gzip命令进行压缩文件

-t:查看压缩文件的内容

-x:解压tar文件

具体操作命令:

tar -cvf test.tar test:将当前目录下的test打包成 .tar的文件

tar -zcvf test.tar.gz test:将当前目录下的test目录打包并压缩成 .tar.gz文件

tar -xvf test.tar -C 目录名:将test.tar解压到指定目录,不知道则解压到当前目录

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_17

(6)文件的移动(mv)和复制(cd)

mv test1.txt test2.txt:将test1.txt重命名为test2.txt

mv test1.txt test/test2.txt:将文件test1.txt移动到test目录下并重命名为test2.txt

cp test1.txt 目录名:复制test1.txt到指定目录

cp test1.txt test2.txt:复制test1.txt并粘贴到当前目录下,然后重命名为test2.txt

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_18

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_19

(7)文件的查看(cat,more,less,tail工作中通常用来查看日志)

cat test.txt:查看test.txt文件的内容,如果内容过多后面的内容将无法显示

more test.txt:分页查看test.txt文件的内容,空格翻页,回车键下一行,翻页后无法查看上一页内容

less test.txt:分页查看test.txt文件的内容,PGUP键查看上一页,PGDN键查看下一页

tail test.txt:查看文件的尾部内容

tail -10 test.txt:查看文件的后十行内容

tail -f test.log:动态查看日志

ctrl +c 退出

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_20

(8)按例抽取文本内容cut

cut -c1-3 test.txt:打印每行的第1到3个字符

cut -c-2 test.txt:打印每行前2个字符

cut -f1,3 -d“ ” test.txt:打印每行第1和第3个字符组(-d“ ”表示以空格为分隔符)

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_21

(9)文本排序sort

sort -n:数值排序

sort -r:降序

sort -k:以哪个字段为关键字进行排序

sort -f:排序时忽略大小xie

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_22

   以第四个字段为关键字对数字进行降序排列

(10)去掉重复的行uniq(必须相邻)

uniq -c:显示文件中行重复的次数

uniq -d:只显示重复的行

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_23

(11)文本统计WC

wc -l:只显示行数

wc -w:显示字段数

wc -c:显示文件大小,bytes

wc -L:最长的一行的长度

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_24

(12)查找目录grep及正则表达式

grep abc test.txt:在test.txt文件中查找abc

grep abc test.txt --color:在test.txt文件中查找abc,并高亮显示

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_25

通配符:

*:匹配任意长度的任意字符,a*表示以a开头的文件

?:匹配任意单个字符,

[]:匹配规定范围内的任意单个字符,a[1-9]表示a1-a9

[^]:^ 非

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_26

.:任意字符

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_27

^:指定行的开头, ‘^a’表示以a开头

$:指定行的末尾,'2$'

^$:表示空行

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_28

{}:限定连续重复字符范围,{2,5}连续二到五个重复字符({}在shell中有其他特殊含义,所以需用\转移)

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_29

(13)其他命令

pwd:显示当前所在目录

wget http://nginx.org/download/nginx-1.9.12.tar.gz 下载资料

(14)重定向输出>和>>

cat test.txt > test1.txt:将text.txt查处的内容输出到test1.txt中,如果之前test1.txt中有数据将覆盖,没有该文件将会创建。此时将不再命令行输出

cat test.txt >> test1.txt:将test.txt查出的内容输出到test1.txt中,如果之前test1.txt中有数据将会在原有数据后面追加查出的数据

set +C:禁止对已存在文件进行覆盖

set -C:解除禁止

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_30

(15)管道 |

该命令的作用是将一个命令的输出作为另一个命令的输入

cat index.xml | more:分页查询index.xml的内容

ps -ef | grep aio:查询名称中包含aio的进程

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_31

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_32

(16)&&命令执行控制

当我们需要同时执行多个命令时可以使用&&符号

mkdir test && cd test:创建test目录并且打开该目录(注意:只有在&&符号前的命令执行成功,后面的命令才会执行)

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_33

(17)vim编辑器

vim test.txt:打开test.txt文件

进入编辑模式后按i或o或a键进入插入模式,此时文件为编辑状态,编辑完成之后按esc键退出编辑模式,然后按:进入底行模式,输入wq是保存退出,输入q是不保存退出,输入q!是强制退出。

(18)tee保存文档输出到屏幕

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_34

(19)sed文本流编辑器

sed 【option】 'address command'  filename

    option:

          -n:只打印匹配行

          -r:使用扩展正则表达式

          -i:直接对内容进行修改

          -n:取消默认输出

    address:

          startline,endline:1,100;1,$(第一行到最后一行)

          /RegExp/:正则表达式,/^root/

          /pattern1/,/pattern2/:第一个被pattern1匹配到的行开始,至第一个被pattern2匹配到的行结束

          linenumber:指定行,&

          startline,+N:从startline开始,向后N+1行

     command:

           a:追加 向匹配行后面插入内容

           c:更改匹配行内容

           d:删除符合条件的行

           p:显示符合条件的行

           a \string:在指定行后面追加新行,内容为string;\n可以换行

            i\string:在指定行前面添加新行,内容为string

            r FILE:将指定的文件的内容添加至符合条件的行处

            w FILE:将地址指定的范围内的行另存至指定的文件中

             s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配的字符串

                                            匹配多个字符串,需要加修饰符:

                                                      g:全局替换

                                                       i:忽略字符大小号

                                           s///:也可以使用其他字符做分隔符,s###,s@@@

实例:

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_35

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_36

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_37

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_38
3.网络通讯命令

(1)ifconfig显示或设置网络设备

ifconfig eth0 up:启用eth0网卡

ifconfig eth0 down:禁用eth0网卡

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_39

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_40

(2)ping探测网络是否通畅

(3)netstat查看网络端口

netstat -an | grep 3306:查询3306端口的占用情况

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_41

4.系统管理命令

(1)date显示或设置系统时间

date:显示系统时间

date -s “2014-01-01 10:10:10”:设置系统时间

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_42

(2)df显示磁盘信息

df -h:可读性高的显示大小

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_43

(3)free显示内存状态

free -m:以mb单位显示内存组大小

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_44

(4)clear(ctrl+l)清屏

(5)ps正在运行的某个进程的状态

ps -ef:查看所有的进程

ps -ef | grep 2868:查看pid为2868的进程

ps aux | grep pid:查看该pid的进程(显示进程用户和拥有者以及不依附于终端的进程)

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_45

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_46

(6)kill结束某一进程

kill 2868:结束pid为2868的进程

kill -9 2868:强制结束pid为2868的进程

(7)du显示目录或文件的大小

du -h:显示当前目录大小

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_47

(8)who显示当前用户信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_48

(9)hostname显示当前主机名

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_49

(10)uname显示系统信息

uname -a:显示本机详细信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_50

5.用户和权限管理

(1)基础理论

权限:

      在文件中:

             r:可读,可以使用类似cat等命令查看文件内容

            w:可写,可以编辑或删除文件

             x:可执行,可以命令提示符下当作命令提交给内核运行

      在目录中:

             r:可以对此目录执行ls以列出内部所有文件

            w:可以在此目录创建文件

             x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息

      数字表示:

             1 001 --x: 执行

             2 010 -w-: 写

             4 100 r--: 只读

             755:rwxr-xr-x:属主 属组 其他

用户:UID,/etc/passwd

组:GID,/etc/group

影子口令:

用户:/etc/shadow

组:/etc/gshadow

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_51

符号意义(从左到右):

account:登录名

password:密码

UID:

GID:基本组ID

comment:注释

HOME DIR:家目录

SHELL:用户的默认shell,cat /etc/shells查看合法shell

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_52

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_53

account:登录名

encrypted password:加密密码,两个!表示锁定,不允许登录。格式:$1位$8位$密码,1位是加密方法;8位是杂质

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_54

用户类别:

     管理员:0

     普通用户:1-65535

                系统用户:1-499,不需要登录系统,只用来运行后台服务

                一般用户:500-60000

用户组类别

  第一种分类方式:

            管理员组:

            普通组:

                   系统组:

                   一般组:

   第二种分类方式:

             私有组:创建用户时,如果没有为其指定所属组,系统会自动为其创建一个用户组

             基本组:用户的默认组

             附加组,额外组:默认组以外的其它组

(2)useradd添加用户

useradd 【options】 username

                 -u UID:指定新增用户的UID

                 -g GID:指定新增用户的GID(基本组)

                 -G GID,...:附加组,一个用户可以属于多个附加组

                 -c “COMMENT”:添加注释

                 -d /path/to/directory:指定家目录

                 -s SHELL;在/etc/shells中有指定当前系统可用的安全shell

                 -m -k:创建家目录,并负责SKEL_DIR(default:/etc/skel)下的文件到家目录

                 -M:不创建用户主目录,即使系统在/etc/login,defs中的设置(CREATE_HOME)为yes)

                 -r:添加系统用户

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_55

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_56

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_57

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_58

(3)userdel删除用户

userdel -r USERNAME:同时删除用户的家目录

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_59

(4)id查看用户账号属性信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_60

(5)figer查看用户账号信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_61

(6)usermod修改用户账号属性

                 -u UID:指定新增用户的UID

                 -g GID:指定新增用户的GID(基本组)

                 -a -G GID,...:附加组,不使用-a选项会覆盖此前的附加组

                 -c “COMMENT”:添加注释

                 -d /path/to/directory:指定家目录

                 -s SHELL;在/etc/shells中有指定当前系统可用的安全shell

                 -m -k:创建家目录,并负责SKEL_DIR(default:/etc/skel)下的文件到家目录

                 -M:不创建用户主目录,即使系统在/etc/login,defs中的设置(CREATE_HOME)为yes)

                 -r:添加系统用户

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_62

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_63

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_64

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_65

(7)passwd 【USERNAME】:密码管理

             --stdin:从标准输入接收密码,echo “redhat” | passwd --stdin root

             -l:锁定

            -u:解锁

            -d:删除用户密码

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_66

(8)groupadd:创建组

                  -g GID

                  -r:添加为系统组

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_67

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_68

(9)groupmod:修改组属性

               -g GID

               -n GRPNAME

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_69

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_70

(10)groupdel:删除组属性

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_71

(11)gpasswd:为组设定密码

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_72

(12)newgrp GRPNAME<-->exit(退出临时组):临时切换为其他组,需用组密码(切换到自己的附加组不需要)

(13)chown:改变文件属主(只有管理员可以使用此命令)

chown USERNAME file,...

            -R:修改目录及其内部文件的属主

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_73

(14)chgrp:改变文件属组

chgrp GRPNAME file,...

                    -R:修改目录及其内部文件的属主

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_74

(15)chmod:修改文件权限

u,g,o,a

r,w,x

修改某类用户或某些类用户权限:

chmod  u=rwx,o=x test.txt

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_75

修改某类用户的某位或某些权限:

chmod u-w test.txt

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_76

(16)umask:遮罩码(产生的文件或目录的权限会自动减去遮罩码)

文件:666-umask

目录:777-umask

umask:查看umask值

umask 022:修改umask值为022

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_77

6.bash脚本编程

变量:

本地变量:<set> VARNAME=VALUE;作用域为整个bash进程;set可以省略

局部变量:local VARNAME=VALUE;作用域为当前代码段

环境变量:作用域为当前shell进程及其子进程

位置变量:$1,$2

特殊变量:$?:上一个命令的执行状态返回值

/dev/null:软件设备,bit bucket,数据黑洞

查看当前shell中的变量:

包含本地变量和环境变量:set

查看环境变量:printenv,env,export

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_78

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_79

(1)特殊标记及编辑脚本

#!/bin/bash

编辑一个文档,首行为特殊标记#!/bin/bash

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_80

添加对该文件的执行权限,然后执行

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_81

(2)条件测试

条件测试类型:整数测试,字符测试,文件测试

条件测试表达式:[ expression ];[[ expression ]];test expression

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_82

整数比较:

        -eq:测试两个整数是否相等;$a -eq $b

        -ne:测试两个整数是否不等;不等,为真;相等,为假

        -gt:测试一个数是否大于另一个数;大于,为真;否则,为假

         -lt:测试一个数是否小于另一个数;小于,为真;否则,为假

         -ge:大于或等于

         -le:小于或等于

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_83

字符串测试:符号两段要有空格

==:测试是否相等,相等为真,不等为假

!=:测试是否不等,不等为真,相等为假

>:一般不用

<:一般不用

-z string:测试指定字符串是否为空,空则真,不空则假

-n string:测试指定字符串是否为空,不空则真,空则假

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_84

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_85

文件测试:

         -e FILE:测试文件是否存在,exist的简写

         -f FILE:测试文件是否为普通文件

         -d FILE:测试指定路径是否为目录

         -r FILE:测试当前用户对指定文件是否有读取权限

         -w FILE:~写权限

         -x FILE:~执行

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_86

(3)条件判断

命令间的逻辑关系: 

         逻辑与:&&

                第一个条件为假,直接返回结果,第二个条件不做判断

                第一个条件为真,继续判断第二个条件

         逻辑或:||

                第一个条件为假,继续判断第二个条件

                第二个条件为真,直接返回结果,第二个条件不做判断

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_87

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_88

实例:如果一个文件/etc/inittab文件的行数大于100,就显示好大的文件

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_89

条件判断控制结构:

if 判断语句;then

   statement1

   statement2

   ......

else

    statement3

    statement4

    ...

fi

实例:

给定一个用户:

         1、如果其UID为0,就显示此为管理员;

         2、否则,就显示其为普通用户;

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_90

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_91

(4)shell中的算术运算

 A=3

B=6

let算术运算表达式:let C=$A+$B

$[算术运算表达式]:C=[$A+$B]

$((算术运算表达式)):C=(($A+$B))

expr 算术表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用:C=`expr $A + $B`

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_92

(5)for循环语句

for 变量 in 列表;do

循环体

done

生成整数列表:

{1...100}

`seq 起始数 步进长度 结束数`

实例:计算1到100的和

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_93

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_94

(6)case语句

case SWITCH in

value1)

   statement

   ...

value2)

   statement

   ...

  esac

实例:写一个脚本,实现功能:添加删除用户,显示详细信息

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_95

#!/bin/bash

#

DEBUG=0

ADD=0

DEL=0

for I in `seq 0 $#`; do       //$#表示该脚本后面接的参数个数

  if [ $# -gt 0 ]; then         //当参数个数大于0

           case $1 in             //第一个参数进行匹配

           -v|--verbose)

                   DEBUG=1

                   shift ;;         //如果第一个参数为-v或--verbose,将DEBUG赋值为1

           -h|--help)

                   echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"

                   exit 0 ;;

           --add)

                   ADD=1

                   ADDUSERS=$2

                   shift 2;;      //如果第一个参数为--add,将ADD赋值为1,并且将第二个参数赋值给ADDUSERS

           --del)

                   DEL=1

                   DELUSERS=$2

                   shift 2;;

           *)

                   echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"

                   exit 7;;

    esac

  fi

done

if [ $ADD -eq 1 ]; then       //当ADD为1之后(既)

  for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do     //将ADDUSERS的赋值参数(既用户名)读取出来

    if id $USER &> /dev/null; then                     //查看该用户是否存在

      [ $DEBUG -eq 1 ] && echo "$USER exists."

    else

      useradd $USER

      [ $DEBUG -eq 1 ] && echo "Add user $USER finished."

    fi

  done

fi

if [ $DEL -eq 1 ]; then

  for USER in `echo $DELUSERS | sed 's@,@ @g'`; do

    if id $USER &> /dev/null; then

      userdel -r $USER

      [ $DEBUG -eq 1 ] && echo "Delete $USER finished."

    else

      [ $DEBUG -eq 1 ] && echo "$USER not exist."

    fi

  done

fi

(7)while循环

while CONDITION;do

    statement

    ....

   done

实例:实现1到100的累加

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_96

7.raid:独立冗余磁盘阵列

各种接口速率:

IDE:133Mbps

SATA:300Mbps,600Mbps,6Gbps

USB 3.0:480Mbps

SCSI:Small Computer Syetem Interface,UltraSCSI,320Mbps,并行

raid的意义:单一磁盘存储量及传输速率达到上限,如果还需进一步提示只能通过多个磁盘上同时存储和读取数据。

RAID级别:

0:条带,将数据平均分片按序存储在各个磁盘上,并且存储的位置等高

      性能提升:读,写

      冗余能力(容错能力):无

      空间利用率:百分之百

      至少2块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_97

1:镜像,将数据在每一个磁盘上都存一份

      性能提升:写性能下降,读性能提升

      冗余能力:有

      空间利用率:1/2

      至少2块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_98

4:校验码,将数据存储在3个盘中,另外1个盘存储校验数据,当存储的3块盘其中一块坏了之后,依然能通过校验还原数据。弊端在于在还原数据的过程中会同时调用余下所以好的磁盘,大大增加了磁盘复核,这个时期很容易出错。并且不能出现2块以上的盘坏掉

      性能表现:读,写提升

      冗余能力:有

      空间利用率:(n-1)/n

      至少3块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_99

5:校验码plus,每个盘轮流存储校验码

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_100

10:先镜像再条带,当其中一个盘坏了之后,只需要将同组的磁盘数据复制到新盘中。

      性能表现:读,写提升

      冗余能力:有

      空间利用率:1/2

      至少4块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_101

01:先条带再镜像,当一块盘down掉后,如果想挂一个新盘上去,需要调用另一组的磁盘,既一块盘坏掉,会影响整个阵列

      性能表现:读,写提升

      冗余能力:有

      空间利用率:1/2

      至少4块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_102

50:校验并条带

      性能表现:读,写提升

      冗余能力:有

      空间利用率:(n-2)/n

      至少6块盘

jbod:简单磁盘捆绑,简单的将多个小的磁盘合成一个逻辑的大磁盘

      性能表现:无提升

      冗余能力:无

      空间利用率:百分之百

      至少2块盘

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_103

创建一个RAID:

md:multidisks,是一个内核模块

mdadm命令:将任何块设备做成RAID

             创建模式:-C

                                        -l:级别

                                       -n:设备个数

                                       -a{yes|no}:是否自动为其创建设备文件

                                       -c:CHUNK大小,2^n,默认为64k

                                       -x:指定空闲盘个数

              管理模式:--add/-a,--remove/-r,--fail / -f

                                     mdadm /dev/md0 -f /dev/sdb3

              监控模式:-F

              增长模式:-G

              装配模式:-A

  通过磁盘分区建立raid

<1>在添加的磁盘中新建分区,并且修改分区类型为fd 

fdisk /dev/sdb

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_104

  Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_105

块数为2,RAID级别1,将sdb2,sdb3部署为整列md0

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_106

查看全部整列信息:

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_107

格式化阵列:

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_108

挂载阵列:

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_109

查看磁盘阵列信息:mdadm -D /dev/md0 

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_110

模拟挂掉某个磁盘:mdadm /dev/md0 -f /dev/sdb3

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_111

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_112

移除阵列中的磁盘:mdadm /dev/md0 -r /dev/sdb3

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_113

添加磁盘(新增磁盘必须为相同大小和trunk块大小):mdadm /dev/md0 -a /dev/sdb3

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_114

停止阵列:mdadm -S /dev/md0 

Linux系统学习笔记整理2021/8/27_2021/8/9笔记整理_115

           

网友评论