Linux系统学习

环境配置

学习 Linux 需要一个环境，我们需要创建一个虚拟机，然后在虚拟机上安装一个 CentOS 系统来学习

虚拟机安装

VMware15.5

系统安装

CentOS 7

网络连接的三种模式：

桥接模式：虚拟机可以直接和外部通讯（容易 IP 冲突）

NAT 模式：网络地址转换模式，虚拟机可以和外部系统通讯，不造成 IP 冲突

主机模式：独立的系统，不和外部联系

虚拟机克隆：直接复制文件夹

虚拟机快照：比如发生误触，想返回原先的一个状态，这就叫虚拟机快照管理

Vi Vim 入门

vi 文本编辑器 Linux 系统会内置

Vim 具有程序编辑的能力，可以看做是 Vi 的增强版本，可以主动的以字体颜色辨别语法的正确性方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富，在程序员中被广泛使用。

正常模式以 V 打开一个档案就直接进入一般模式了（这是默认的模式）。在这个模式中，你可以使用『上下左右」按键来移动光标，你可以使用『删除字符或『删除整行」来处理档案内容，也可以使用『复制、粘贴) 来处理你的文件数据。

插入模式按下，L,o,O,a,A,r,R 等任何一个字母之后才会进人编辑模式，一般来说按 i 即可

命令行模式 输入 esc，再输入 在这个模式当中，可以提供你相关指令，完成读取、存盘、替换、离开 V、显示行号等的动作则是在此模式中达成的！

wq write quit

撤销：u

1. 拷贝当前行 yy, 拷贝当前行向下的 5 行 5yy, 并粘贴（输入 P)

2. 删除当前行 dd, 删除当前行向下的 5 行 5dd

3. 在文件中查找某个单词 [命令行下 / 关键字，回车查找，输入就是查找下一个]

4. 设置文件的行号，取消文件的行号.[命令行下：set nu 和 set nonu]

5. 编辑 /etc/profile 文件，在一般模式下，使用快捷键到该文档的最末行 [G] 和最首行 [gg]

6. 在一个文件中输入 "helo”, 在一般模式下，然后又撤销这个动作 u

7. 编辑 /etc/rofile 文件，在一般模式下，并将光标移动到，输入 20，再输入 shift+g

相关管理文件：

/etc/passwd文件，记录用户的各种信息：用户名：口令：用户标识符：组标识号：注释性描述：主目录：登录 Shell

Shell 是指口令的解释器，使内核根据用户输入口令进行工作

/etc/shadow文件，保存口令的配置信息

/etc/group文件 组配置信息，记录 Linux 包含的组信息

运行级别

基本介绍运行级别说明：

0: 关机

1: 单用户【找回丢失密码】

2: 多用户状态 没有网络服务

3: 多用户状态 有网络服务

4: 系统未使用保留给用户

5: 图形界面

6: 系统重启

常用运行级别是 3 和 5，也可以指定默认运行级别

init x 切换运行级别

一、Linuxi 远程连接

1.1 网络信息配置

远程登录 Linux——XShell

远程文件管理 ——XFtp

检测两个系统是否 ping 通：ping 192.168.58.129

192.168.58.129 是虚拟机的 IP 地址，在主机验证 ping 通

ip addr查询 IP 地址

ifconfig查询 ip 地址

ls /etc/sysconfig/network-scripts/ 查看网卡信息
可以看到，网卡 IP 的配置文件名为 ifcfg-ens33。

vi /etc/sysconfig/network-scripts/ifcfg-ens33查看文件 ifcfg-ens33 的内容

根据本地局域网设置配置网络信息

1.2 联网需配置内容

DNS=8.8.8.8

DNS1=114.114.114.114

BROADCAST 设置的是局域网广播地址

IPADDR 就是静态 P

NETMASK 是子网俺码

GATEWAY 就是网关或者略由地址

更改之后重启网络：service network restart

ping www.baidu.com

1.3 防火墙相关

查看防火墙状态：firewall--cmd-state或者systemctl status firewalld.service

启动防火墙：systemctl start firewalld.service

关闭防火墙：systemctl stop firewalld.service

重启：systemctl restart firewalld.service

开机启用：systemctl enable firewalld.service

禁止开机启动：systemctl disable firewalld.service

查看是否开机启动：systemctl is-.enabled firewalld.service

二、Linux 系统目录结构

目录结构树

/bin：bin 是 Binaries (二进制文件) 的缩写，这个目录存放着最经常使用的命令。

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

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

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

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

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

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

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

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

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

/proc：proc 是 Processes (进程) 的缩写，/proc 是一种伪文件系统（也即虚拟文件系统），存储的是当前内核运行状态的一系列特殊文件，这个目录是一个虚拟的目录，它是系统内存的映射，我们可以通过直接访问这个目录来获取系统信息。

