原创

linux基础

Linux基础

一、Linux简介

1.什么是Linux?
Linux 是一种自由和开放源码的类 UNIX 操作系统。
Linux 英文解释为 Linux is not Unix。
Linux 是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。
2.Linux 是开源的
Linux 遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。
由于 Linux 是自由软件,任何人都可以创建一个符合自己需求的 Linux 发行版。
目前主流的 Linux 版本有:
Debian(及其派生版本Ubuntu、Linux Mint)
Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)
openSUSE
3.Linux系统基本概念
- 多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源
- 多任务的系统:允许同时执行多个任务
- 严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写
- 一切皆文件:硬件设备(内存、CPU、网卡、显示器、硬盘等等)都是以文件的形式存在的
- 不管是文件还是目录都是以倒挂的树形结构,存在于系统的“/”根目录下,根目录是Linux系统的起点
- 对于Linux系统而言,目录/文件没有扩展名一说,扩展名如:.sh(脚本文件)   .conf(配置文件) .log(日志文件)   .rpm(软件包).tar(压缩包)是易于用户方便识别
- Linux系统没有回收站
4.命令终端字段含义介绍
- [root@localhost ~]# 
- 解释:
  - root:当前登录系统用户名(root超级管理员)
  - localhost :当前主机名
  - ~:当前用户所在目录(~ 为家目录) ,root超级管理员家目录:/root
  - #: 当前用户身份是超级管理员
5.命令行一般命令格式
命令 [-选项]... [参数]...
- 命令:实现功能的指令
- 选项:调整命令功能的
  - 短选项:-l  -a  -d  -h(单个字母),短选项可以合并使用:-lad   
  - 长选项:--help(单词),长选项通常是不能合并使用的
- 参数:命令的执行对象,文件/目录/程序等
- []:可选的
- ...:可以同时有多个

二、Linux安装

1.VMware虚拟机

VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。

1.VMware虚拟机下载
2.VMware虚拟机安装
2.系统镜像

系统镜像是一种特殊的文件,它包含了操作系统安装所需的所有文件和设置,可以被视为操作系统的精确副本。系统镜像通常以ISO文件格式存在。

3.创建虚拟机
4.centos系统安装

本笔记用于centos7

三、Lnux系统目录结构

1.登录系统后输入ls /可以查看根下面的目录
[root@loaclhost ~]# ls /
bin  boot  dev  etc  home  root  run  sbin   tmp  usr  var  lib  lib64  mnt  opt  proc   srv  sys  media
2.目录解释
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:
 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
 该目录存放一些服务启动之后需要提取的数据。

/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

/usr:
 usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:
内核源代码默认的放置目录。

/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

四、Linux文件基本属性

1.Linux系统辨别目录与文件的方法
- 蓝色表示目录(windows系统里的文件夹)
- 白色表示文本文件
- 浅蓝色表示链接文件(类似于windows系统的快捷方式)
- 绿色表示可执行文件(如脚本,命令程序文件)
- 红色表示压缩文件
- 黄色表示设备文件(硬盘、键盘、鼠标、网卡、CPU硬件设备都是以文件的形式存在的)
- 红色闪动文件——>表示链接文件不可用
2.通过文件详细属性辨别
文件:	- 开头
目录:	d 开头
链接文件:	l 开头
硬件设备文件:b 开头
字符设备文件:c 开头
管道设备文件:p 开头
套接字: s 开头

3.ls 查看目录/文件命令
ls命令(英文全拼:list):用于列出目录下内容及目录和文件详细属性信息

- 命令格式:ls [-选项...] [参数...]
- 常用选项:
  - -a    显示目录下所有内容,包含隐藏的内容
  - -l     显示目录下的内容及详细属性
  - -h    以kB、MB、GB单位显示文件内容大小
  - -d    仅显示目录本身而不显示目录下的内容
  - -R    递归查看目录下所有内容(从头到尾)

举例说明:

[root@loaclhost /]# ll
总用量 28
lrwxrwxrwx.   1 root root    7 10月 28 2021 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 10月 28 2021 boot
drwxr-xr-x   19 root root 3100 12月 10 22:52 dev
lrwxrwxrwx.   1 root root    7 10月 28 2021 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 10月 28 2021 lib64 -> usr/lib64
-rwxr-xr-x.   2 root root    6 4月  11 2018 test

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等:
当为 d 则是目录
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

每个文件的属性由左边第一部分的 10 个字符来确定:
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

4.Linux文件属主和属组
[root@loaclhost /]# ll
drwxr-xr-x.  78 root root 8192 1月   3 10:09 etc
drwxr-xr-x.  13 mysql mysql  183 7月  30 17:02 mysql

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。

5.更改文件属性
1.chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2.chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

3.chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:
chmod [-R] xyz 文件或目录

选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

五、Linux 文件与目录管理

1.文件路径
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
绝对路径:
路径的写法,由根目录 / 写起,例如: /test/test/test 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /test/test/test 要到 /test/test/test1 底下时,可以写成: cd ../test1 这就是相对路径的写法。

2.处理文件/目录的常用命令
几个常见的处理目录的命令:
ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:make directory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 删除文件或目录
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

1.ls (列出目录)
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)

2.cd (切换目录)
cd [相对路径或绝对路径]

3.pwd (显示目前所在的目录)
选项与参数:
-P :显示出确实的路径,而非使用链接 (link) 路径。

4.mkdir (创建新目录)
mkdir [-mp] 目录名称
选项与参数:
-m :配置文件的权限!直接配置
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

5.rmdir (删除空的目录)
rmdir [-p] 目录名称
选项与参数:
-p :从该目录起,一次删除多级空目录

6.cp (复制文件或目录)
cp [参数] 需要复制的文件或目录 目标地址

选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用於目录的复制行为;(常用)
-s:复制成为符号链接档 ;

7.rm (删除文件或目录)
rm [-fir] 文件或目录

选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

8.mv (移动文件与目录,或修改名称)
mv [-fiu] 需要移动的文件 目标地址/新名称
选项与参数:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

9.touch 创建文件命令
touch 命令用于创建新的空白文件
- 命令格式:touch [-选项] 文件名
#在当前路径创建空文件
touch test

