Linux思想继承自Unix
- Linux中一切皆文件。(把硬件设备、内存中部分数据映射成文件,方便系统管理员获取系统数据。)
- 一个命令只负责一个简单功能。复杂功能由简单命令组合完成。(管道符:命令的组合使用。)
- 命令执行中少交互。(尽量减少用户的操作,简洁、优雅、明确)
基础命令
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