Linux基础命令


Linux思想继承自Unix

  1. Linux中一切皆文件。(把硬件设备、内存中部分数据映射成文件,方便系统管理员获取系统数据。)
  2. 一个命令只负责一个简单功能。复杂功能由简单命令组合完成。(管道符:命令的组合使用。)
  3. 命令执行中少交互。(尽量减少用户的操作,简洁、优雅、明确)

基础命令

1.man 查看命令文档

  • 命令 --help 命令帮助信息,常用参数

2.history 查询历史命令,默认是记录最近的1000条命令

  • -c 清空历史命令。

3.alias 给命令起别名,可以简化比较长的命令。

  • alias h="history"
  • alias srn="systemctl restart network"
  • alias vinet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"

4.unalias 别名 # 用于清除别名

5.source .bashrc # 让配置文件生效

6.export # 修改系统环境变量

7.file # 查看文件的类型

8.type # 命令类型,内部(shell自带),外部(有路径的)

9.which # 查找命令的路径。

10.touch 文件 # 创建空文件

11.vim 文件 # 编辑并创建文件

12.echo “内容”> 文件 # 字符串重定向

13.ls 查看目录中的内容

  • -a 显示所有隐藏文件
  • -A 显示出了.和..之外所有文件
  • -l --long显示文件详细信息,存在Inode中
  • -i 显示Inode编号
touch a b c d 
# touch创建空白的普通文件
总用量 4
-rw-r--r--  1 root root    0 7月   4 14:36 a
-rw-------. 1 root root 1448 2月  20 09:06 anaconda-ks.cfg
-rw-r--r--  1 root root    0 7月   4 14:36 b
-rw-r--r--  1 root root    0 7月   4 14:36 c
-rw-r--r--  1 root root    0 7月   4 14:36 d

# 第一位
- 普通文件
d 目录文件
l 链接文件
b 块文件(/dev中找),存储设备 
    disk硬盘  
    rom只读存储器(read only memory)光盘
c 字符设备(显示器、键盘、鼠标)  

14.mkdir 创建目录

  • -p 创建多级目录 mkdir -p dir1/dir2/dir3
  • 在同一级目录下,创建多个子目录。使用{}
  • mkdir -p data/{bin,sbin,lib,lib64,tmp,src,local}
  • mkdir /data 在根目录下创建
  • mkdir data 在当前目录下创建
  • / 代表“根”路径。Linux所有文件都在根路径下的。

  • 绝对路径:从根开始的完整路径 /etc/sysconfig/network-scripts/ifcfg-ens33

  • 相对路径: 相对于当前工作目录的路径。

    • ./ 当前目录
    • ../ 上层目录

15.pwd 查看当前工作目录。

16.cd 切换工作目录

  • cd /etc/
  • cd .. 返回上层目录
  • cd - 返回之前的目录
  • cd ~ 返回家目录

17.rmdir 删除空目录

18.rm 删除文件

  • -r 递归删除,可以删除目录和目录下的所有内容。
  • -f 强制删除,不提示,不警告,不显示删除结果。
  • rm -rf 危险慎用,禁用它

19.du 查看目录中所有文件的大小

  • -h 显示合适的单位
  • -s 不显示文件详细的大小,只显示目录中总的大小

20.mv 移动文件或目录,也可以改名(路径最后写新的名字)

21.cp 复制文件

  • -r 递归复制,复制目录

22.tree 显示目录的树状结构,层次结构。

* yum -y install tree 
* -L 显示层数 
* -d  只显示目录
[root@server-01 ~]# tree -Ld 1 /
/
├── bak
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
# 配置本地Yum源
# 1.创建光盘的挂载目录
mkdir /meida/cdrom
# 2.挂载光盘(确保虚拟机光盘已经连接)
mount -r /dev/sr0 /media/cdrom
# -r 只读硬件
# 3.备份yum默认的配置文件
cd /etc/yum.repos.d/
mkdir bak
mv *.* bak
cp bak/CentOS-Media.repo ./
vi CentOS-Media.repo
# 按i键进入编辑模式
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/cdrom/  # 光盘挂载的路径
gpgcheck=0   # 可以关闭安全验证 
enabled=1    # 开启该yum源
# 按ESC键,输入 :wq 保存退出(冒号必须要输入)
yum makecache # 重新加载yum的缓存 

~~~

23.find 查找文件

* find  路径  查找选项  条件

* 查找系统中的所有log日志,日志是记录软件运行过程中的操作、错误、运行记录。
find  /  -name  *.log  # 查找系统中所有.log结尾的文件
指定目录例如/ 、 /etc 、/var 、/usr,不指定目录在当前目录中查找
    选项:可以单独使用也可以组合使用
    -name  通过文件名查找,条件是文件名,可以使用*(通配符)
          精确查找,提供完整文件名 find / -name root
          模糊查找,使用*来查找 find / -name *root*
            xxx*:以xxx开头的文件
            *xxx:以xxx结尾的文件
            *xxx*:中间包含xxx的文件
    -size  通过文件大小查找 K M G T P Z BB   2^10   
            1KB = 1024byte
            1MB = 1024KB
            1GB = 1024MB
            1TB = 1024GB
            ...
           默认精确的大小 find / -size 10M
          + 大于某个值  find / -name *.log  -size +1M
          - 小于某个值  find / -name *root*  -size -1k
    -mtime 通过修改时间查找
          + n天以前的修改文件
          - n天以内修改的文件
    -type  通过类型查找  find /  -name *sd* -type b
         f (-) text (file) 脚本.程序源代码.配置文件.日志文件ASCII UTF-8 (Unicode)(-)executable 可执行文件(二进制文件)/usr/bin/
        (l)link 链接文件 快速访问某些文件
        (b)block 光盘.U盘.硬盘/dev目录中包含的
        (c)character 字符类型,输入输出设备
        (d)directory 目录类型的文件
        (p)pipe 管道类型的文件用于程序与程序间数据传输\
        (s)socket 网络套接字,用于程序间的网络通信
    -perm  通过权限查找 777(所有权限) 000(没有任何权限) 
          find / -perm 000  # 查找系统中没有权限的文件
          root用户可以无视权限。 
    -user  通过用户(文件属主)查找
    -group 通过分组(文件属组)查找
    -exec  将查找到的结果交给其他命令继续处理。 
    find / -name *.log -exec cp {} ./  \;
    {}:用于代替find查找到内容。类似一个变量。
    \; 结束符,结束当前的查找操作。