/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: 内核源代码 Q 默认的放置目录。

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

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

在 Linux 系统中，有几个目录是比较重要的，平时需要注意不要误删除或者随意更改内部文件。 /etc：上边也提到了，这个是系统中的配置文件，如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin,/sbin，/usr/bin，/usr/sbin：这是系统预设的执行文件的放置目录，比如 Is 就是在 /bin/ls 目录下的。值得提出的是 /bin、/usr/bin 是给系统用户使用的指令（除 root 外的通用用户），而 /sbin,/usr/sbin 则是给 root 使用的指令。

/var：这是一个非常重要的目录，系统上跑了很多程序，那么每个程序都会有相应的日志产生，而这些日志就被记录到这个目录下，具体在 /var/log 目录下，另外 mail 的预设放置也是在这里。****

三、Liux 基础知识文件与目录管理

绝对路径：路径的写法，由根目录 / 写起，例如：/usr/share/doc 这个目录。

相对路径：路径的写法，不是由 / 写起，例如：由 /usr/share/doc 要到 /usr/share/man 底下时，可以写成：cd../man 这就是相对路径的写法。

3.1 处理目录的常用命令

ls (列出目录)

-a：全部的文件，连同隐藏文件，文件名以开头（常用）

-d：显示详细信息（常用）

-l：查看目录属性（常用）

-h：与配合使用显示详细文件大小

mkdir (创建新目录)

mkdir -mp xxx

-m：配置文件的权限

-p：递归创建

touch (创建空文件)

touch xxx

cd (切换目录)

Copy
#使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob

#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/

#使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/

# 表示回到自己的家目录，亦即是 /root 这个目录
[root@www runoob]# cd ~

# 切换到上一级目录
[root@www ~]# cd ..

pwd (显示目前所在的目录)

pwd

rmdir (删除空的目录)

rmdir [-p] 目录名称

-p 从该目录起，一次删除多级空目录（仅能删除空目录）

cp (复制文件或目录)

Copy
[root@www ~]# cp -rp [原文件或者目录] (目标目录)
[root@www ~]# cp [opt] tes1

mv (移动文件与目录，或修改名称)

Copy
[root@www ~]# mv [原文件或者目录] (移动地址/修改名称)
[root@www ~]# mv /tmp/day1 /root/day02 移动别的目录在改名
[root@www ~]# mv day1 day02 在当前目录改名

-f ：如果目标文件已经存在，不会询问而直接覆盖；

-i ：若目标文件已经存在时，就会询问是否覆盖！

rm (移除文件或目录)

-f ：强制执行

-i ：在删除前会询问是否删除

-r ：递归删除啊！最常用在删除目录

3.2 Linux 文件内容查看

cat 第一行开始显示文件内容

tac 最后一行开始显示

more 一页一页翻动

less 一页一页翻动

head 取出文件前面几行

tail 取出文件后面几行

四、关机和重启指令

4.1 重启命令：

reboot 就是重启

shutdown -r now 立刻重启 (root 用户使用)

shutdown -r 10 过 10 分钟自动重启 (root 用户使用)

shutdown -r 20:35 在时间为 20:35 时候重启 (root 用户使用) 如果是通过 shutdown 命令设置重启的话，可以用 shutdown -c 命令取消重启

4.2 关机命令：

halt 立刻关机

poweroff 立刻关机

shutdown -h now 立刻关机 (root 用户使用)

shutdown -h 10 10 分钟后自动关机 如果是通过 shutdown 命令设置关机的话，可以用 shutdown -c 命令取消重启

五、权限管理命令

5.1 用户管理

用户信息

使用 cat 命令来查看一下保存用户信息的文件 ，保存用户信息的文件保存在 /etc/passwd 文件里面
cat /etc/passwd

超级用户：root，UID=0
普通用户：UID 在 500 到 60000
伪用户：UID 在 1 到 499

伪用户不能登录系统，而且没有宿主目录
为什么需要伪用户：没有用户登录时，linux 系统依然要运行，有很多进程在跑着，所以必须需要一些伪用户来执行那些命令

保存密码的文件：/etc/shadow

保存用户组的文件：/etc/group

保存用户组密码的文件：/etc/gshadow

用户配置文件：/etc/default/useradd

添加用户
useradd 参数 用户名
参数：

-s：设置新用户的默认 Shell 终端

-u：user 设置用户 ID

-e：end 设置用户的终止日期

-f：fire 设置用户过期几日后永久停权

-M：不建立用户家目录

-G：group 设置用户对应的扩展用户组

修改用户
usermod 参数 用户名
参数：

-c：修改用户账号的备注文字

-d：修改用户登录时的家目录

-e：修改用户账号的有效期限