3.Linux 文件内容查看

查看文件常用命令

Linux系统中使用以下命令来查看文件的内容:

1.cat 查看文件内容命令
cat (英文全拼:concatenate)命令用于查看文本文件内容
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
-tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

2.more 命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter         :代表向下翻『一行』;
/字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f            :立刻显示出档名以及目前显示的行数;
q             :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

3.less命令
less命令:常用于查看内容量较大的文件,可以分页显示文件内容
less运行时可以输入的命令有:
空白键    :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;

4.head命令
head命令:用来显示文件开头部分内容,默认显示文件开头10行内容
选项与参数:
-n :后面接数字,代表显示几行的意思

5.tail命令
tail命令:用来显示文件末尾部分内容,默认显示文件末尾10行内容
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

4.文件的修改编辑
1.vi/vim

vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性

安装vim工具:yum -y install vim

2.vi/vim 的使用

vi/vim 共分为三种模式:分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

1)vim 文件名 便进入了命令模式
2)按键盘a/i进入输入模式
3)按ESC退出输入模式,直接进入命令模式
4)按英文:(冒号)切换到底线命令模式,wq保存并退出

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。
命令模式下常用的指令:
- a   切换到输入模式,当前光标向后移动一个位置
- i    切换到输入模式,当前光标不会移动位置
- o   切换到输入模式,在当前光标所在的行下,另起一个新行
- x    在命令模式下删除当前光标所在的单个字符
- C    删除当前光标及光标后所有内容并进入输入模式
- u    恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止
- ctrl +R 恢复到本次操作的前一个步骤
- $    将光标移动至行尾
- 0(零)    将光标移动至行首
- dd   删除一整行内容,配合数字可删除指定范围内的行
- yy    复制当前行,配合数字可以同时复制多行
- p    粘贴当前光标所在行下
- r      替换字符,一次只能替换一个字符,可以替换多次

输入模式:

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式

底线命令模式:

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式常用的指令:
- :w              保存
- :q              退出
- :wq           保存并退出
- :x               保存并退出
- ZZ              保存并退出
- :q!              强制退出不保存
- :wq!           强制保存并退出,适用于只读文件(没有写权限)
- :set nu      以行号形式显示文件内容
- :set nonu 取消行号显示
- :行号         快速跳转到指定行
- :%s            替换文件内容,g替换全文,默认只替换每一行匹配到的第一个关键字(数字s 指定替换的行)
- G               快速跳转到文件的最后一行
- gg              快速跳转到文件的行首
- /关键词     搜索指定的字符,n从上向下快速定位关键字,N从下向上快速定位关键字
- :nohl         取消高亮显示

5.软连接与硬连接

Linux中的链接文件类似于windows中的快捷方式

1.软连接
软链接特点:可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
- 软链接命令格式:ln -s 源文件路径  目标路径
注意:创建链接文件时一定要写绝对路径,哪怕是在当前路径下,也要写绝对路径·
1.创建一个文件并输入内容
touch file1&&echo 111 >file1
2.创建一个软链接
ln -s file1 ./file1.txt

2.硬链接
硬链接:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用(类似与对文件做了一个备份)
- 硬链接命令格式:ln  源文件路径  目标路径

6.文件查找
1.which:命令查找
[root@loaclhost ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls
或者whereis ls

2.find:文件查找、文件名
1、命令格式:
find pathname -options [expression][action]
命令	路径		选项		表达式			动作
[root@loaclhost ~]# find /etc -name hosts
/etc/hosts
参数:
-name	以文件名查找
-iname	忽略大小写
-size	以文件大小查找

3.locate:文件查找依赖数据库
[root@loaclhost ~]# locate hosts
/etc/hosts

7.文件打包及压缩
语法:
tar 选项 压缩包名称 源文件
打包:
tar -cf etc.tar /etc
解压:
tar -xf etc.tar 指定解压后存放路径
选项参数:
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

8.虚拟文件系统proc
1.简介

porc是一个虚拟文件系统,里面存放着进程id还有cpu及内存信息等。

2.查看CPU信息
[root@loaclhost /]# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz	-cpu型号
#查看cpu核心数
[root@loaclhost /]# lscpu |grep CPU
CPU(s):                4	-4核心
On-line CPU(s) list:   0-3
CPU 系列:          6
型号名称:        Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz

3.查看内存
[root@loaclhost /]# cat /proc/meminfo 
MemTotal:        3861360 kB	-总内存
MemFree:          420828 kB
MemAvailable:    1665892 kB
Buffers:            2108 kB
Cached:          2329924 kB

4.查看内核
[root@loaclhost /]# cat proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8

六、Linux 用户和用户组管理

1.添加新的用户账号使用useradd命令,其语法如下:
useradd 选项 用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名:
指定新账号的登录名。

2.删除帐号
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。

3.修改帐号
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

4.用户密码的管理
修改密码
passwd 选项 用户名

可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。

5.用户组的管理增加一个新的用户组
groupadd 选项 用户组

选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

6.删除用户组
groupdel 用户组

7.修改用户组的属性
groupmod 选项 用户组

常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

8.用户账号有关的系统文件
1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性,这个文件对所有用户都是可读的。
2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。
3、用户组的所有信息都存放在/etc/group文件中。

9.su切换用户
su命令用于变更用户,除 root 外,需要键入该使用者的密码。
语法:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
变更帐号为 root 并在执行 ls 指令后退出变回原使用者:
su -c ls root
变更帐号为 root 并传入 -f 参数给新执行的 shell:
su root -f
变更帐号为 test 并改变工作目录至:
su - test
参数说明:
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

10.sudo临时提权
sudo su - root

七、Linux进程管理

1.什么是进程?
什么是程序用计算机语言编写的命令序列集合,用来实现特定的目标或解决特定的问题,程序占用磁盘空间,程序是静态并且是永久的
什么是进程正在运行中的程序叫进程,占用内存空间,进程是动态的,进程是有生命周期的,进程有自己的独立内存空间,每启动一个进程,系统就会为它分配内存空间并分配一个PID号,每个进程都会对应一个父进程,而父进程可以复制多个子进程,每种进程都有两种方式存在,前台与后台,一般进程都是以后台方式运行
什么是线程线程也被称为轻量级进程,线程是操作系统能够进行运算与调度的最小单元,而线程是被包含在进程内,是进程中实际运作的单元,一个进程中可以并发多个线程,每条线程并行执行不同的任务,每个线程都是独立的,线程之间共享进程的内存空间,在多线程的程序中,由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中)
2.静态查看进程ps
1.查看所有进程
ps aux
# a 显示终端上的所有进程,包括其他用户的进程。 
#u用户信息归类的查看方式 
#x与终端相关无关的进程 
#f进程层级结构  
#e 列出程序时,显示每个程序所使用的环境变量