24.cat 查看文件中所有内容。(显示在屏幕上)

  • -n 显示行号

  • cat可以实现文件的重定向。也可以实现创建文件,将内容(字符串)保存到文件中。

  • <或<< 输入重定向

    • 命令 < 文件 # 将文件的内容交给命令执行。
    • 命令 << 输入内容 # 将终端接收到的数据交由命令执行。
  • >>> 输出重定向

    • 命令 > 文件 文件不存在时,会创建文件,文件存在时,会覆盖原文件。
    • 命令 >> 文件 追加,(文件不存在时,也会创建文件), 文件已存在时,会在文件末尾添加新的内容。
  • cat << EOF >> 文件名 # 将输入的内容保存到文件中。

  • << 输入重定向(将键盘中输入内容,交给程序执行)

  • >> 追加重定向 (将新的内容追加到原件的末尾,文件不存在时,会创建。)

  • > 输出重定向(覆盖原文件内容)

  • EOF 结束符(表示输入结束的关键字)

  • cat << EOF >> a.txt 1234 5678 root user passwd EOF

  • cat << EOF >> a.txt $PATH #加引号或不加引号都会显示PATH的值 EOF

  • cat << EOF >> a.txt \$PATH #使用\会显示$PATH本身 EOF

  • echo 打印内容到屏幕上。

    • echo $PATH > a.txt # 文本重定向
    • * 通配符,表示任意长度的任意字符。
    • $符号可以获取变量的值。 $变量名获取变量的值。
    • / 表示根路径, /etc/passwd 中间的/是路径的分隔符
    • \ 转移字符,\n 换行 \t 制表符 \\ 表示一个反斜杠,将有特殊含义的符号转义成它本身的样子。命令特别长时,\ 可以换行,继续编辑命令。
    • 单引号,echo 打印单引号,引起来的字符串时,只显示字符串本身。
    • 双引号,echo 打印双引号,引起来的字符串时,会执行特殊符号$的功能。
    • 不加引号,echo 打印字符串会执行$符号功能,但是不会执行其他符号。一般用于输出变量的结果。echo $PATH
    • -e :允许使用转义字符。

26.head -n 查看文件前n行的内容,n是一个数字例如: head -5

27.tail -n 查看文件后n行的内容

  • 如果查看中间内容,可以组合head和tail,例如10~15 内容
# 使用 | (Shift + \) 管道符,将前一个命令的执行结果交给后一个命令继续执行。
cat -n /var/log/yum.log | head -15 | tail -6

28.wc 字符统计

  • -l 显示行数
  • -c 显示字符数
  • -w 显示单词数,根据空格统计

29.which 查找命令(可执行的程序)的路径

30.whereis 命令的路径和帮助信息

  • whereis find

  • 数据重定向

符号 含义
< 文件输入重定向,将文件中数据交给命令执行。例如自动磁盘分区。
<< 键盘输入重定向,将终端中输入内容交给命令执行。cat命令
> 输出重定向(覆盖),将命令的执行结果保存到文件中。
>> 输出重定向(追加),将命令的执行结果保存到文件末尾。

31.more 翻页查看文件、日志内容的命令,只能向下翻页

  • 回车键Enter,一行行的翻页。

  • 空格键 ,一屏一屏的翻页。

  • /关键字 全局查找,按n键下一个

  • q 退出

32.less 上下都可以翻页查看内容。

  • 除了和more相同功能外,向上翻页
  • /关键字,按n键下一个,N (Shift+n)向上查找。
  • q 退出

33.date 显示当前时间

  • -s 修改系统时间 (不要随便修改时间)
  • date "+%Y-%m-%d %H:%M:%S" 时间格式化输出:显示年-月-日,时:分:秒
  • cp a.txt a.txt.$(date +"%Y-%m-%d")
  • $(命令) 将命令执行的结果转换为字符串。可以在一个命令中调用另一个命令的结果。

34.hwclock :使用硬件时间重置系统时间。

35.cal 显示日历

36.Vi/Vim

  • Vi是一个Unix/Linux内置文本编辑器,类似与记事本

  • Vim是Vi升级版本,高亮显示(彩色),更加容易使用。

  • vim编辑器的四种模式

    * 命令模式:vim打开文件默认的模式,使用快捷键操作文件的修改、删除、复制、粘贴、跳转。

        yy 复制一行

        nyy 复制n行  5yy 复制光标开始向下的5行

        p  粘贴  

        dd 删除一行,删除了内容,可以使用p键粘贴,dd+p实现剪切功能。

        ndd 删除n行,n为任意数字。

        gg 返回第一行

        GG 最后一行

        ngg 跳到n行 10gg

        u  撤销

        Ctrl + r 还原,可以还原撤销 

    * 编辑模式:命令模式中输入i/a/o/I/A/O都可以进入编辑模式。可以自由编辑文件。

        * i: insert (插入)  在光标的前方插入编辑的内容。
        * a: append (追加) 在光标的后方添加编辑的内容。
        * o:  光标的下一行,新建一行,再编辑内容。
        * I: 光标先移动到行首,再编辑内容。
        * A: 光标先移动到行尾,再编辑内容。
        * O: 光标的上一行,新建一行,再编辑内容。
        * 按Esc键退出编辑模式,返回命令模式

    * 末行模式:可以保存、退出、替换、查找等功能。

        * 从命令模式按 “:”进入末行模式。
        * w 文件存在时,直接保存。  新建文件时,后跟文件路径和文件名。
        * q 退出,q! 强制退出
        * wq 保存退出,x 也可以保存退出
        * **`w !sudo tee %`** 普通用户权限不足时,保存的方法,但是必须保证该用户在sudoers文件中。无法使用时,请切换root用户后,再操作。
        * s/old/new/  替换第一个(光标所在行)
        * %s/old/new/ 所有行的第一个old字符
        * %s/old/new/g  全局替换,所有old字符都替换成new字符
        * 替换中`/`可以使用其他符号替代
        * 查找 / 内容 向下查找 按n下一个
        * set nu 显示行号

    * 可视模式:命令模式使用v/V进入Ctrl+v,通过方向键选择某些列的内容。

        * 可视模式,部分复制,只复制光标选中的内容,y复制,最后一行o,Esc, p粘贴
        * 列操作,Ctrl + v 列操作。注释多行,下方向键选择n列,Shift+i (I) 输入#  按两下ESC,完成注释
        * 解开多行注释  最后按Delete
  • 解决错误rm .xxx.swp 文件。没有保存,就退出vim了,.swp是缓存文件。

    查看系统发行版本

    cat /etc/os-release

    编译:将源代码->二进制程序的过程。