-f：设置在密码过期后多少天关闭该账号

-u：修改用户账号的 ID

-l：修改用户账号名称

-L：锁定用户密码，使密码立即失效

-U：解除密码锁定，使密码恢复正常

-p：设置用户的新密码

修改用户密码
passwd 参数 用户名
参数：

-l：lock 锁定用户的密码值，不允许修改

-u：unlock 解锁用户的密码值，允许修改

-e：edit 下次登录时强制修改密码

-d：delete 清除已有密码

-S：show 显示当前密码状态

切换用户
su 参数 用户名

-l：切换身份时，也同时变更工作目录

-m：切换身份时，不要变更工作目录

删除用户
userdel 参数 用户名
参数：

-f：强制删除用户账号而不询问

-h：显示帮助信息

-r：删除用户的家目录及其全部子文件

查看用户有谁
ls /home

5.2 用户组管理

添加用户组
groupadd 参数 用户组

-g：设置用户组 ID

-r：root 创建系统用户组

-o：允许创建重复 ID 的用户组

更改用户组
`groupmod 参数 组名
参数：

-g：设置群组识别码

-n：name 设置群组名称

删除用户组
groupdel 参数 组名

-f：强制删除而不询问

修改用户组
`usermod 参数 用户名

-l：修改用户账号名称

-L：锁定用户密码，使密码立即失效

-u：修改用户账号的 ID

-U：解除密码锁定，使密码恢复正常

-d：修改用户登录时的家目录

5.3 修改文件权限

** 更改文件所属用户组
`chgrp 参数 用户名

-R：递归处理所有子文件

-v：显示执行过程详细信息

改变文件或目录权限
`chmod 参数 用户名

-c：改变文件权限成功后再输出成功信息

-f：改变文件权限失败后不显示错误信息

-R：递归处理所有子文件

-v：显示执行过程详细信息

六、管道命令和重定向

6-1 管道

more：分屏显示内容

grep：在命令执行结果的基础上查询指定文本

6-2 重定向 > 和 >>

> 表示输出，会覆盖文件原有内容
>> 表示追加，会将内容追加到已有文件的末尾

七、软件磁盘命令

7-1 磁盘管理相关命令

管理磁盘分区
fdisk 参数 设备名

-H：设置硬盘的磁头数

-l：显示指定的外围设备分区表状态

-s：显示指定的分区大小

-S：设置每个磁道的扇区数

-b：设置每个分区的大小

显示系统内存使用量情况
free 参数

-b：设置显示单位为 Byte

-g：设置显示单位为 GB

-h：自动调整合适的显示单位

-k：设置显示单位为 KB

-l：显示低内存和高内存统计数据

-m：设置显示单位为 MB

-s：持续显示内存数据

7-2 打包 / 解压

gzip 压缩文件
gzip -v t.txt 将文件压缩为.gz，用于压缩单个文件

-d：解压指定压缩包文件

-v：显示执行过程详细信息

-k：保留原文件

-l: 显示压缩包内的文件信息

gunzip 解压文件
gunzip -v t.txt.gz压缩或解压多个文件

Zip 压缩文件
zip 参数 压缩名称 需要压缩的文件

unzip 解压文件
unzip 参数 压缩包名 -d 指定目录名

tar 压缩或解压文件
tar 参数 压缩包名自定义 文件或目录名
tar -czvf test.tar.gz -C /etc规范后缀为.tar.gz
-c：创建新的压缩包
-z：使用 gzip 压缩格式
-v：显示执行过程详细信息
-t：显示压缩包的内容
-f：指定压缩后的文件名
-x：解压
-C：解压到指定目录
tar 参数 压缩包名 -C 解压目录名
tar -xvf File.tar -C /etc解压 File.tar 文件到 /etc 目录

7-3 软件安装御载

yum 命令
yun 参数 动作 软件包

7-4 软件控制启动关闭

systemctl 参数 动作 服务名

7-5 rpm 命令 RPM 软件包管理器

rpm 的作用类似于 windows. 上的电脑管家中 “软件管理”、安全卫士里面 “软件管家 " 等产品，主要作用是对 linux 服务器上的软件包进行对应管理操作，管理分为：查询、卸载、安装。
rpm -ql 软件包名
参数：

-a：显示所有软件包

-e：卸载软件包

-i：安装软件包

-l：显示软件包的文件列表

-q：显示指定软件包是否已安装

-U：升级软件包

-v：显示执行过程信息

查询某个软件的安装情况

安装软件

查看安装软件路径

卸载某个软件

升级某个软件包

八、搜索命令和软连接

8-1 搜索命令

find 命令
find 路径 条件 文件名

grep 命令
grep 参数 文件名

8-2 软连接

类似于 Win 中的快捷方式
ln 参数 源文件名 目标文件名

。