2.查看信息显示
[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.5  0.1 191252  4212 ?        Ss   21:45   0:04 /usr/lib/systemd/systemd 
root         2  0.0  0.0      0     0 ?        S    21:45   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    21:45   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    21:45   0:00 [kworker/0:0]
root         5  0.0  0.0      0     0 ?        S<   21:45   0:00 [kworker/0:0H]
# 说明
USER 进程属于的用户
PID 进程id
CPU 进程对的CPU占用量
MEM 进程对的内存占用量
VSZ	虚拟内存大小
RSS	内存中的数据大小
TTY	用到的终端
STST 状态
START 运行时长
TIME 时长
COMMAND 进程运行的文件路径

# 查看并筛选 跟进程名有关的进程,该进程名可以是进程的全部或者部分。
ps -ef|grep <进程名>

3.动态进程查看top

top命令动态来查看系统性能及运行状态信息(类似于windows资源管理器)

  • 命令格式:top [选项...]
  • 常用选项:-d #指定刷新秒数,默认为3秒刷新一次
  • 交互界面显示指令:
    • 键盘上下键翻行
    • h #获取交互模式帮助
    • P(大写) #按照CPU使用资源排序
    • M #按照内存使用资源排序
    • q #退出
1.查看动态进程
[root@loaclhost ~]# top
top - 10:00:38 up 22:38,  2 users,  load average: 0.02, 0.02, 0.05
Tasks: 151 total,   1 running, 150 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.4 us,  2.9 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3861360 total,   432072 free,   888368 used,  2540920 buff/cache
KiB Swap:  3145724 total,  3145724 free,        0 used.  1676860 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                     
103116 root      20   0  162124   2212   1552 R   6.2  0.1   0:00.02 top                                                                                         
     1 root      20   0  190880   3872   2592 S   0.0  0.1   0:50.06 systemd                                                                                     
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.07 kthreadd   

第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:10:00:38
运行时间:up 22:38,
当前登录用户:  2 users
负载均衡(uptime)  load average: 0.02, 0.02, 0.05
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

总进程:151 total, 运行:1 running, 休眠:150 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

1.4 us	— 用户空间占用CPU的百分比。
2.9 sy	— 内核空间占用CPU的百分比。
0.0 ni	— 改变过优先级的进程占用CPU的百分比
95.7 id	— 空闲CPU百分比
0.0 wa	— IO等待占用CPU的百分比
0.0 hi	— 硬中断占用CPU的百分比
0.0 st	— 软中断占用CPU的百分比

第四行,内存状态

KiB Mem :  3763564 total,   139484 free,  1349156 used,  2274924 buff/cache
内存状态			总内存			使用内存		剩余内存		缓存内存

第五行,swap交换分区信息

KiB Swap:  4194300 total,  4194292 free,        8 used.  1112704 avail Mem 
Swap分区		总分区			使用的分区量			剩余量		缓冲量

第六行,空行

第七行以下:各进程(任务)的状态监控

PID 	USER      PR  	NI    VIRT    RES       SHR S  	  %CPU 	  %MEM    TIME+   COMMAND
进程id  使用用户	 优先级 nice值 虚拟内存 未换出内存	共享内存  CPU百分比  内存占用 使用时间  名称

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

2.参数
-b 指定每两次屏幕信息刷新之间的时间间隔
-c 显示整个命令行而不只是显示命令名
-s 保密模式
-S 指定累计模式
-i 使top不显示任何闲置或者僵死的进程
-u 指定用户名
-p 通过指定PID来仅仅监控某个进程的状态

4.控制进程kill
1.列出所有支持的信号
[root@loaclhost ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

2.常用说明
1)SIGHUP:重新加载配置
2)SIGINT:键盘中断Ctrl+C
3)SIGQUIT:键盘退出Ctrl+\,类似SIGINT
9)SIGILL:强制终止,无条件
15)SIGTERM:终止(正常结束),缺省信号
18)SIGCONT:继续
19)SIGSTOP:暂停
20)SIGTSTP:键盘暂停Ctrl+Z

3.最常用
kill -9 进程id	-杀掉进程
kill -15 进程id	-终止程序

5.进程优先级
1.查看进程优先级
[root@loaclhost ~]# ps axo pid,command,nice  --sort=-nice
   PID COMMAND                      NI
    48 [khugepaged]                 19
    47 [ksmd]                        5
     1 /usr/lib/systemd/systemd --   0
#in数字越小,优先级越高

2.启动程序时设置优先级
nice -n -5 sleep 6000 &
ps axo command,pid,nice | grep sleep

3.调整已经启动程序的优先级
renice -20 进程id

6.pgrep检索进程
  • pgrep 通过匹配其程序名,找到匹配的进程
  • 命令格式:pgrep [选项...] [参数...]
  • 常用选项:
    • -l #输出进程名与PID
    • -U #检索指定用户进程
    • -t #检索指定终端进程
    • -x #精确匹配完整进程名
#过滤sshd进程
[root@localhost ~]# pgrep sshd
7337
8880
15066
15086
17027

过滤sshd进程,并显示进程名称
[root@localhost ~]# pgrep -l sshd
7337 sshd
8880 sshd
15066 sshd
15086 sshd
17027 sshd

#过滤指定用户的进程
[root@localhost ~]# pgrep -lU lisi
15086 sshd
15089 bash
15244 vim

#按照用户名过滤进程时,选项不要颠倒
[root@localhost ~]# pgrep -Ul lisi
pgrep: invalid user name: l