用户和组的操作

  • 超级管理员 root 根用户 id=0 的用户,系统只认ID,不认名。

  • 普通用户:

    • 真实用户:除了root外可以正常登陆系统的用户。id>=1000
    • 系统用户:作用是给软件或服务提供权限。1~999
  • 所有用户的信息保存在 /etc/passwd

# 用户名:x:用户ID:组ID:详情:默认shell
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin  # 系统用户不允许登陆。
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
zj:x:1000:1000::/home/zj:/bin/bash
  • 密码在保存在 /etc/shadow

37.useradd 用户名

第二种方法:修改配置文件(较繁琐)

修改和设置密码:

  • useradd mysql -s /usr/sbin/nologin # 创建系统用户,但不允许登录。

38.passwd 用户名

39.userdel 删除用户

  • -r 删除用户时,同时删除家目录和系统邮箱

40.usermod 修改用户信息

  • -L, --lock 锁定用户帐号,但是root用户还可以切换。
  • -s, --shell SHELL 该用户帐号的新登录 shell 默认终端是/bin/bash
  • -u, --uid UID 用户帐号的新 UID
  • -U, --unlock 解锁用户帐号

  • usermod -s /sbin/nologin tom

41.groupadd 创建新的组。用于小组成员共享文件。

* 默认组,创建用户时,自动创建的。用户默认在组中。
* 附加组,单独创建的,可以将多个用户添加到一个组中。
[root@server-01 ~]# groupadd dev
[root@server-01 ~]# usermod -aG dev zj
[root@server-01 ~]# usermod -aG dev tom
[root@server-01 ~]# tail -1 /etc/group
dev:x:1002:tom,zj

42.groupmod 修改组。

43.groupdel 删除组

44.su 切换用户

* su  用户  # 当前目录中切换用户
* su - 用户  # 切换用户的同时,跳转到该用户的家目录

45.exit 退出用户

root 用户可以修改所有文件的权限。root不被权限限制。

权限是用来限制普通用户的。

45.chown 用户名.组名 -R 目录/文件

  • chown 用户:组名 -R 目录
  • chown 用户:组名 文件

    • root用户才能修改文件的所有者。
    • chown - change file owner and group
    • 修改文件属主(所有者)和属组
    • chown tom.tom -R /home/tom

46.chmod 修改文件的、读、写、执行权限。(rwx st/ST)

  • root和文件的所有者可以使用该命令。
  • a: all 所有用户
  • u: user 所有者
  • g: group 属组
  • o:other 其他人
  • r :read 读权限
  • w:write 写权限
  • x:execute 执行
  • +: 增加权限
  • -: 减少权限
  • =:指定权限
  • 权限字符表示
数字 字符 含义
0 --- 没有权限 --- --- --- 属主 属组 其他
1 --x 执行权限,==文件执行==,允许==进入目录==
2 -w- 写权限,==编辑文件==, ==修改目录==(创建文件、复制、移动、重命名、删除)
3 -wx 可写、可执行。
4 r-- 只读权限,可以==查看文件内容==,对于==目录可以使用ls==查看
5 r--x 可读、可执行
6 rw- 可读、可写
7 rwx 可读、可写、可执行
# root用户的文件默认的权限
[root@server-01 ~]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 7月  11 14:40 a.file
drwxr-xr-x 2 root root 6 7月  11 14:42 dir

# 普通用户的权限
[tom@server-01 ~]$ ls -l
总用量 4
-rw-rw-r-- 1 tom tom  0 7月  11 14:41 a.file
drwxrwxr-x 2 tom tom  6 7月  11 14:46 dir
  • 数字表示法

  • root用户文件默认 644 目录755,root用户的组权限默认只允许查看。

  • 普通用户文件默认 664 目录775。

文件没有w权限,但是目录有w权限时,其他用户可以强制修改文件。

  • rwx之外的特殊权限 sStT
  • s权限,其他用户可以使用该文件的所有者的权限去使用它。
  • S权限,没有x权限时,显示为大写的S。
  • SUID,属主+s,rwsr--r--,其他人拥有属主的权限操作文件。
  • SGID,属组+s,rwxrwsr--,其他人拥有属组的权限操作文件。
[root@server-01 ~]# ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd
[root@server-01 ~]# ls -l /etc/shadow
---------- 1 root root 891 7月  11 09:39 /etc/shadow
# 所有用户可以使用root的权限执行passwd命令,修改自己的密码。
* t/T 粘连权限位,权限的最后一位,只给目录设置t。
    * 该目录中,用户不能删除别人的文件。
    * 没有x权限时,显示为大写的T

/tmp  # 可以存放所有用户的临时文件
drwxrwxrwt.   8 root root  124 7月  11 16:06 tmp

48.chgrp 单独改组权限。

[root@server-01 ~]# touch test
[root@server-01 ~]# ls 
test
[root@server-01 ~]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 7月  12 08:45 test
[root@server-01 ~]# chgrp tom test 
[root@server-01 ~]# ls -l
总用量 0
-rw-r--r-- 1 root tom 0 7月  12 08:45 test

49.umask 权限掩码 :设置创建文件和目录时的默认权限。

CentOS7与之前的旧版本,root用户和普通用户的初始权限不同。

  • root 文件644 目录 755
  • 普通用户 文件 664 目录 775

