一、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.命令终端字段含义介绍 1 2 3 4 5 6 [root@localhost ~]# 解释: - root:当前登录系统用户名(root 超级管理员) - localhost :当前主机名 - ~:当前用户所在目录(~ 为家目录) ,root 超级管理员家目录:/root -
5.命令行一般命令格式 1 2 3 4 5 6 7 8 9 命令 [-选项]... [参数]... - 命令:实现功能的指令 - 选项:调整命令功能的 - 短选项:-l -a -d -h(单个字母),短选项可以合并使用:-lad - 长选项:--help (单词),长选项通常是不能合并使用的 - 参数:命令的执行对象,文件/目录/程序等 - []:可选的 - ...:可以同时有多个
二、Linux 安装 1.VMware 虚拟机 VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系 统,和进行开发、测试 、部署新的应用程序的最佳解决方案。
1.VMware 虚拟机下载
2.VMware 虚拟机安装
2.系统镜像 系统镜像是一种特殊的文件,它包含了操作系统安装所需的所有文件和设置,可以被视为操作系统的精确副本。系统镜像通常以 ISO 文件格 式存在。
3.创建虚拟机 4.系统安装 三、Lnux 系统目录结构 1.登录系统后输入 ls /可以查看根下面的目录 1 2 [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 查看目录/文件命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 文件属主和属组 1 2 3 4 5 6 7 8 9 10 [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 2 chgrp [-R] 属组名 文件名-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R 的参数,那么该目录下的所有文件的属组都会更改。
2.chown:更改文件属主,也可以同时更改文件属组
1 2 chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
1 2 3 4 5 6 7 8 9 10 11 12 13 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 2 3 4 5 ls 选项与参数: -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用) -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
1 2 3 pwd 选项与参数: -P :显示出确实的路径,而非使用链接 (link ) 路径。
1 2 3 4 mkdir [-mp] 目录名称选项与参数: -m :配置文件的权限!直接配置 -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
1 2 3 rmdir [-p] 目录名称选项与参数: -p :从该目录起,一次删除多级空目录
1 2 3 4 5 6 7 8 9 10 cp [参数] 需要复制的文件或目录 目标地址选项与参数: -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用) -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身; -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次; -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用) -l:进行硬式链接(hard link )的链接档创建,而非复制文件本身; -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); -r:递归持续复制,用於目录的复制行为;(常用) -s:复制成为符号链接档 ;
1 2 3 4 5 rm [-fir] 文件或目录选项与参数: -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息; -i :互动模式,在删除前会询问使用者是否动作 -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
1 2 3 4 5 mv [-fiu] 需要移动的文件 目标地址/新名称选项与参数: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
1 2 3 4 touch 命令用于创建新的空白文件- 命令格式:touch [-选项] 文件名 touch test
3.Linux 文件内容查看
查看文件常用命令 Linux 系统中使用以下命令来查看文件的内容:
1 2 3 4 5 6 7 8 9 cat (英文全拼:concatenate)命令用于查看文本文件内容选项与参数: -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已; -b :列出行号,仅针对非空白行做行号显示,空白行不标行号! -E :将结尾的断行字节 $ 显示出来; -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同; -T :将 [tab] 按键以 ^I 显示出来; -v :列出一些看不出来的特殊字符 -tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
1 2 3 4 5 6 7 在 more 这个程序的运行过程中,你有几个按键可以按的: 空白键 (space):代表向下翻一页; Enter :代表向下翻『一行』; /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字; :f :立刻显示出档名以及目前显示的行数; q :代表立刻离开 more ,不再显示该文件内容。 b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
1 2 3 4 5 6 7 8 9 10 less 命令:常用于查看内容量较大的文件,可以分页显示文件内容 less 运行时可以输入的命令有: 空白键 :向下翻动一页; [pagedown]:向下翻动一页; [pageup] :向上翻动一页; /字串 :向下搜寻『字串』的功能; ?字串 :向上搜寻『字串』的功能; n :重复前一个搜寻 (与 / 或 ? 有关!) N :反向的重复前一个搜寻 (与 / 或 ? 有关!) q :离开 less 这个程序;
1 2 3 head 命令:用来显示文件开头部分内容,默认显示文件开头 10 行内容选项与参数: -n :后面接数字,代表显示几行的意思
1 2 3 4 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 取消高亮显示
:set paste 解决粘贴时格式混乱问题
5.软连接与硬连接 Linux 中的链接文件类似于 windows 中的快捷方式 1.软连接 软链接特点:可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
软链接命令格式:ln -s 源文件路径 目标路径 注意:创建链接文件时一定要写绝对路径,哪怕是在当前路径下,也要写绝对路径· 1.创建一个文件并输入内容 touch file1&&echo 111 >file1 2.创建一个软链接 ln -s file1 ./file1.txt 2.硬链接
硬链接命令格式: 硬链接:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用(类似与对文件做了一个备份) ln 源文件路径 目标路径
6.文件查找 1.which:命令查找 1 2 3 4 [root@loaclhost ~]# which ls alias ls ='ls --color=auto' /usr/bin/ls 或者 whereis ls
2.find:文件查找、文件名 1 2 3 4 5 6 7 8 find pathname -options [expression][action] 命令 路径 选项 表达式 动作 [root@loaclhost ~]# find /etc -name hosts /etc/hosts 参数: -name 以文件名查找 -iname 忽略大小写 -size 以文件大小查找
3.locate:文件查找依赖数据库 1 2 [root@loaclhost ~]# locate hosts /etc/hosts
7.文件打包及压缩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 语法: 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 信息 1 2 3 4 5 6 7 8 9 10 11 12 [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 型号 [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.查看内存 1 2 3 4 5 6 [root@loaclhost /]# cat /proc/meminfo MemTotal: 3861360 kB -总内存 MemFree: 420828 kB MemAvailable: 1665892 kB Buffers: 2108 kB Cached: 2329924 kB
4.查看内核 1 2 3 [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 命令,其语法如下: 1 2 3 4 5 6 7 8 9 10 11 useradd 选项 用户名 参数说明: 选项: -c comment 指定一段注释性描述。 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m 选项,可以创建主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell 文件 指定用户的登录 Shell。 -u 用户号 指定用户的用户号,如果同时有-o 选项,则可以重复使用其他用户的标识号。 用户名: 指定新账号的登录名。
2.删除帐号 1 2 userdel 选项 用户名 常用的选项是 -r,它的作用是把用户的主目录一起删除。
3.修改帐号 1 2 usermod 选项 用户名 常用的选项包括-c, -d, -m, -g, -G, -s, -u 以及-o 等,这些选项的意义与 useradd 命令中的选项一样,可以为用户指定新的资源值。
4.用户密码的管理 1 2 3 4 5 6 7 修改密码 passwd 选项 用户名 可使用的选项: -l 锁定口令,即禁用账号。 -u 口令解锁。 -d 使账号无口令。 -f 强迫用户下次登录时修改口令。
5.用户组的管理增加一个新的用户组 1 2 3 4 groupadd 选项 用户组 选项有: -g GID 指定新用户组的组标识号(GID)。 -o 一般与-g 选项同时使用,表示新用户组的 GID 可以与系统已有用户组的 GID 相同。
6.删除用户组
7.修改用户组的属性 1 2 3 4 5 groupmod 选项 用户组 常用的选项有: -g GID 为用户组指定新的组标识号。 -o 与-g 选项同时使用,用户组的新 GID 可以与系统已有用户组的 GID 相同。 -n 新用户组 将用户组的名字改为新名字
8.用户账号有关的系统文件 1 2 3 4 5 1、/etc/passwd 文件是用户管理工作涉及的最重要的一个文件。 Linux 系统中的每个用户都在/etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性,这个文件对所有用户都是可读的。 2、/etc/shadow 中的记录行与/etc/passwd 中的一一对应,它由 pwconv 命令根据/etc/passwd 中的数据自动产生 它的文件格式与/etc/passwd 类似,由若干个字段组成,字段之间用":" 隔开。 3、用户组的所有信息都存放在/etc/group 文件中。
9.su 切换用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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 临时提权
七、Linux 进程管理 1.什么是进程?
name
explain
程序
用计算机语言编写的命令序列集合,用来实现特定的目标或解决特定的问题,程序占用磁盘空间,程序是静态并且是永久的
—-
———————————————————————————————————————————————————————————————————————————————————————————————————-
进程
正在运行中的程序叫进程,占用内存空间,进程是动态的,进程是有生命周期的,进程有自己的独立内存空间,每启动一个进 程,系统就会为它分配内存空间并分配一个 PID 号,每个进程都会对应一个父进程,而父进程以复制多个子进程,每种进程都有两种方式存在,前台与后台,一般进程都是以后台方式运行
—-
—-
线程
线程也被称为轻量级进程,线程是操作系统能够进行运算与调度的最小单元,而线程是被包含在进程内,是进程中实际运作的单元,一个进程中可以并发多个线程,每条线程并行执行不同的任务,每个线程都是独立的,线程之间共享进程的内存空间,在多线程的程序中,由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中)
2.静态查看进程 ps 1.查看所有进程
2.查看信息显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [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 进程运行的文件路径
#查看并筛选 跟进程名有关的进程,该进程名可以是进程的全部或者部分。
3.动态进程查看 top top 命令动态来查看系统性能及运行状态信息(类似于 windows 资源管理器)
命令格式:top [选项...]
常用选项:-d #指定刷新秒数,默认为 3 秒刷新一次
交互界面显示指令:
键盘上下键翻行
h #获取交互模式帮助
P(大写) #按照 CPU 使用资源排序
M #按照内存使用资源排序
q #退出
1.查看动态进程
1 2 3 4 5 6 7 8 9 10 [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.列出所有支持的信号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [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.最常用
1 2 kill -9 进程 id -杀掉进程kill -15 进程 id -终止程序
5.进程优先级 1.查看进程优先级
1 2 3 4 5 6 [root@loaclhost ~]# ps axo pid,command ,nice --sort =-nice PID COMMAND NI 48 [khugepaged] 19 47 [ksmd] 5 1 /usr/lib/systemd/systemd -- 0
2.启动程序时设置优先级
1 2 nice -n -5 sleep 6000 &ps axo command ,pid,nice | grep sleep
3.调整已经启动程序的优先级
6.pgrep 检索进程 pgrep 通过匹配其程序名,找到匹配的进程
命令格式:pgrep [选项…] [参数…]
常用选项:
-l #输出进程名与 PID
-U #检索指定用户进程
-t #检索指定终端进程
-x #精确匹配完整进程名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [root@localhost ~]# pgrep sshd 7337 8880 15066 15086 17027 [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 进程编号 #激活后台被挂起进程
1 2 3 4 5 6 7 8 9 nice -n -5 sleep 6000 & -在后面添加一个&符号就可以实现后台运行 [root@loaclhost ~]# jobs [1]- 运行中 sleep 6000 & [2]+ 运行中 sleep 6000 & fg 作业号 Ctrl +z 然后使用 bg 作业号
八、Linux 重定向和管道 1.重定向和管道是什么? 重定向就是将标准输出,导向一个文件或者追加到一个文件中。在 linux 中,使用>符号来表示导向到一个文件,使用>>符号来表示追加到一个文件。 管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。管道的符号用|表示。
2.重定向示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [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在 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 的标准输入
1 2 3 4 5 [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 会将输入内容额外的保存到文件中
1 2 3 4 5 6 7 8 9 10 [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 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [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 显示文件系统类型
1 2 3 4 5 6 7 8 9 [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 查看系统所有磁盘信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [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 SIZE RO TYPE MOUNTPOINT
2.磁盘分区 1.MBR 分区格式 比较古老的分区格式,最初只能划分 4 个主分区,后来新增加扩展分区(容器)功能,可在扩展分区内划分更多逻辑分区,最大支持 2.2T 磁盘容量fdisk 命令用于查看磁盘使用情况和磁盘分区(MBR 分区格式)
命令格式:fdisk [选项…] [设备路径]
常用选项:
分区示范:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [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 [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 c l o s t 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 进行查看分区情况
1 2 3 4 5 6 7 8 9 10 11 12 [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
如何使用创建的分区
格式化文件系统 文件管理系统,赋予分区文件系统,分区才可以正常的使用:
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 系统中用户无法直接使用硬件设备的,硬件设备在系统中都是以只读的方式存在的,必须挂载,挂载就是给我们用户提供一个可以使用设备的一个接口 挂载注意事项:
挂载点必须是一个目录,理论上还得是一个空目录
一个分区不允许重复挂载到多个目录下
一个目录不允许重复挂载多个文件系统
1 2 3 4 5 6 [root@localhost ~]# mount /dev/sdb1 /test [root@localhost ~]# df -h /test 文件系统 容量 已用 可用 已用% 挂载点 /dev/sdb1 1014M 33M 982M 4% /test
umount 卸载 umount 命令用于卸载文件系统
1 2 [root@localhost ~]# umount /dev/sdb1
开机自动挂载 此时的挂载还处于临时挂载,如果需要永久挂载还需要去文件系统中添加,/etc/fstab 用于存放文件系统信息,当系统启动时,系统会自动读取文件内容将指定的文件系统挂载到指定的目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 vim /etc/fstab /dev/sdb1 /test xfs defaults 0 0 第一个字段:要挂载的设备路径 第二个字段:挂载点目录 第三个字段:设备文件系统类型 第四个字段:挂载参数,参数如下 ↓ 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:依照配置文件/etc/fstab 的数据将所有未挂载的分区都挂载上来
2.GPT 分区格式 GPT 分区格式:可划分 128 个主分区,最大支持 18EB 磁盘容量(1EB=1024PB,1PB=1024TB,1TB=1024GB)gdisk 命令用于查看磁盘使用情况和磁盘分区(GPT 分区格式)
命令格式:gdisk [选项...] [设备路径]
常用选项:
备注:此分区用得少不做演示
3.逻辑卷 LVM 逻辑卷:LVM(Logical Volume Manager)逻辑卷管理系统,逻辑卷可以实现将底层的物理分区整合成一个大的虚拟硬盘,这个虚拟硬盘 可以实现无限扩容
1.逻辑卷管理命令 | 功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 | | ——- | ———- | ——— | ———- | ——— |
| create | 创建 | pvcreate | vgcreate | lvcreate | | — | — | — | — |
| display | 显示 | pvdisplay | vgdisplay | lvdisplay | | — | — | — | — |
| remove | 删除 | pvremove | vgremove | lvremove | | — | — | — | — | | extend | — | 扩展 | vgextend | lvextend |
2.逻辑卷分区示范 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [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 [root@localhost ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <29.00g 0 /dev/sdc lvm2 --- 2.00g 2.00g [root@localhost ~]# vgcreate vg1 /dev/sdc Volume group "vg1" successfully created [root@localhost ~]# vgs VG centos 1 2 0 wz--n- <29.00g 0 vg1 1 0 0 wz--n- <2.00g <2.00g 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.
创建文件系统并挂载
1 2 3 4 5 6 7 8 9 10 11 12 [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 扩容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 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 [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 [root@localhost ~]# vgs VG centos 1 2 0 wz--n- <29.00g 0 vg1 2 1 0 wz--n- 3.99g 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 倍
1 2 3 4 [root@localhost ~]# swapoff -a vim /etc/fstab
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 2 3 4 5 6 7 8 9 10 11 12 [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 块数据盘+一块热备盘
创建 raid
1 2 3 4 5 6 7 mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e} -C 创建 RAID /dev/md0 第一个 RAID 设备 -l5 RAID5 -n RAID 成员数量 -x 热备磁盘数量 可用空间 2G
格式化,挂载
1 2 3 [root@localhost ~]# mkfs.ext4 /dev/md0 [root@localhost ~]# mkdir /raid [root@localhost ~]# mount /dev/md0 /raid
查看 raid 信息
模拟一块磁盘损坏,并移除
1 2 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 安装软件
1 2 3 4 5 6 7 8 9 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 源的步骤
备份原有的 yum 源mv CentOS-Base.repo CentOS-Base.repo.bak
配置 yum 源,找到阿里云的官方镜像源地址 https://developer.aliyun.com/mirror/
下载 centos7 的 yum 源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
清空旧的 yum 缓存yum clean all
生成新的 yum 仓库缓存yum makecache
配置一个第三方的 额外仓库源 (epel 源),这个源的作用是,如果阿里云源找不到这个软件,就在这里找wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum 文件详情
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [base] 源名称 name=CentOS-$releasever - Base 描述 mirrorlist=http://mirrorlist.centos.org/?release=$releasever &arch =$basearch &repo=os&infra=$infra gpgcheck=1 开关 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7``` ```bash 命令格式:rpm 选项... 软件包全名 常用选项: - \-q - \-qa - \-qi - \-qf - \-ql - \-ivh - \-Uvh - \-e - \-nodesps - \-import 计划任务主要是做一些周期性的任务,目前主要的用途是定期备份等。 ```bash 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。
1 2 3 4 5 6 7 8 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.插看进程状态
2.管理方式
1 2 3 4 5 6 7 1.创建计划 crontab -e 2.查询计划 crontab -l 管理员可以用-u 去管理其他用户的计划任务 3.删除计划 crontab -r
十二、Linux 日志管理 1.rsyslog 系统日志管理 linux 日志是非常重要的,不仅在日常操作中可以迅速排错,也可以快速的定位 日志保存的位置默认日志位于/var/log 目录下。1.确定服务启动
1 ps -aux | grep rsyslogd #系统转职日志程序,处理绝大部分日志记录,如系统操作有关信息。
2.查看服务是否自启动
1 systemctl list-unit-files | grep rsyslog
3.常见的日志文件
1 2 3 4 5 6 7 8 9 10 tail -f /var/log/messagestail -f /var/log/secure/var/log/cron /var/log/maillog /var/log/boot.log
4.rsyslogd 配置
1 2 3 4 5 6 yum -y install rsyslog logrotate systemctl start rsyslog /etc/rsyslog.conf
2.logrotate 日志轮转 将大量的日志分割管理,删除旧日志。1.主配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /etc/logrotate.conf weekly rotate 4 create dateext include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
2.子配置文件
3.示例
1 2 3 4 5 6 /nginx/logs/access.log{ weekly create 0600 root root minsize 1M rotate 2 }
十三、Linux 网络管理 概念:网络是个复杂的信息技术,是计算机数据信息传输的底层技术。
1.查看 IP 地址
2.管理网络的服务 1 systemctl status network
3.网络配置工具及路径 1 vim /etc/sysconfig/network-scripts/ifcfg-ens32
4.网络配置参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" 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 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=114.114.114.114 DNS2=8.8.8.8
5.重启网卡服务 1 systemctl restart network 或者 service network restart
十四、Linux 文件传输服务 1.FTP FTP 是 TCP/IP 协议组中应用层的协议之一,可以用来传输文件,ftp 服务会产生两个端口,控制端口 21 和数据端口 201.安装 vsftp
2.准备分发的文件
3.启动服务
4.配置文件
1 2 3 4 vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES
2.SSH ssh 安全外壳协议,可以借助他远程操作和管理系统1.查询是否安装 ssh
1 2 3 rpm -qa |grep ssh 如果没有安装先安装 yum -y install openssh-server
2.启动
1 2 systemctl start sshd netstat -anp|grep sshd/22
3.使用 ssh 远程登录
4.免密登录
1 2 3 ssh-keygen ssh-copy-id ip
5.更换或添加 ssh 端口
1 2 3 4 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 的安装
1 2 3 4 yum -y install iptables iptables-server iptables -V service iptables start service iptables stop
2.配置文件
1 2 3 /etc/sysconfig/iptables-config /etc/sysconfig/iptables
3.iptables 主机型规则基本语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 iptables -t 表名 管理选项 [链名][匹配条件][-j 控制类型] -t 表名 选项管理 匹配条件 控制类型 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 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 网络型
1 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 的基本使用命令
1 2 3 4 5 systemctl status firewalld systemctl start firewalld systemctl stop firewalld systemctl disable firewalld
2.配置 firewalld-cmd 命令 #查看所有打开的端口
1 2 3 4 5 6 firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
3.selinux selinux 保护服务器内部程序(ftp)对内部文件(/var/ftp)的访问1.selinux 配置 #临时关闭
1 2 3 4 [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