#查看系统所有终端用户
[root@localhost ~]# who
root     pts/0        2021-04-24 14:06 (192.168.0.1)
lisi     pts/1        2021-04-24 15:57 (192.168.0.1)
root     pts/2        2021-04-24 16:29 (192.168.0.1)

#过滤用户在指定终端开启的进程信息
[root@localhost ~]# pgrep -lU lisi -t pts/1
15089 bash
15244 vim

#过滤用户在指定终端开启的进程信息
[root@localhost ~]# pgrep -lU lisi -t pts/3
19704 bash
19754 top

#精确匹配进程名(没有则不显示)
[root@localhost ~]# pgrep -x ssh

#精确匹配进程名
[root@localhost ~]# pgrep -xl crond
7362 crond

7.进程的前后台调度
  • & #将进程放入后台运行
  • jobs -l #查看后台进程列表
  • fg 进程编号 #将后台进程恢复至前台运行
  • ctrl + z 组合键 #挂起当前进程并放入后台
  • bg 进程编号 #激活后台被挂起进程
#在有时候运行程序时会占用前台屏幕,所以需要用到后台运行
#后台运行方式
nice -n -5 sleep 6000 &	-在后面添加一个&符号就可以实现后台运行
#查看后台运行的程序
[root@loaclhost ~]# jobs
[1]-  运行中               sleep 6000 &
[2]+  运行中               sleep 6000 &
#调用后台运行程序
fg 作业号
#前台运行变成后台运行
Ctrl +z
然后使用bg 作业号

八、Linux重定向和管道

1.重定向和管道是什么?
重定向就是将标准输出,导向一个文件或者追加到一个文件中。在linux中,使用>符号来表示导向到一个文件,使用>>符号来表示追加到一个文件。
管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。管道的符号用|表示。

2.重定向示例
#重定向可以把输出的内容重定向到其他文件,比如将当前时间重定向到文件
[root@loaclhost ~]# date > date.txt
[root@loaclhost ~]# ll
-rw-r--r--  1 root root       43 1月   4 14:39 date.txt
[root@loaclhost ~]# cat date.txt 
2023年 01月 04日 星期三 14:39:07 CST
#如果是不想看的信息可以直接重定向到空洞里面
date > /dev/null
#FD简介
在linux中,由于标准输入(/dev/stdin)、标准输出(/dev/stdout)、标准错误(/dev/stderr)本质上都是一个文件,这三个文件用于处理系统的输入输出以及错误,而在linux系统中,这三个设备文件对应的文件描述符分别为0、1、2,可以通过这些文件描述符将终端的标准输入作为命令的输入和标准输出作为命令的输出。
#标准输出
echo 123 > temp.txt
追加
echo 123 >> temp.txt
#标准错误输出
ls /aaaa 2> temp.txt
追加
ls /aaaa 2>> temp.txt

3.进程管道piping
#语法
指令1|指令2|指令3
将指令1的标准输出作为指令2的标准输入
#案列
[root@loaclhost ~]# cat /etc/passwd|wc 
     20      29     894
[root@loaclhost ~]# ps -ef|grep sshd
root       1107      1  0 1月03 ?       00:00:00 /usr/sbin/sshd -D

4.tee管道
tee会将输入内容额外的保存到文件中
#案列
[root@loaclhost ~]# cat /etc/passwd|tail -1|tee date.txt
oracle:x:1000:1000::/home/oracle:/bin/bash
[root@loaclhost ~]# cat date.txt 
oracle:x:1000:1000::/home/oracle:/bin/bash
参数	                               功能
-a,–append	                 追加模式;默认为覆盖模式
-i,–ignore-interrupts	     忽略中断信号
–help	                     帮助信息
–version	                 版本信息

5.参数传递xargs
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
[root@loaclhost ~]# ll
-rw-r--r--  1 root root        0 1月   4 16:46 file1
-rw-r--r--  1 root root        0 1月   4 16:46 file2
-rw-r--r--  1 root root        0 1月   4 16:46 file3
-rw-r--r--  1 root root        0 1月   4 16:46 file4
-rw-r--r--  1 root root        0 1月   4 16:46 file5
-rw-r--r--  1 root root       36 1月   4 16:49 files.txt
[root@loaclhost ~]# cat files.txt 
file1
file2
file3
file3
file4
file5
[root@loaclhost ~]# cat files.txt |xargs rm -rf
[root@loaclhost ~]# ll
-rw-r--r--  1 root root       36 1月   4 16:49 files.txt

九、Linux磁盘管理

1.磁盘简介

磁盘,硬盘,disk是同一个东西,用于存放数据。

磁盘类型介绍:

- IDE接口类型:比较古老的磁盘种类,优点价格便宜,缺点数据传输速度慢
- SCSI接口类型:早期主要用于服务器理领域
- SAS接口类型:目前在服务器领域比较流行,数据传出速度快(磁盘转速),支持在线更换硬盘
- SATA接口类型:跟SAS类似
- SSD接口类型:固态硬盘接口,价格昂贵,数据传输速度快,利用内存的机制读写数据,主要应用在个人电脑
- NVMe接口类型:固态硬盘接口,价格昂贵,数据传输速度快,利用内存的机制读写数据

df查看分区使用情况:

df命令用于查看文件系统使用情况
- 命令格式:df [选项...] [参数...]
- 常用选项:
  - -h  以人类易读方式显示文件系统容量
  - T    显示文件系统类型
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 898M     0  898M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M   26M  885M    3% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root   26G  1.5G   25G    6% /
/dev/sda1               1014M  149M  866M   15% /boot
tmpfs                    182M     0  182M    0% /run/user/0

lsblk查看系统所有磁盘信息:

#列出当前系统所有磁盘与磁盘内的分区信息
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk #未分配的
sdc               8:32   0    2G  0 disk #未分配的
sdd               8:48   0    2G  0 disk #未分配的
sr0              11:0    1 1024M  0 rom