CentOS新版本中所有用户默认文件权限相同。

  • 文件644 目录 755

0022 目录 777-022 755 文件666 - 022 644

rw-rw-rw- 666

-

-w--wxr-- 234

=

r--r---w- 442

[root@server-01 ~]# umask 0234
[root@server-01 ~]# touch test.txt
[root@server-01 ~]# ls -l
总用量 0
-r--r---w- 1 root root 0 7月  12 08:55 test.txt

50.sudo 命令 # 临时授权普通用户使用root的权限执行命令。

  • root用户由于权限太高了,危险性太大。生产环境建议禁用。

  • 但是很多功能必须要有root才能操作。例如:网络配置、磁盘配置、服务重启等操作。

  • 所以需要普通用户可以临时使用root的权限执行命令。

    root是皇帝,拥有sudo权限的用户是钦差大臣。sudo(尚方宝剑)。

普通用户需要经过在/etc/sudoers文件中进行配置才能拥有使用sudo。

su - 直接切换到root用户。

# %dev    ALL=(ALL) 所有用户   NOPASSWD:ALL (允许所有命令)
# 随时谋权篡位
# 使用!命令的路径 which
%dev    ALL=(ALL)    NOPASSWD:ALL,!/usr/sbin/reboot,!/bin/passwd

# 命令别名
Cmnd_Alias     SHUTDOWN = /sbin/shutdown,/usr/bin/poweroff,/sbin/poweroff

Cmnd_Alias     HALT = /usr/sbin/halt

Cmnd_Alias     REBOOT = /usr/bin/reboot,/sbin/reboot,/sbin/init

Cmnd_Alias     SHELLS = /bin/sh,/bin/bash,/usr/bin/csh, /usr/bin/ksh, /usr/local/bin/tcsh, /usr/bin/rsh, /usr/local/bin/zsh

Cmnd_Alias     NETWORK = /etc/init.d/network,/sbin/ifconfig,/sbin/ip,/bin/hostname,/sbin/ifup,/sbin/ifdown

Cmnd_Alias     PASSWORD = /usr/bin/passwd

Cmnd_Alias     USERS = /usr/sbin/usermod,/usr/sbin/adduser,/usr/sbin/userdel,/usr/sbin/useradd,/usr/sbin/vipw,/usr/sbin/visudo,/usr/bin/gpasswd

Cmnd_Alias     DISKS = /sbin/fdisk,/sbin/parted

%dev  ALL=(ALL)  NOPASSWD:ALL,!SHELLS,!HALT,!SHUTDOWN,!REBOOT,!NETWORK,!PASSWORD,!DISKS,!USERS

51.chattr 设置隐藏权限

用chattr命令防止系统中某个关键文件被修改:

chattr +i a.txt
chattr -i a.txt
# i 权限是锁定,不允许修改、删除和改名
# 然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。
chattr +a a.txt
chattr -a a.txt
# a 只能追加,不能删除内容。适合系统安全日志。

52.lsattr 查看隐藏权限,配合chattr。

53.setfacl 设置文件或文件夹的ACL权限

属主、属组、其他。

A rwx

B r-x

C rw-

C r--

54.getfacl 用来查看文件的ACL权限

[root@server-01 ~]# getfacl  a.txt 
# file: a.txt     # 文件名
# owner: root     # 所有者
# group: root     # 组
user::rw-         # 所有者的权限
group::r--        # 组成员的权限
other::r--        # 其他人的权限

# 设置用户的ACL
[root@server-01 ~]# setfacl -m u:tom:rw a.txt 
[root@server-01 ~]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:tom:rw-   # 让tom用于属主的rw-权限
group::r--
mask::rw-      # 目前允许所有者和组成员的最大权限 
other::r--

# -x 删除一个指定用户的ACL
[root@server-01 test]# setfacl -x u:tom a.txt
[root@server-01 test]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

# 设置多个用户的ACL
[root@server-01 test]# setfacl -m u:tom:rwx a.txt 
[root@server-01 test]# setfacl -m u:zj:rwx a.txt 
[root@server-01 test]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:zj:rwx
user:tom:rwx
group::r--
mask::rwx
other::r--

# -b删除所有的特殊权限
[root@server-01 test]# setfacl -b  a.txt 
[root@server-01 test]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

55.mount 挂载

56.umount 卸载

57.reboot 重启

58.init 进程初始化工具

系统级别 功能
init 0 关机
init 1 无网络命令行单用户模式,root修复系统时使用。
init 2 多用户模式,停止部分网络服务,没有nfs(网络文件系统)
init 3 多用户命令行模式,最小化安装时的默认模式
init 4
init 5 图形化界面模式
init 6 重启

59.ps 报告当前系统的进程状态。

  • ps -aux | ps -ef

60.top 显示或管理执行中的程序,类似windows的任务管理器,查看系统状态。

  • t CPU占用率 m 内存占用率 q 退出

Linux安装软件

1.rpm: (Red Hat Package Manager) 红帽包管理工具。

  • 安装前需要下载或拷贝相应的软件包。
  • rpm安装命令:rpm -i xxx.rpm / rpm -ivh xxx.rpm # vh显示进度条。
  • rpm 卸载命令:rpm -e tree / rpm -evh xxx

aarch64-> ARM架构(能耗低、性能高、移动端较多)

x86_64 -> x86架构 (PC、服务器端较为主流,但是能耗高,摩尔定律。)

  • -qa 查询已安装所有rpm包
[root@server-01 ~]# rpm -qa|grep tree
tree-1.6.0-10.el7.x86_64
  • -qf 查询某个文件属于哪个rpm包
[root@server-01 ~]# rpm -qf /usr/bin/zsh
zsh-5.0.2-34.el7_8.2.x86_64
[root@server-01 ~]# rpm -qf /etc/passwd
setup-2.8.71-11.el7.noarch
  • -qi 查询软件包的详细信息
[root@server-01 ~]# rpm -qi tree
Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: 2024年07月15日 星期一 09时18分48秒
Group       : Applications/File
Size        : 89505
License     : GPLv2+
Signature   : RSA/SHA256, 2014年07月04日 星期五 13时36分46秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : tree-1.6.0-10.el7.src.rpm
Build Date  : 2014年06月10日 星期二 03时28分53秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://mama.indstate.edu/users/ice/tree/
Summary     : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format.  Tree is basically a UNIX port of the DOS tree
utility.
  • -ql 软件包安装的路径
[root@server-01 ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

2.yum : 自动化程度更高的rpm包管理工具。配置好yum源(/etc/yum.repos.d/xxx.repo),baseurl = rpm仓库的路径。

  • yum -y install 安装软件包
  • yum -y remove 卸载软件包
  • yum -y update 更新系统
  • yum clean 清除缓存
  • yum makecache 更新缓存
  • yum grouplist 查询软件包组名
  • yum groupinstall 组名

(阿里云开源镜像站、华为云开源镜像站、清华大学开源镜像站)

3.源码编译

  • meke
  • make install
##编译安装redis
### 准备环节
### 安装gcc套装和wget:
yum -y install tcl cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make wget
## 安装步骤:

# 第一步:将redis的源码包下载或上传到linux系统
wget https://download.redis.io/releases/redis-6.2.14.tar.gz
# 第二步:解压缩redis
tar zxvf redis-6.2.14.tar.gz
# 第三步:编译
cd redis-6.2.14
# 进入redis源码目录。
make  
# 将源代码编译生成二进制程序的,make调用gcc GNU组织开发的C/C++编译器。
make test 
# 第四步:安装
make install PREFIX=/usr/local/redis
# 后面是你自己的安装路径。
# PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
# 第五步:添加配置文件
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc
# 第六步:配置redis为后台启动
vim /usr/local/redis/etc/redis.conf 
# 将daemonize no 改成daemonize yes
# 第七步:将redis加入到开机启动
vim /etc/rc.local
#在里面添加内容:
/usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf 
# (意思就是开机调用这段开启redis的命令)
# 第八步:开启redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
# 第九步:将redis-cli,redis-server拷贝到bin下,让redis-cli指令可以在任意目录下直接使用
ln -s /usr/local/redis/bin/redis-server /usr/local/bin/
ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/

# **开启远程**
# 修改配置文件
vim /usr/local/redis/etc/redis.conf
# 注释掉绑定本机
# bind 127.0.0.1
#设置protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:
# 1、关闭protected-mode模式,此时外部网络可以直接访问
#2、开启protected-mode保护模式,需配置bind ip或者设置访问密码
protected-mode no

#**客户端登录**
redis-cli

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name 'zj'
OK
127.0.0.1:6379> get name
"zj"
127.0.0.1:6379> exit

4.二进制安装,已经编译好的软件,可以直接使用。

## 安装jdk8
# 1.下载jdk8
wget http://192.168.3.200/Software/jdk-8u401-linux-x64.tar.gz
# 2.解压缩
tar -xvf jdk-8u401-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_401/ jdk1.8
# 3.配环境变量
vim /etc/profile
# 最后添加:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

# 让环境变量生效
source /etc/profile

# 验证:
java -version

5.容器化(docker)

Debian/Ubuntu

1.deb包,dpkg -i

2.sudo apt install 软件

apt-get

Windows中使用WSL技术可以内置Linux。

ArchLinux

第三种包管理工具。

pacman -S

四剑客

正则表达式

使用特殊的符号,进行文本处理的一种语法工具。

JS、Java、Python、PHP、Shell等语言都支持正则。

vim/find/sed/awk/grep等和文本处理相关的命令与工具都支持正则表达式。

有什么用?

查找、过滤、替换、删除等功能。

垃圾邮件处理(过滤)、聊天关键字替换(不文明用语)、爬虫(查找)、数据库(匹配、查找)。

常用符号

符号 功能
. 任意一个字符
* 任意次数,包括0次和无数次
? 匹配一次或0次
+ 至少匹配一次
{n} 匹配n次
{n,} 匹配至少n次,n次以上
{n,m} 匹配n到m之间次
[0-9] 只匹配数字
[a-zA-Z] 只匹配字母
[a-zA-Z0-9_] 匹配字母和数字
^ 匹配以xx开头的
$ 匹配以xx结尾
\ 转义符号,表示特殊符号原本的含义
\\ 取消转义
() 分组匹配
| 或操作,匹配多个字符中的一个。
[^0-9] 反向匹配,不在范围内的字符
.* 任意长度的任意字符。
^$ 匹配空行
^# 只匹配#注释的内容
([0-9]{1,3}\.){3}[0-9]{1,3} 匹配IP
\1 捕获组 1 中的内容
量词? *? +? {1,3}? 非贪婪(懒惰)模式,尽可能少的匹配
  • find 高级

  • find 路径 [选项] 条件

    • -name 文件名
    • -type 文件类型
    • -size 文件大小
    • -mtime 根据时间查找
    • -regex 使用正则表达式匹配
  • grep 使用正则实现文件过滤的工具

    • -n 显示行号
    • -e 支持默认正则
    • -E 支持正则扩展 等价与 egrep
    • -i 不区分大小写
    • -v 反向匹配
    • -r 在指定目录中的所有文件中匹配内容。
    • -f 使用写在文件中的规则匹配 等价于fgrep
cp CentOS-Media.repo{,.bak}
grep -vE "^#|^$" CentOS-Media.repo.bak 
  • sed 文件流编辑器,查看、查找、修改、替换、添加、删除文件中的内容。

    • 文本流:一行行的处理数据,而不是一次性处理所有数据。
    • sed在处理数据时,每一行数据先存入缓冲区,处理完默认输出到屏幕上,之后处理下一行数据。
    • sed默认是不修改原文件的。
    • 加上-i参数后才会直接修改原文件,否则只会把内容输出到屏幕上。
    • -i.bak 修改原文件前先备份。
sed [选项] '命令' 文件
选项:
-i 修改原文件
-i.bak 先备份再修改原文件
-n 只显示p打印的行,不显示其余行。
-r 支持正则表达式  
-e 支持多条命令,可以替代管道符


命令:
s :替换
g :全局
a :追加新内容
i :插入新内容
d :删除某行,或某几行
p :指定打印的行数,输出到屏幕上

# 也可以使用管道符前一个命令的执行结果
# cat  a.txt  | sed [选项] '命令'
# 只打印前两行
sed -n '1,2 p' passwd
# 打印1~5行
sed -n '1,5 p' passwd 

# 实现查找功能,找到关键字的所在行,将这一行打印出来
sed -n '/root/ p' passwd 
sed -rn '/^root/ p' passwd 

# 添加新的内容,默认是所有行的下方添加
sed  'a ---------------------' passwd

# 1~3行的下一行添加内容
sed  '1,3 a a'  passwd

# 在1~3的上一行插入内容
sed  '1,3 i -------------'  passwd

# 在1行和第3行的上方添加
sed -e '1 i a' -e '3 i a' passwd

# 删除d
sed  '1,10 d' passwd

# 替换
sed -i 's/b/hello/g' a.txt
sed -i '1,3 s/b/hello/g' a.txt

# 将第3行的tom替换空
sed  '3 s/tom//g' a.txt
  • awk 实现文本处理的编程语言。转换、条件判断、格式化输出的操作。

    • 列操作
awk [选项] '语法' 文件
awk '{print $1,$2,$3}' 
# 特殊变量
$0 一行所有内容
$1 第一列
$2 第二列
$3 第三列
$NF 最后一列
$(NF -1) 倒数第二列
# 选项:
-F 指定文件中内容的分隔符,默认是空格
-vOFS="\t" 指定输出显示的分隔符,默认是空格

# 案例1:打印系统中非root用户的进程信息
ps -aux|awk '{if($1!="root") print $1,$2,$3,$4}'
# 案例2:打印passwd的前三列
awk -F":" '{print $1,$2,$3}' passwd
# 案例3: 打印ip地址
ip a |grep "inet"|sed -n "3p"|awk '{print $2}'|awk -F"/" '{print $1}'
命令 功能
find 查找文件或目录。
grep 内容过滤器,按行显示。
sed 文本流编辑器,加-i参数才能修改原文件。擅长行处理。
awk 本质是一门脚本语言。运维人员使用较多的是列处理功能。

压缩与解压缩

压缩文件,减少文件的体积,方便上传、下载文件传输。

备份数据也需要压缩以减少存放的空间。

GNU zip -> GZIP

1.压缩.zip和解压缩.zip

# 压缩命令 选项 压缩后的名字 需要压缩的文件
zip -rqo passwd.zip passwd
-r 压缩目录
-q 安静模式,不显示压缩过程
-o 指定压缩后的文件
-e 加密模式,压缩时添加密码
# 解压缩.zip 文件
unzip  xx.zip

# du -sh 查看目录大小
# ls -lh 查看文件大小

2.gzip -> .gz

# 默认只能压缩文件,会删除源文件。
gzip [选项]  文件
-c 保留源文件,需要手动使用"重定向"生成.gz文件
-v 显示过程
-1 ~ -9 压缩率 1 压缩的最快,文件最大  9 压缩最慢,文件最小 默认-6
-d 解压缩

gzip passwd  # 压缩自动生成passwd.gz
gzip -d passwd.gz  # 解压缩还原为passwd
gzip -c passwd > passwd.gz  # 会保留源文件,但是不会自动生成.gz文件,需要手动生成。 

3.bzip2 -> .bz2

bzip2 [选项]  文件
-c 保留源文件,需要手动使用"重定向"生成.gz文件
-v 显示过程
-1 ~ -9 压缩率 1 压缩的最快,文件最大  9 压缩最慢,文件最小 默认-6
-d 解压缩

4.xz -> .xz

xz [选项]  文件
-c 保留源文件,需要手动使用"重定向"生成.gz文件
-v 显示过程
-1 ~ -9 压缩率 1 压缩的最快,文件最大  9 压缩最慢,文件最小 默认-6
-d 解压缩

5.tar 打包命令:将文件夹(目录)打包成文件。tar集成gzip\bzip2\xz的功能。将打包好的.tar文件压缩成.tar.gz .tar.bz2 .tar.xz 。

-c 打包文件
-x 解压缩并解包
-v 显示打包、压缩、解压缩等过程
-f 指定压缩包
-z gzip算法
-j bzip2算法
-J xz算法
-C 指定解压路径
# 打包并压缩成多种格式。
tar -czvf xxx.tar.gz  xxx
tar -cjvf xxx.tar.bz2 xxx
tar -cJvf xxx.tar.xz  xxx

# 解压缩
tar -xvf xxx.tar.xx  # 当前目录解压缩
tar -xvf xxx.tar.xx -C 路径  # 指定目录解压缩
##  例如:
tar -xvf test.tar.xz -C /tmp/

磁盘管理

  • /dev/sda 第一块硬盘
  • sda1 磁盘的第一个分区
  • 主分区(4个)、扩展分区(占用一个主分区)、逻辑分区(在扩展分区上建立)
  • 主分区:sad1 sad2 sad3
  • 将第4个分区设置为扩展分区,扩展分区不能直接使用。
  • 扩展分区上建立,逻辑分区sad5 sda6 sad7。
  • 新增硬盘。

  • 1.分区

    fdisk:一个非常经典的分区命令。早期的磁盘使用 fdisk 工具分区,fdisk只能用于MBR分区,最大限制磁盘容量 2T;gdisk分区2T以上。

# 查看当前系统中的磁盘信息
fdisk -l 
* 文件系统 
    * Linux中的文件系统 ext2\ext3\ext4 xfs
    * Windows  NTFS  fat32(单个文件最大4GB) fat/fat16(已淘汰)
# 对某块硬盘进行分区操作
fdisk /dev/sdb
m 显示命令列表帮助信息
p 显示当前硬盘分区状态
n 创建新的分区
w 保存分区修改信息,并退出
q 不保存直接退出
d 删除某个分区
t 修改分区类型
l 查看分区的类型
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)  主分区
   e   extended 扩展分区