#解释:
NAME		#设备名称
MAJ:MIN		#主设备号:次设备号,内核通过主次设备号识别磁盘
RM			#是否为可卸载设备,1可卸载,0不可卸载
SIZE		#设备的容量大小
RO			#表示设备是否为只读,0非只读设备,1只读设备
TYPE		#表示设备类型(disk为磁盘,part为分区,lvm逻辑卷,rom只读)
MOUNTPOINT	#设备挂载点(SWAP没有挂载点)

2.磁盘分区
1.MBR分区格式

比较古老的分区格式,最初只能划分4个主分区,后来新增加扩展分区(容器)功能,可在扩展分区内划分更多逻辑分区,最大支持2.2T磁盘容量

fdisk命令用于查看磁盘使用情况和磁盘分区(MBR分区格式)

  • 命令格式:fdisk [选项...] [设备路径]
  • 常用选项:-l 列出磁盘分区表类型与分区信息

分区示范:

#查看空余的磁盘,ddb,sdc,sdd都是空余的,都可以进行分区
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk 
sdc               8:32   0    2G  0 disk 
sdd               8:48   0    2G  0 disk 
sr0              11:0    1 1024M  0 rom
#挑选sdb进行分区
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x24ec8aa1 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
m	#获取命令帮助	    ※
p	#显示磁盘分区表   ※
n	#新增加一个分区   ※
q	#不保存分区退出   ※
d	#删除一个分区     ※
w	#保存分区退出     ※
a	#设置可引导标记
b	#编辑bsd磁盘标签
c	#设置DOS操作系统兼容标记
l	#显示已知的文件系统类型,82为swap交换分区,83为Linux分区
o	#建立空白DOS分区表
s	#新建空白SUN磁盘标签
t	#改变分区的系统ID
u	#改变显示记录单位
v	#验证分区表
x	#附加功能
#新建一个分区
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free) #主分区
   e   extended #扩展分区
Select (default p): #回车
Using default response p
分区号 (1-4,默认 1): #回车
起始 扇区 (2048-4194303,默认为 2048):#回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303):+1G   
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):
#查看刚建的分区
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x24ec8aa1
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
#如果一个不够可以创建更多的分区,创建第二个分区
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (2099200-4194303,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-4194303,默认为 4194303):+500M
分区 2 已设置为 Linux 类型,大小设为 500 MiB
命令(输入 m 获取帮助):
#删除一个分区
命令(输入 m 获取帮助):d2
分区号 (1,2,默认 2):#回车
分区 2 已删除
#最后保存分区
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

分完区可以使用lsblk进行查看分区情况

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk 
└─sdb1            8:17   0    1G  0 part #已经进行分区
sdc               8:32   0    2G  0 disk 
sdd               8:48   0    2G  0 disk 
sr0              11:0    1 1024M  0 rom

如何使用创建的分区

#创建一个目录用来挂载我们分区
mkdir /test

格式化文件系统

#文件管理系统,赋予分区文件系统,分区才可以正常的使用:
CentOS5:分区默认使用文件系统类型ext3
CentOS6:分区默认使用文件系统类型ext4
CentOS7:分区默认使用文件系统类型xfs

#mkfs命令用于在分区上建立文件系统
- 常用文件系统类型:ext4,xfs
- 命令格式:
  - mkfs.xfs    分区设备路径     #格式化为xfs类型文件系统
  - mkfs.ext4  分区设备路径  #格式化为ext4类型文件系统

#格式化文件系统
[root@localhost ~]# mkfs.xfs /dev/sdb1
#格式化后可以使用lsblk -f查看
[root@localhost ~]# lsblk -f /dev/sdb1

mount挂载

在Linux系统中用户无法直接使用硬件设备的,硬件设备在系统中都是以只读的方式存在的,必须挂载,挂载就是给我们用户提供一个可以使用设备的一个接口

挂载注意事项:

  • 挂载点必须是一个目录,理论上还得是一个空目录
  • 一个分区不允许重复挂载到多个目录下
  • 一个目录不允许重复挂载多个文件系统
#挂载文件系统
[root@localhost ~]# mount  /dev/sdb1 /test
#查看挂载情况
[root@localhost ~]# df -h /test
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdb1      1014M   33M  982M    4% /test #已经挂载成功

umount卸载

umount命令用于卸载文件系统

  • 命令格式:umount 挂载点目录
#如果挂载错误可以使用一下命令卸载挂载
[root@localhost ~]# umount /dev/sdb1

开机自动挂载

此时的挂载还处于临时挂载,如果需要永久挂载还需要去文件系统中添加,/etc/fstab用于存放文件系统信息,当系统启动时,系统会自动读取文件内容将指定的文件系统挂载到指定的目录

vim /etc/fstab
/dev/sdb1               /test              xfs    defaults        0 0

#解释:该文件内容为6个字段,每个字段详解如下
第一个字段:要挂载的设备路径
第二个字段:挂载点目录
第三个字段:设备文件系统类型
第四个字段:挂载参数,参数如下↓
sync,async:  此文件系统是否使用同步写入 (sync) 或异步 (async) 的内存机制,默认为异步(async) 
atime,noatime:更新访问时间/不更新访问时间,访问分区时,是否更新文件的访问时间,默认为更新
ro,rw:挂载文件为只读(ro)或读写(rw),默认为rw
auto,noauto:自动挂载/手动挂载,执行mount -a时,是否自动挂载/etc/fstab文件内容,默认为自动(auto)
dev,nodev:是否允许此文件系统上,可建立装置文件,默认为允许(dev)
suid,nosuid:是否允许文件系统上含有SUID与SGID特殊权限,默认为允许(SUID)
exec,noexec:是否允许文件系统上拥有可执行文件,默认为允许(exec)
user,nouser:是否允许普通用户执行挂载操作,默认为不允许(nouser),只有root用户可以挂载分区
defaults默认值:代表async,rw,auto,dev,suid,exec,nouser七个选项
第五个字段:是否对文件系统进行备份,0不备份,1为备份
第六个字段:是否检查文件系统挂载顺序,0不检测
#最后执行mount -a
mount常用选项:-a:依照配置文件/etc/fstab的数据将所有未挂载的分区都挂载上来

2.GPT分区格式

GPT分区格式:可划分128个主分区,最大支持18EB磁盘容量(1EB=1024PB,1PB=1024TB,1TB=1024GB)