Select (default p): 
  • 2.格式化(文件系统)
mkfs.ext4   # 将分区格式化成ext4文件系统
mkfs.xfs    # 将分区格式化成xfs文件系统
mkswap     # 将分区格式化成swap交换分区,用于临时存放内存中的数据。
# 可以防止内存不足时,系统崩溃。

格式化:重新划分磁盘的存储区域,包括inodes(元数据)、blocks(块数据)的大小和数量。预留空间(5.00%)用于数据恢复等操作。

# 格式化分区 
mkfs.ext4  /dev/sdb1
  • 3.挂载
mkdir /data
mount /dev/sdb1  /data
# 挂载:指定一个目录,用于访问磁盘中内容。
# windows中磁盘驱动器。C: D: E: F:
# Linux中没有磁盘驱动器的概念,只有文件和目录。
# 卸载:移除目录和磁盘的关联,之后该目录会变成当前系统中的一个普通目录。
df -h
  • 内存:存在程序运行中的缓存。

  • 硬盘:存放文件和目录。

磁盘分区补充

gdisk :支持使用GPT分区类型,用于划分容量大于2T的磁盘。

MBR和GPT的区别

  • MBR: 传统分区:

    MBR是主引导记录(Master Boot Record)的英文缩写;在传统磁盘分区模式中,引导扇区是每个分区的第一扇区,而主引导扇区是磁盘的第一扇区。

    MBR分区表最多支持==4==个主分区,当然也支持将主分区扩展成逻辑分区(逻辑分区不限制数量);在MBR分区表逻辑块地址采用32位二进制表示,因此一共可表示2^32个逻辑块地址。如果一个扇区大小为512字节,那么MBR磁盘最大分区容量仅为==2TB。==

  • GPT: 新型的分区

GPT是GUID磁碟分割表(GUID Partition Table)的缩写,含义是“全局唯一标识磁盘分区表”,是一个实体硬盘分区表的结构布局的标准。

GPT分区表最大分区数量为==128==个主分区,分区方案中逻辑块地址采用64位二进制表示,可以表示2^64个逻辑块地址,因此GPT最大支持18EB。除此之外,GPT分区方案在磁盘的末端还有一个备份分区表,保证了分区信息不容易丢失。

1byte = 8bit

1KB=1024B 文本

1MB=1024KB mp3

1GB=1024MB 电影

1TB=1024GB 日常使用的硬盘

1PB=1024TB 数据存储设备,分布式存储

1EB=1024PB 数据中心

1ZB=1024EB 国家级的数据

1YB=1024ZB 全世界自从计算机诞生以来的数据

2024年全球数据量将达159.2ZB 1ZB=1 万亿 GB

1024 zb = 1bb

yum install -y  gdisk

# 使用gdisk分区大容量的磁盘,用法和fdisk几乎一样。
gdisk /dev/sdc
n 创建
w 保存
d 删除
q 退出
t 修改分区类型
l 查看分区的类型

# 创建两个512G的分区、剩余7T一个分区。
[root@server-01 ~]# gdisk /dev/sdc 
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-17179869150, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-17179869150, default = 17179869150) or {+-}size{KMGTP}: 512G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (2-128, default 2):       
First sector (34-17179869150, default = 1073743872) or {+-}size{KMGTP}: 
Last sector (1073743872-17179869150, default = 17179869150) or {+-}size{KMGTP}: 1T
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-17179869150, default = 2147485696) or {+-}size{KMGTP}: 
Last sector (2147485696-17179869150, default = 17179869150) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): 