gdisk命令用于查看磁盘使用情况和磁盘分区(GPT分区格式)

  • 命令格式:gdisk [选项...] [设备路径]
  • 常用选项:-l 列出磁盘分区表类型与分区信息

备注:此分区用得少不做演示

3.逻辑卷LVM

逻辑卷:LVM(Logical Volume Manager)逻辑卷管理系统,逻辑卷可以实现将底层的物理分区整合成一个大的虚拟硬盘,这个虚拟硬盘可以实现无限扩容

1.逻辑卷管理命令
功能物理卷管理卷组管理逻辑卷管理
create 创建pvcreatevgcreatelvcreate
display 显示pvdisplayvgdisplaylvdisplay
remove 删除pvremovevgremovelvremove
extend 扩展vgextendlvextend
2.逻辑卷分区示范
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk 
└─sdb1            8:17   0    1G  0 part /mnt/disk1
sdc               8:32   0    2G  0 disk	#未被分配

#pv将物理磁盘转换成物理卷
[root@localhost ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
#pvs查看创建好的物理卷
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <29.00g    0 #系统原本就有的
  /dev/sdc          lvm2 ---    2.00g 2.00g #我们自己创建的
#vg创建物理卷组
[root@localhost ~]# vgcreate vg1 /dev/sdc
  Volume group "vg1" successfully created
#vgs查看已经创建好的卷组
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <29.00g     0 
  vg1      1   0   0 wz--n-  <2.00g <2.00g
#lv创建逻辑卷
lvcreate -L大小 -n卷名 卷组名
[root@localhost ~]# lvcreate -L +1.8G -n lv1 vg1
  Rounding up size to full physical extent 1.80 GiB
  Logical volume "lv1" created.

创建文件系统并挂载

#创建文件系统/格式化
[root@localhost ~]# mkfs.xfs /dev/vg1/lv1
#创建
[root@localhost ~]# mkdir /test2
#挂载
[root@localhost ~]# mount /dev/vg1/lv1 /test2
#查看挂载情况
[root@localhost ~]# df -h /test2
/dev/mapper/vg1-lv1      1.8G   33M  1.8G    2% /test2
#最后在文件系统中添加开机自动挂载
vim /etc/fstab
/dev/mapper/vg1-lv1 /test2 xfs defaults        0 0

3.lv扩容
pvcreate /dev/sdd
vgextend centos /dev/sdd
lvextend -L +2G /dev/mapper/centos-root
#刷新
resize2fs或xfs_growfs /dev/mapper/centos-root

#示范
[root@localhost ~]# df -h /test2
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1      1.8G   33M  1.8G    2% /test2 #将此进行扩容
#查看可用硬盘
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd               8:48   0    2G  0 disk #还有一个快硬盘没有使用
#将物理磁盘转换成物理卷
[root@localhost ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
#查看物理卷
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <29.00g      0 
  /dev/sdc   vg1    lvm2 a--   <2.00g 200.00m
  /dev/sdd          lvm2 ---    2.00g   2.00g
# 将/dev/sdd转换成扩展卷组
[root@localhost ~]# vgextend vg1 /dev/sdd
  Volume group "vg1" successfully extended
# 查看物理卷
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <29.00g      0 
  /dev/sdc   vg1    lvm2 a--   <2.00g 200.00m
  /dev/sdd   vg1    lvm2 a--   <2.00g  <2.00g #此时已经添加到了vg1卷组中
#查看卷组中还有多少空间可以使用
[root@localhost ~]# vgs
VG     #PV #LV #SN Attr   VSize   VFree
centos   1   2   0 wz--n- <29.00g    0 
vg1      2   1   0 wz--n-   3.99g 2.19g #此时还剩2.19G
#将空间扩展到逻辑卷中
[root@localhost ~]# lvextend -L +2G /dev/mapper/vg1-lv1
  Size of logical volume vg1/lv1 changed from 1.80 GiB (461 extents) to 3.80 GiB (973 extents).
  Logical volume vg1/lv1 successfully resized.
#刷新逻辑卷
[root@localhost ~]# xfs_growfs /dev/mapper/vg1-lv1
meta-data=/dev/mapper/vg1-lv1    isize=512    agcount=4, agsize=118016 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=472064, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 472064 to 996352
#查看磁盘空间
[root@localhost ~]# df -h /test2
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1      3.8G   33M  3.8G    1% /test2

4.交换分区管理swap

swap文件系统:交换分区,拿硬盘空间去充当(虚拟)内存去使用可以防止OOM,但是会降低服务器的性能,swap一般设置为内存的2倍

# 临时关闭swap分区功能
[root@localhost ~]# swapoff -a 
#永久关闭需要修改/etc/fstab文件,注释swap一行即可,需要经历重启后生效
vim  /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
#最后使用free -m查看

5.raid

RAID中文全称:独立磁盘冗余阵列 ,简称磁盘阵列RAID可通过技术(软件/硬件)将多个独立的磁盘整合成一个巨大容量大逻辑磁盘使用,RAID可以提高数据I/O(读写)速度,和冗余数据的功能

RAID级别:

RAID0等量存储,至少由2块磁盘组成,同一个文档等量存放在不同的磁盘并行写入数据来提高效率,但只是单纯的提高效率,并没有冗余功能,如果其中一块盘故障,数据会丢失,不适合存放重要数据
RAID1完整备份,至少由两块磁组成,同一个文档复制成多份存储到不同磁盘提高可靠性,读写速度没有提升,反而下降了,适合存储重要的数据
RAID2至少由3块磁盘组成,数据分散存储在不同磁盘,在读写数据时需要对数据时时校验,由于采用的校验算法复杂,数据量比原有数据增大,而且导致硬件开销较大
RAID3至少由三块磁盘组成,同一份文档分散写入不同的磁盘,校验数据单独存放在另外一块磁盘,由于每次读写操作都会访问校验盘,容易导致校验盘长时间高负荷工作而挂掉,如果校验盘损坏数据将无法恢复
RAID4与RAID3类似,至少由3块磁盘组成,同一份文档分散存写入不同磁盘,校验数据单独存放在另外一块磁盘,由于每次读写操作都会访问校验盘,容易导致校验盘长时间高负荷工作而挂掉,如果校验盘损坏数据将无法恢复,与RAID3的区别是数据分割方式不一样
RAID5至少由3块磁盘组成,同一份文档分散写入不同磁盘,每个硬盘都有校验数据,其中校验数据会占用磁盘三分之一的空间,三分之二的空间存放原始数据,允许同时坏一块磁盘,当一块磁盘损坏,其他磁盘里的数据配合校验信息可将数据恢复回来

实现RAID方式:

通过软件技术实现RAID功能(软RAID),不稳定
外接式磁盘阵列柜,被常用在大型服务器上,不过这类产品价格昂贵
RAID磁盘阵列卡,分为服务器自带和额外安装,硬RAID比软RAID更安全稳定,RAID卡带有缓存功能可实现数据自动恢复,RAID卡有电池
1.准备四块盘
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk 
sdc               8:32   0    2G  0 disk 
sdd               8:48   0    2G  0 disk 
sde               8:64   0    2G  0 disk
3块数据盘+一块热备盘

2.创建raid
mdadm -C  /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e}
-C 创建RAID
/dev/md0 第一个RAID设备
-l5  RAID5
-n RAID成员数量
-x 热备磁盘数量
可用空间2G

3.格式化,挂载
[root@localhost ~]# mkfs.ext4   /dev/md0
[root@localhost ~]# mkdir /raid
[root@localhost ~]# mount  /dev/md0   /raid

4.查看raid信息
mdadm -D /dev/md0

5.模拟一块磁盘损坏,并移除
 watch  -n0.5  ‘mdadm -D /dev/md0 | tail -10’  #持续查看
 mdadm  /dev/md0 -f /dev/sdb -r /dev/sdb	#强制移除一块磁盘

十、Linux软件管理

1.Linux软件类型
开源软件软件源代码开放,供用户免费学习,允许用户二次开发,用户使用放心,后期开发者不维护,有人提我们维护!
闭源软件软件源代码不公开发布,无法二次开发,后期开发者不维护对公司损失很大!
2.RPM包管理

在Linux中,软件包分为rpm包和源码包

rpm包: 由红帽公司提出,rpm无需编译,直接使用。无法设定个人设置,开关功能。

源码包:需要编译才能使用,可以设定个人设置,开关功能。

1.YUM工具

yum是Redhat和centos中shell前端软件包管理器

#使用yum安装软件
yum -y install 软件名
#重新安装
yum -y reinstall 软件名
#升级安装
yum -y update 软件名
#查询程序
yum list 软件名
yum provides 命令或软件名
#列出仓库中具体软件包所有版本
yum --showduplicates list
#卸载软件
yum remove 软件名
#清除仓库缓存
yum clean all 
#生成缓存
yum makecache

2.配置yum仓库/yum源
配置yum源的步骤
1.备份原有的yum源
mv CentOS-Base.repo CentOS-Base.repo.bak
2.配置yum源,找到阿里云的官方镜像源地址 https://developer.aliyun.com/mirror/
3.下载centos7的yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4.清空旧的yum缓存
yum clean all
5.生成新的yum仓库缓存
yum makecache
6.配置一个第三方的 额外仓库源 (epel源),这个源的作用是,如果阿里云源找不到这个软件,就在这里找
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
7.yum文件详情
[base]	源名称
name=CentOS-$releasever - Base	描述
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1	开关
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3.RPM工具

命令格式:rpm 选项... 软件包全名

常用选项:

- -q         #仅查询软件是否安装(精确查询:软件包名称要输入正确,少一个字母都查不出来)
- -qa       #列出所有已经安装在系统中的所有软件,可配合grep过滤指定的软件包(模糊查询)
- -qi        #列出软件包详细信息,包含版本与官网地址
- -qf       #后边接文件名,查询配置文件由哪个软件包产生(无法查询一个不存在的文件)
- -ql        #后边接包名,列出与该软件包相关所有文件与目录的存放位置
- -ivh      #i安装,v显示详细信息,h显示软件安装进度
- -Uvh    #升级安装软件包(升级时要做好相关配置文件的备份)
- -e         #卸载软件包
- --nodesps #卸载软件包时忽略依赖关系(了解)
- --import   #导入红帽签名文件

十一、Linux计划任务

1.简介

计划任务主要是做一些周期性的任务,目前主要的用途是定期备份等。

2.一次性调度执行at
1.语法
at [TIMESPEC]
2.示例
now  +5min
teatime  tomorrow(teatime  is  14:00)
noon  +4  days
5pm  august  3  2029
4:00  2019-11-27
3.例
at now +1min回车
at>ll /etc  ctrl+d提交
at><EOT>
4.查看任务
atq

3.循环调度执行cron

cron的概念和crontab是不可分的,crontab是一个命令,常见于Linux操作系统中,用于设置周期性被执行的命令,存放于/etc/crontab。

# Example of job definition:
# .---------------- 分钟 (0 - 59)
# |  .------------- 小时 (0 - 23)
# |  |  .---------- 号 (1 - 31)
# |  |  |  .------- 月 (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- 周 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

1.插看进程状态
systemctl status cornd

2.管理方式
1.创建计划
crontab -e
2.查询计划
crontab -l
管理员可以用-u去管理其他用户的计划任务
3.删除计划
crontab -r

十二、Linux日志管理

1.rsyslog系统日志管理

linux日志是非常重要的,不仅在日常操作中可以迅速排错,也可以快速的定位 日志保存的位置默认日志位于/var/log目录下。

1.确定服务启动
ps -aux | grep rsyslogd #系统转职日志程序,处理绝大部分日志记录,如系统操作有关信息。

2.查看服务是否自启动
systemctl list-unit-files | grep rsyslog

3.常见的日志文件
1.系统主日志文件
tail -f /var/log/messages
2.安全,系统登陆日志
tail -f /var/log/secure
3.定时任务日志
/var/log/cron
4.邮件日志
/var/log/maillog
5.系统启动日志
/var/log/boot.log

4.rsyslogd配置
1.相关程序
yum -y install rsyslog logrotate	#默认已安装
2.启动程序
systemctl start rsyslog
3.相关文件
/etc/rsyslog.conf	#主配置文件

2.logrotate日志轮转

将大量的日志分割管理,删除旧日志。

1.主配置文件
/etc/logrotate.conf		#系统默认已经配置,决定每个日志如何轮转
#文件内容
weekly	#轮转周期一周轮转
rotate 4	#保留4份,保留4个星期的
create		#轮转后创建新文件,把旧文件改名
dateext		#使用日期时间作为文件的扩展名
include /etc/logrotate.d	#引入子配置文件
/var/log/wtmp {	#单独对某日志设置轮转方法
    monthly		#每月轮转一次
    create 0664 root utmp	#轮转后创建新文件并设置权限
        minsize 1M	#达到1M以后才轮转
    rotate 1	#保留一份
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

2.子配置文件
/etc/logrotate.d/		#自己配置最好在子配置文件中配置

3.示例
/nginx/logs/access.log{
weekly
create 0600 root root
minsize 1M
rotate 2
}

十三、Linux网络管理

概念:网络是个复杂的信息技术,是计算机数据信息传输的底层技术。

1.查看IP地址
ip -a 或者使用ifconfig

2.管理网络的服务

1.Linux网络管理服务network
systemctl status network

3.网络配置工具及路径
vim /etc/sysconfig/network-scripts/ifcfg-ens32

4.网络配置参数
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"		#手动还是自动获取IP地址(自动获取dhcp)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"		#网卡名称
UUID="2a28f6f8-c188-4415-b960-42b19519a04b"
DEVICE="ens32"
ONBOOT="yes"		#是否开机启用该设备
IPADDR=192.168.0.119		#配置IP地址
NETMASK=255.255.255.0		#配置子网掩码
GATEWAY=192.168.0.1			#配置网关
DNS1=114.114.114.114		#配置DNS
DNS2=8.8.8.8

5.重启网卡服务
systemctl restart network或者service network restart

十四、Linux文件传输服务

1.FTP

FTP是TCP/IP协议组中应用层的协议之一,可以用来传输文件,ftp服务会产生两个端口,控制端口21和数据端口20

1.安装vsftp
yum -y install vsftpd

2.准备分发的文件
touch /var/ftp/abc.txt

3.启动服务
systemctl start vsftpd

4.配置文件
vim /etc/vsftpd/vsftpd.conf
#详解
anonymous_enable=YES	#启用禁止匿名账号
anon_upload_enable=YES	#启动上传文件的能力
anon_mkdir_write_enable=YES	#启动创建文件的能力

2.SSH

ssh安全外壳协议,可以借助他远程操作和管理系统

1.查询是否安装ssh
rpm -qa |grep ssh
如果没有安装先安装
yum -y install openssh-server

2.启动
systemctl start sshd
#查看端口
netstat -anp|grep sshd/22	#默认端口22

3.使用ssh远程登录
ssh 用户名@IP地址

4.免密登录
#生成秘钥
ssh-keygen
#传递秘钥
ssh-copy-id ip 

5.更换或添加ssh端口
vim /etc/ssh/sshd_config
Port 22
Port 2222
#重启
systemctl restart sshd

十五、Linux防火墙

linux自带了防火墙,分别是iptables和firewalld,防火墙主要是保护互联网对服务器的影响;centos7以下使用iptables,centos7以上版本使用的是firewalld。

1.iptables

iptables防火墙工作在2,3,4层,对tcp/ip数据包进行过滤和限制,属于包过滤防火墙。iptables有四表五链分别是:filter过滤/nat装换/mangle碾压/raw生的。五链:prerouting预路由,postouting已路由,input入站,output出站,forword转发。

1.iptables的安装
yum -y install iptables iptables-server
#查看版本
iptables -V
#启停iptables
service iptables start
service iptables stop

2.配置文件
#iptables配置文件
/etc/sysconfig/iptables-config
#规则记录文件
/etc/sysconfig/iptables

3.iptables主机型规则基本语法
#语法
iptables -t 表名 管理选项 [链名][匹配条件][-j 控制类型]
#参数选项
-t 表名 #每个表都可以用,不写默认为filter
选项管理 #操作方式如:插入,删除,查看等
匹配条件 #数据包特征ip,端口等
控制类型 #数据包处理方式:accept允许,reject拒绝,drop丢弃,log日志
#例,禁ping
iptables -t filter -I INPUT -p icmp --icmp-type 8 -j REJECT
#删除规则
iptables -t filter -D INPUT -p icmp -j REJECT
#清楚所有规则
iptables -F
#查看定义的规则
iptables -L -n
[root@iZbp1h5sxx9u33hcpnujj2Z ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachable
#禁止源进来
iptables -I INPUT -s ip 192.168.0.1 -j REJET
#禁止源ip段的数据包
iptables -I INPUT -s ip 192.168.1.0/24 -j DROP
#允许个别端口
iptables -I INPUT -s ip 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
#允许一段端口
iptables -I INPUT -s ip 192.168.1.0/24 -p tcp --dport 20:21 -j ACCEPT

4.iptables网络型
iptables -t nat -A POSTOUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to-source 192.168.2.0

2.firewalld
1.firewalld的基本使用命令
#查看状态
systemctl status firewalld
#启动
systemctl start firewalld
#临时关闭
systemctl stop firewalld
#永久关闭
systemctl disable firewalld

2.配置firewalld-cmd命令
#查看所有打开的端口
firewall-cmd --zone=public --list-ports
#新增防火墙开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#说明:
#开放3306端口
#–zone 作用域
#–add-port=2020/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
#更新防火墙
firewall-cmd --reload

3.selinux

selinux保护服务器内部程序(ftp)对内部文件(/var/ftp)的访问

1.selinux配置
#临时关闭
[root@localhost ~]# setenforce 0
#永久关闭
[root@localhost ~]# vim /etc/selinux/config  修该如下内容: SELINUX=disabled
#查看状态
[root@localhost ~]# getenforce(enforcing开启,permissive放行,disabled关闭)
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

linux
  • 作者:shi(联系作者)
  • 发表时间:2024-07-12 22:00:16
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论