Command (? for help): p
Disk /dev/sdc: 17179869184 sectors, 8.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2309F1BA-C5AC-4B85-916B-58AC1829088D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 17179869150
Partitions will be aligned on 2048-sector boundaries
Total free space is 6108 sectors (3.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      1073741824   512.0 GiB   8300  Linux filesystem
   2      1073743872      2147483648   512.0 GiB   8300  Linux filesystem
   3      2147485696     17179869150   7.0 TiB     8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

[root@server-01 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk 
└─sda1   8:1    0   60G  0 part /
sdb      8:16   0   60G  0 disk 
├─sdb1   8:17   0   10G  0 part 
├─sdb2   8:18   0   20G  0 part 
├─sdb3   8:19   0    5G  0 part 
├─sdb4   8:20   0    1K  0 part 
└─sdb5   8:21   0   25G  0 part 
sdc      8:32   0    8T  0 disk 
├─sdc1   8:33   0  512G  0 part /app
├─sdc2   8:34   0  512G  0 part /bak
└─sdc3   8:35   0    7T  0 part /data
sr0     11:0    1  4.4G  0 rom  /media/cdrom

开机自动挂载磁盘

# UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,
网卡、磁盘分区都有UUID。

# 查看磁盘的UUID
blkid /dev/sdb1

lsbld -f 
# 开机自动挂载磁盘,需要将磁盘信息添加到/etc/fstab文件中
# 注意:修改一定要小心,改错了,系统无法启动。
vim /etc/fstab 

设备名或UUID  挂载的路径   磁盘类型  磁盘设置   是否备份  是否检测
/dev/sdb1   /app          ext4     defaults   0        0
/dev/sdb2   /bak          xfs      defaults   0        0
/dev/sdb3   /data         ext4     defaults   0        0
/dev/sr0    /media/cdrom    iso9660    ro       0        0


设备名或UUID  挂载的路径   磁盘类型  磁盘设置   是否备份  是否检测
UUID=f305e9a1-32a1-4c34-b0db-72f6f909a8dd   /app          ext4     defaults   0        0
UUID=db6c67b6-deae-4e9a-bd85-bbe8fa2ba748   /bak          xfs      defaults   0        0
UUID=8f91be13-2d95-4568-ba69-77053bf6d9d3   /data         ext4     defaults   0        0
/dev/sr0    /media/cdrom    iso9660    ro       0        0


UUID=9f2b082b-1d0a-4d07-955c-31310682f3f4 /  xfs   defaults  0 0

# 自动挂载/etc/fstab文件中配置好的磁盘分区
mount -a

LVM

LVM(Logical Volume Management)是一种用于管理逻辑卷的技术,它在Linux系统上提供了灵活和可扩展的磁盘存储管理功能。

  • 较为自由的扩容和缩容,改变磁盘分区的大小。

  • PV 物理卷:将磁盘分区转换为物理卷。

    • PE: 存储的基础单元,默认为4MB。
  • VG 卷组:将多个来自不同的硬盘、分区PV合并成一个VG。
  • LV 逻辑卷:根据需要,在VG中划分适当大小存储空间,可以挂载到系统中。LV大小是可以调整的。
    • LE : 是LV的基本存储单位,和PE的大小相同且一一对应。

HD(硬盘) -> PV -> VG -> LV -> 挂载

pv 物理卷

  • pvscan 扫描物理卷
  • pvcreate 创建pv
  • pvdisplay 显示pv详情
  • pvremove 删除某个pv

vg 卷组

  • vgscan 扫描卷组
  • vgcreate
  • vgdisplay
  • vgremove
  • vgextend 扩容
  • vgreduce 缩小

lv 逻辑卷

  • lvscan
  • lvcreate
  • lvdisplay
  • lvremove
  • vgextend 扩容
  • vgreduce 缩小
# 创建lv逻辑卷
# 1.创建pv,将硬盘转换为pv
pvcreate /dev/sd{b,c}

# 2.创建vg,将pv合并成vg
vgcreate vg-1 /dev/sd{b,c}

# 3.创建lv(逻辑卷)
lvcreate -n lv-0 -L 5G vg-1
-n --name 逻辑卷的名字
-l  LE 的数量  10 * 4M => 40M
-L  大小    5G
vg-1 是卷组的名称

# 4.格式化lv
mkfs.ext4 /dev/vg-1/lv-0

# 5.挂载
mount /dev/vg-1/lv-0 /app
# 扩展(扩容)
# 1.卸载
umount /dev/mapper/vg--1-lv--0 
# 2.扩容设置新的大小
lvextend -L 30G  /dev/vg-1/lv-0
# 3.检测容量
e2fsck -f /dev/vg-1/lv-0
# 4.手动进行同步,lv分区数据
resize2fs /dev/vg-1/lv-0
# 5.重新挂载
mount /dev/mapper/vg--1-lv--0 /app/
# 缩小容量
# 1.卸载分区
umount /dev/mapper/vg--1-lv--0 
# 2.检测完整性
e2fsck -f /dev/mapper/vg--1-lv--0 
# 3.手动进行同步,不报错才能执行下一步
resize2fs /dev/mapper/vg--1-lv--0  15G
# 4.执行缩容
lvreduce -L 15G /dev/vg-1/lv-0 
# 5.重新挂载
mount /dev/mapper/vg--1-lv--0 /app/
# 6.检查
df -h
  • 作业:
    • 1.练习lv创建、扩容、缩容
    • 2.了解vg的扩容和缩容
    • 3.删除lv、vg、pv

数据条带化:将数据分块分别存储在不同设备中。

RAID(冗余阵列独立磁盘)

RAID 0 : 串联硬盘,至少两块硬盘,数据依次分散所有磁盘中。

  • 优点:容量利用率最大,读写速度和磁盘数量成正比。
  • 缺点:安全性差,任意一块硬盘数据损坏,所有数据都会丢失。
  • RAID 0 一时爽,数据火葬场。

RAID 1: 并联硬盘,至少两块硬盘,所有硬盘中数据完全一致。“镜像”

  • 优点:安全,冗余性高,数据自动同步,只要不是所有硬盘同时损害,就能恢复。
  • 缺点:容量利用率低 1/n,不能提升性能。

RAID 5: 至少三块硬盘,通过奇偶校验,任何一块硬盘损害,都可以通过另外两块恢复回来。

  • “妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
  • 2/3的容量,速度较快。

RAID 10:至少四块硬盘,先两两组成RAID1,再组RAID0。

  • 优点:兼顾了冗余(安全)和速度(性能)。
  • 缺点:性价比低,但是企业对数据存储要求较高,钱不是问题。

硬件RAID -> RAID卡

软件RAID -> 通过命令创建

yum install mdadm

# 添加4块相同容量的硬盘
[root@server-01 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk 
└─sda1   8:1    0   60G  0 part /
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sde      8:64   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

# mdadm命令的常用参数和作用
-C 创建RAID
-v 显示创建过程
-l 指定RAID的级别,例如 -l 10 就是RAID10级别
-n 设置硬盘的数量
-D 查看RAID详情
-f 模拟损坏
-r 移除设备
-Q 查看摘要信息
-a 检测设备名

# 创建
[root@server-01 ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd{b,c,d,e}

# 查看创建详情
[root@server-01 ~]# mdadm -D /dev/md0

计划任务

定时执行某些脚本或命令。

时间同步,定时备份、定时清理日志、定时发送邮件、短信、钉钉等任务。

at: 一次性定时任务。

# 安装atd d表示后台执行
[root@server-01 ~]# yum install at
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
软件包 at-3.1.13-25.el7_9.x86_64 已安装并且是最新版本
无须任何处理
[root@server-01 ~]# systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
[root@server-01 ~]# systemctl start atd
[root@server-01 ~]# systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2024-07-23 17:10:02 CST; 1s ago
 Main PID: 26397 (atd)
   CGroup: /system.slice/atd.service
           └─26397 /usr/sbin/atd -f

7月 23 17:10:02 server-01 systemd[1]: Started Job spool...
Hint: Some lines were ellipsized, use -l to show in full.

[root@server-01 ~]# at 17:10
at> init 6       
at> <EOT>  
job 2 at Wed Jul 24 17:10:00 2024

Ctrl + d 退出
  • crontab

    • -l 查看已有的定时任务。
    • -e 编辑定时任务
    • -r 删除当前用户所有定时任务
    分  时  日   月  周 
    30  3   *   *   *  执行的命令
    00  *   *   *   *  每小时整点都执行
    00  1   1   *   *  每月1号的1点整执行 
    30  2   *   *   0  每周日的2点30分钟执行
    */5 *   *   *   *  每隔5分钟执行一次
    00  */5  *   *   *  每隔5小时的整点执行

    分钟:0-59
    小时:0-23
    日期:1~31
    月份:1~12
    周:0~7  0和7都代表周日

    */3 每隔3分钟
    1,3,5,7 
    1-5