[尚庭公寓]02-Linux速通

开发环境说明

项目开发会用到MySQL、Redis、MinIO等软件, 安装方式有3种

  1. 直接安装到windows主机
  • 项目阶段不建议把这些软件安装在windows种
  • 服务器操作系统大多数是linux系统, 这些软件可能不提供windos版本
  • 不同项目对这些软件的配置和版本要求可能不一致, 都装在主机中, 管理起来就特别费劲
  • 一旦出现问题, 可能会影响我们的主机, 很麻烦
  1. 使用虚拟机
  • 在主机中安装虚拟机, 使用虚拟机中安装linux操作系统, 在linux中安装我们需要的软件
  • 虚拟机和主机隔离, 不会影响主机
  1. 使用docker技术
  • 公司中的开发环境一般都是以docker技术, 既安全又轻量
  • 本项目不涉及该技术, 有需要的自行学习

Linux系统概述

Linux是一种开源操作系统,与Windows或macO6等操作系统不同,Linux允许用户自由地查看、修改和分发其源代码。

以下是Linux系统的一些显著的优势。

  1. 稳定性和可靠性:

Linux内核以其稳定性而闻名,能够持续运行数月甚至数年而不需要重新启动。这对于服务器来说至关重要,因为它们需要保持长时间的稳定运行,以提供持续的服务。

  1. 安全性:

Linux系统的安全性得到了广泛认可。开源的自然属性使得漏洞可以很快被发现和修复,从而降低了受到安全威胁的风险。

  1. 资源利用效率:

Linux在资源管理方面表现出色,可以高效地利用服务器硬件资源,使得服务器能够同时处理大量的请求。

  1. 开源和免费.

Linux是开源的,因此不需要为操作系统本身付费。这使得它在经济上具有明显的优势,特别是对于企业或组织需要部署大量服务器的情况。

  1. 由于上述的这些优势,Linux系统成为了许多企业和组织首选的服务器操作系统。

安装Linux虚拟机

安装VMware

常见的虚拟机软件有VMware、Virtual Box等,本课程使用VMware。

  1. 双击`VMware-workstation-full-17.0.0-20800274.exe`安装包,启动安装向导,并点击`下一步`。

  1. 查看用户许可协议,勾选接收并点击`下一步`。

  1. 选择安装路径,并点击`下一步`

  1. 用户体验设置,建议取消勾选,并点击`下一步`

  1. 创建快捷方式,建议勾选,并点击`下一步`

  1. 点击`安装`,开始进行安装。

  1. 等待完成安装

  1. 点击`完成`,结束向导

  1. 启动VMware,可填入许可秘钥进行激活,或者选择30天试用。

安装虚拟机

使用VMware软件虚拟一台计算机

  1. 打开VMware软件, 点击文件->新建虚拟机 进入安装向导

安装CentOS7系统

为虚拟计算机安装操作系统镜像

操作说明:

  • 鼠标点击界面任意黑色位置进入CentOS系统
  • ctrl + alt 退出CentOS系统
  • 键盘 上下箭头 切换选项
  • 按下回车键就会安装系统, 此操作会耗时, 耐心等待就行

  • 安装示意图的配置对系统进行简单配置, 然后点击 开始安装
  • 系统默认会创建名为root的超级管理员账号, 自己设置一个密码, 学习环境设置个简单的就行, 正式环境必须是复杂密码, 我这里设置的密码是 root, 简单密码要点2次完成才生效
  • root账号的权限非常高, 正式环境中都会建普通用户使用给程序员使用,方便控制权限,
  • 普通账号还是创建一个, 不然后面还要创建, 更麻烦, 呵呵
  • 安装完成后, 重启就行了

重启之后, 要对新系统进行一些配置和验证

  1. 同意协议

  1. 开启网络连接

网络如果一直链接中或者链接失败, 按下面的步骤解决:

  • 检查主机是否联网,因为桥接模式下,虚拟机直接连接到主机所连接的网络。
  • 配置虚拟网络编辑器, 打开虚拟网络编辑器

  • 先获取操作权限

  • 选择网络模式: 因为安装CentOS时网络模式选择的是桥接模式, 这里也选择这个,
  • 默认虚拟机桥接是自动选择网卡, 网络连接失败就是因为自动选择这里没有正确选择网卡, 我们手动修正就行

  • 网络有可能是wifi或者网线, 就选择对应的网卡就行

  • 如果主机wifi环境下, 设置之后还不行, 就修改CentOS系统的网络模式

  1. 完成网络和协议的设置之后, 点击右下角的完成配置, 就会自动进入系统

  1. 使用火狐浏览器访问下百度, 测试网络

  1. 开启网络连接, 避免重启系统后失去网络

  1. 系统为了节能默认设置了息屏时间, 我们重置一下

VMware使用技巧

系统快照

所谓系统快照,就是将操作系统的当前状态保存下来,若将来系统出现不可修复的故障,便可使用快照恢复操作系统。下面演示VMware提供的快照功能。

  1. 拍摄快照
  • 找到需要拍摄的虚拟机,执行如下操作

  • 填写快照信息

  1. 误操作
  •  假如失误删除了系统的一些重要文件,导致系统无法正常运行,例如下图所示

  • 关机后再启动,发现无法进入系统。
  1. 恢复快照
  • 进入快照管理器

  • 选中要恢复的快照,点击`转到`,即可将系统恢复到指定的状态。

  1. 删除快照
  • 若快照已经十分久远,失去其存在的意义,便可将其删除,具体操作如下图所示

克隆虚拟机

顾名思义,克隆虚拟机就是将现有的虚拟机复制一份,得到一台和原有虚拟机配置完全相同的虚拟机,从而省去重复安装系统的繁琐工作。克隆虚拟机的具体操作如下

  1. 将需要克隆的虚拟机关机
  2. 选中要克隆的虚拟机,并打开克隆向导

  1. 选择克隆状态,可选最新状态或者快照中的历史状态

  1. 选择克隆方式,推荐选择`完整克隆`

  1. 填写新虚拟机的名称和安装目录,最后点击完成

删除虚拟机

废弃不用的虚拟机可通过如下方式删除

文件系统目录结构

理解和熟悉Linux系统的文件系统目录结构,对于有效的管理和定位文件十分重要。

  1. Linux文件系统的目录结构如下图所示:

  1. 其中各目录的作用如下表所示

交互界面

服务器中Linux系统,通常不会安装图形用户界面(GUI,Graphical User Interface),因此我们与操作系统的交互主要靠命令行界面(CLI,Command Line Interface),如下图所示

  1. 在图形化界面中, 可以通过 ctrl + alt + F2进入命令行界面

  1. 通过 ctrl + alt + F1 切回图形界面

在图形化界面中, 我们可以通过终端模拟器, 使用指令与操作系统交互

  1. 打开终端

  1. 在命令行界面,用户输入的命令通常由shell解释并执行。

Linux常用命令

1.文件和目录相关

打印当前目录的绝对路径

  1. 基本语法: pwd
  2. 使用示例
[root@localhost ~]# pwd
/root

列出目录内容

  1. 基本语法: ls [选项] [目录或是文件]
  2. 选项说明

  1. 使用示例
[root@localhost ~]# ls / (查询根目录下文件)
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@localhost ~]# ls ./ (查询当前当前目录下的文件)
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面

[root@localhost ~]# ls  (同上 ./可以被省略)
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面

[root@localhost ~]# ls -a (查询全部文件, 包括隐藏文件)
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  .cshrc  .dbus  .esd_auth  .ICEauthority  initial-setup-ks.cfg  .local  .mozilla  .tcshrc  公共  模板  视频  图片  文档  下载  音乐  桌面

[root@localhost ~]# ls -l (列举文件的信息)
总用量 8
-rw-------. 1 root root 1549 6月   6 11:14 anaconda-ks.cfg
-rw-r--r--. 1 root root 1577 6月   6 11:52 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 6月   6 12:03 公共
drwxr-xr-x. 2 root root    6 6月   6 12:03 模板
drwxr-xr-x. 2 root root    6 6月   6 12:03 视频
drwxr-xr-x. 2 root root    6 6月   6 12:03 图片
drwxr-xr-x. 2 root root    6 6月   6 12:03 文档
drwxr-xr-x. 2 root root    6 6月   6 12:03 下载
drwxr-xr-x. 2 root root    6 6月   6 12:03 音乐
drwxr-xr-x. 2 root root    6 6月   6 12:03 桌面 

[root@localhost ~]# ls -a -l (查询全部文件且列举文件信息)
总用量 48
dr-xr-x---. 15 root root 4096 6月   9 07:30 .
dr-xr-xr-x. 17 root root  224 6月   6 11:13 ..
-rw-------.  1 root root 1549 6月   6 11:14 anaconda-ks.cfg
-rw-------.  1 root root    3 6月   7 10:10 .bash_history
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
drwx------. 15 root root 4096 6月   6 15:42 .cache
drwxr-xr-x. 14 root root  261 6月   6 12:04 .config
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
drwx------.  3 root root   25 6月   6 11:19 .dbus
-rw-------.  1 root root   16 6月   6 12:03 .esd_auth
-rw-------.  1 root root  930 6月   9 07:30 .ICEauthority
-rw-r--r--.  1 root root 1577 6月   6 11:52 initial-setup-ks.cfg
drwx------.  3 root root   19 6月   6 12:03 .local
drwx------.  5 root root   66 6月   6 12:04 .mozilla
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
drwxr-xr-x.  2 root root    6 6月   6 12:03 公共
drwxr-xr-x.  2 root root    6 6月   6 12:03 模板
drwxr-xr-x.  2 root root    6 6月   6 12:03 视频
drwxr-xr-x.  2 root root    6 6月   6 12:03 图片
drwxr-xr-x.  2 root root    6 6月   6 12:03 文档
drwxr-xr-x.  2 root root    6 6月   6 12:03 下载
drwxr-xr-x.  2 root root    6 6月   6 12:03 音乐
drwxr-xr-x.  2 root root    6 6月   6 12:03 桌面

[root@localhost ~]# ls -al (等价于ls -a -l)
总用量 48
dr-xr-x---. 15 root root 4096 6月   9 07:30 .
dr-xr-xr-x. 17 root root  224 6月   6 11:13 ..
-rw-------.  1 root root 1549 6月   6 11:14 anaconda-ks.cfg
-rw-------.  1 root root    3 6月   7 10:10 .bash_history
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
drwx------. 15 root root 4096 6月   6 15:42 .cache
drwxr-xr-x. 14 root root  261 6月   6 12:04 .config
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
drwx------.  3 root root   25 6月   6 11:19 .dbus
-rw-------.  1 root root   16 6月   6 12:03 .esd_auth
-rw-------.  1 root root  930 6月   9 07:30 .ICEauthority
-rw-r--r--.  1 root root 1577 6月   6 11:52 initial-setup-ks.cfg
drwx------.  3 root root   19 6月   6 12:03 .local
drwx------.  5 root root   66 6月   6 12:04 .mozilla
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
drwxr-xr-x.  2 root root    6 6月   6 12:03 公共
drwxr-xr-x.  2 root root    6 6月   6 12:03 模板
drwxr-xr-x.  2 root root    6 6月   6 12:03 视频
drwxr-xr-x.  2 root root    6 6月   6 12:03 图片
drwxr-xr-x.  2 root root    6 6月   6 12:03 文档
drwxr-xr-x.  2 root root    6 6月   6 12:03 下载
drwxr-xr-x.  2 root root    6 6月   6 12:03 音乐
drwxr-xr-x.  2 root root    6 6月   6 12:03 桌面
  • 每行列出的文件信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小 最近修改时间 文件名

查询文档

  1. 基本语法: man 需要查询的命令
  2. 该文档由linux官方维护, 所以只能查询linux提供的命令
  3. 使用示例
[root@localhost ~]# man ls
按 q 退出文档

命令提示

  1. 基本语法: 需要查询的命令 -h
  2. 基本语法: 需要查询的命令 --help
  3. 命令提示由命令的提供者维护, 所以非liunx官方命名也支持
  4. 使用示例
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all			不隐藏任何以. 开始的项目
  -A, --almost-all		列出除. 及.. 以外的任何项目
      --author			与-l 同时使用时列出每个文件的作者
  -b, --escape			以八进制溢出序列表示不可打印的字符
      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                               '--block-size=M' prints sizes in units of
                               1,048,576 bytes; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information);
                               with -l: show ctime and sort by name;
                               otherwise: sort by ctime, newest first
  -C                         list entries by columns
      --color[=WHEN]         colorize the output; WHEN can be 'never', 'auto',
                               or 'always' (the default); more info below
  -d, --directory            list directories themselves, not their contents
  -D, --dired                generate output designed for Emacs' dired mode
  -f                         do not sort, enable -aU, disable -ls --color

  ... ... ...

清屏命令

  1. 基本语法: clear

切换目录

  1. 基本语法: cd [参数]
  2. 参数说明

  1. 使用示例
[root@localhost admin]# cd ~ (切换到根目录)
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd  (切换到根目录)
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /home/ (切换到根目录的home目录下)
[root@localhost home]# pwd
/home
[root@localhost home]# ls -l (查看当前目录下的文件)
总用量 4
drwx------. 15 admin admin 4096 6月   6 12:00 admin
[root@localhost home]# cd admin (切换到admin目录下)
[root@localhost admin]# pwd
/home/admin

创建目录

  1. 基本语法: mkdir [选项] 要创建的目录
  2. 选项说明

  1. 使用示例
[root@localhost ~]# mkdir hello (创建hello目录)
[root@localhost ~]# ls -l
总用量 8
drwxr-xr-x. 2 root root    6 6月   9 08:33 hello


[root@localhost ~]# mkdir hello/world (在hello目录下创建world目录)
[root@localhost ~]# ls hello  -l
总用量 0
drwxr-xr-x. 2 root root 6 6月   9 08:34 world
 [root@localhost ~]# mkdir -p big/world  (创建big目录后再创建world目录)
[root@localhost ~]# ls big -l
总用量 0
drwxr-xr-x. 2 root root 6 6月   9 08:38 world

复制文件或目录

  1. 基本语法: cp [选项] source dest
  2. 选项说明

  1. 参数说明

  1. 使用示例
[root@localhost ~]# cp ./initial-setup-ks.cfg ./hello.cfg
[root@localhost ~]# ls -l
总用量 12
-rw-r--r--. 1 root root 1577 6月   9 08:46 hello.cfg
-rw-r--r--. 1 root root 1577 6月   6 11:52 initial-setup-ks.cfg

[root@localhost ~]# cp -r ./big ./hello
[root@localhost ~]# ls hello -l
总用量 0
drwxr-xr-x. 3 root root 19 6月   9 08:47 big
drwxr-xr-x. 2 root root  6 6月   9 08:34 world

 移除文件或者目录

  1. 基本语法: rm [选项] deleteFile
  2. 选项说明

  1. 使用示例
[root@localhost ~]# rm big/  (rm只能删除空目录, 目录中有文件就不能删除该目录)
rm: 无法删除"big/": 是一个目录
[root@localhost ~]# 
[root@localhost ~]# rm -r -f  big/ (先删除目录中的内容, 再删除目录)
[root@localhost ~]# ls -l
总用量 12
-rw-------. 1 root root 1549 6月   6 11:14 anaconda-ks.cfg
drwxr-xr-x. 4 root root   30 6月   9 08:47 hello
-rw-r--r--. 1 root root 1577 6月   9 08:46 hello.cfg
-rw-r--r--. 1 root root 1577 6月   6 11:52 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 6月   6 12:03 公共
drwxr-xr-x. 2 root root    6 6月   6 12:03 模板
drwxr-xr-x. 2 root root    6 6月   6 12:03 视频
drwxr-xr-x. 2 root root    6 6月   6 12:03 图片
drwxr-xr-x. 2 root root    6 6月   6 12:03 文档
drwxr-xr-x. 2 root root    6 6月   6 12:03 下载
drwxr-xr-x. 2 root root    6 6月   6 12:03 音乐
drwxr-xr-x. 2 root root    6 6月   6 12:03 桌面

移动或重命名文件

  1. 移动文件:  mv 源文件 目标目录
  2. 重命名:  mv 源文件 目标文件
  3. 使用示例
[root@localhost ~]# cd hello
[root@localhost hello]# ls -l
总用量 4
drwxr-xr-x. 3 root root   19 6月   9 08:47 big
-rw-r--r--. 1 root root 1577 6月   9 09:12 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 6月   9 08:34 world


[root@localhost hello]# cp ./initial-setup-ks.cfg ./world
[root@localhost hello]# cd world
[root@localhost world]# ls -l
总用量 4
-rw-r--r--. 1 root root 1577 6月   9 09:14 initial-setup-ks.cfg
[root@localhost hello]# ls -l
总用量 8
drwxr-xr-x. 3 root root   19 6月   9 08:47 big
-rw-r--r--. 1 root root 1577 6月   9 09:13 hello
-rw-r--r--. 1 root root 1577 6月   9 09:12 initial-setup-ks.cfg
drwxr-xr-x. 2 root root   34 6月   9 09:14 world

[root@localhost hello]# mv initial-setup-ks.cfg world/hehe.cfg
[root@localhost hello]# cd world
[root@localhost world]# ls -l
总用量 8
-rw-r--r--. 1 root root 1577 6月   9 09:12 hehe.cfg
-rw-r--r--. 1 root root 1577 6月   9 09:14 initial-setup-ks.cfg
[root@localhost world]# ls -l
总用量 8
-rw-r--r--. 1 root root 1577 6月   9 09:14 initial-setup-ks.cfg
-rw-r--r--. 1 root root 1577 6月   9 09:12 hehe.cfg

[root@localhost world]# mv initial-setup-ks.cfg didi.cfg
[root@localhost world]# ls -l
总用量 8
-rw-r--r--. 1 root root 1577 6月   9 09:14 didi.cfg
-rw-r--r--. 1 root root 1577 6月   9 09:12 hehe.cfg

 查看文件内容

  1. 基础语法: cat  [选项] 文件
  2. 选项说明:

  1. 使用示例
[root@localhost world]# ls -l
总用量 8
-rw-r--r--. 1 root root 1577 6月   9 09:14 didi.cfg
-rw-r--r--. 1 root root 1577 6月   9 09:12 hehe.cfg


[root@localhost world]# cat -n hehe.cfg
     1	#version=DEVEL
     2	# X Window System configuration information
     3	xconfig  --startxonboot
     4	# License agreement
     5	eula --agreed
     6	# System authorization information
     7	auth --enableshadow --passalgo=sha512
     8	# Use CDROM installation media
     9	cdrom
    10	# Use graphical install

   ... ...

  输出文件尾部内容

  1. 基础语法
  • tail 文件 (功能描述:查看文件后10行内容)
  • tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
  • `tail -f 文件 (功能描述:实时追踪该文档的所有更新)
  1. 选项说明

  1. 使用示例
[root@localhost world]# tail -n 50 hehe.cfg

# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8

ignoredisk --only-use=sda
# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$AqS/jgmxMFxsncF.$9vLdNuN3MiT9/JO/4Yj6bp17g18SMhJ4k8foNJNUB0naajD3VOFekrgbiy6i2gGdRocc6rv.ZmtiKM0vRrpNu1
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel

... ...
[root@localhost world]# tail -f hehe.cfg 
说明: 会阻塞程序的执行, 自动加载文档更新的内容, 退出 ctrl + c

2.文本编辑相关

在命令行界面下,最常用的文本编辑器就是Vi/Vim。其中Vi是 Linux操作系统中最通用的文本编辑器。 Vim编辑器是Vi的增强版,相较于Vi,提供了代码高亮等功能。两者用法完全兼容。下面介绍Vim的用法。

基础语法

vim fileName

  1. 文件存在就能操作文件
  2. 文件不存在会创建文件

Vim模式介绍

Vim文编辑器有不同的工作模式,在不同模式下,可执行不同的操作,主要模式有

  1. 普通模式(Normal Mode): 用于删除、复制、粘贴等基本操作。
  2. 编辑模式(Insert Mode): 用于编辑文本。
  3. 命令行模式(Command Mode): 用于执行命令,如保存、退出等。
  4. 下图为各模式之间的切换方法

  1. 下面分别介绍各模式下的用法
  • 编辑模式:
    • 编辑模式下,可进行正常的编辑操作,可在编辑模式下和其他模式下灵活切换,提高编辑效率。
  • 一般模式:
    • 在这个模式中, 可以使用上下左右按键来移动光标,也开通过一些简单的操作来复制粘贴以及删除文本,具体操作如下
    • 光标操作

    • 复制粘贴操作

    • 删除操作

  • 命令模式
    • 命令模式下可通过一些命令实现存盘、退出、显示行号、搜索、批量替换等功能,具体命令如下

3.文件权限相关

文件权限概述

Linux中的所有文件均有严格的访问权限控制,只有当用户拥有某个文件的相关权限时,才可对文件执行相关操作。

用户和用户组

  1. 在Linux系统中注册的个体称为一个用户,例如root和atguigu,
  2. 除此之外还能使用 useradd <用户名> 命令创建新的用户。
  3. 每个用户都可以属于一个或多个用户组,可以使用 groups <用户名> 命令查看用户所属的组,
  4. 使用 usermod -g <新组名> <用户名>修改用户所属组。
  5. 个文件或者目录都有一个所属用户和一个所属组。

文件权限

在Linux中,文件和目录的权限主要分为三个部分:读(read)、写(write)和执行(execute)。

  1. 读权限,表示可以读取文件的内容或者查看目录的内容。
  2. 写权限,表示可以修改文件内容或者在目录中创建、删除文件。
  3. 执行权限,表示可以运行可执行文件或者进入目录。

权限字符串

在Linux系统中,文件和目录的权限用一组字符来表示,通常以`rwxr-xr--`的形式呈现,其中`r`、`w`、`x`分别表示读、写和执行权限。以下是权限字符的含义:

  1. 第1-3位确定属主(该文件的所有者)拥有该文件的权限。
  2. 第4-6位确定属组(所有者的同组用户)拥有该文件的权限。
  3. 第7-9位确定其他用户拥有该文件的权限。

思考题

若某文件的权限字符串为`rwxr-xr--`,请分析该文件的权限策略。

  1. 文件的所有者拥有该文件的读写执行权限
  2. 文件所有者同组的用户拥有读和执行权限
  3. 其他用户拥有读的权限

常用命令

修改文件或目录权限

  1. 基本语法: chmod [选项] [u/g/o/a][+/-/=][r/w/x] 文件或目录
  • u:user
  • g:group
  • o:other
  • a:all
  1. 基本语法: chmod [选项] 777 文件或目录

  1. 选项说明

  1. 实操案例
# 修改文件使其所属主用户具有执行权限
[root@localhost ~]# chmod u+x hello.cfg

# 修改文件使其所属组用户具有执行权限
[root@localhost ~]# chmod g+x hello.cfg

# 修改文件所属主用户执行权限,并使其他用户具有执行权限
[root@localhost ~]# chmod u-x,o+x hello.cfg

# 采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
[root@localhost ~]# chmod 777 hello.txt

# 修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读写执行权限。
[root@localhost ~]# chmod -R 777 hello/

改变文件或目录所有者

  1. 基本语法: chown [选项] 用户[:用户组] 文件或目录
  2. 选项说明

  1. 实操案例
# 修改文件所有者
[root@localhost ~]# chown atguigu helle.cfg 

# 递归改变文件所有者和所有组
[root@localhost ~]# chown -R atguigu:atguigu hello/

4.进程管理相关

操作系统中正在运行的一个程序称为一个进程。

查看进程

可以使用`ps`(process status)命令查看操作系统中当前的进程。

  1. 基本语法: ps aux
  2. 选项说明

  1. ps aux 显示内容如下

  • USER:启动该进程的用户
  • PID: 进程ID
  • %CPU: 该进程占用CPU资源的百分比
  • %MEM:该进程占用物理内存的百分比
  • COMMAND:产生此进程的命令名

  1. 基于语法: ps -ef
  2. 选项说明

  1. ps -ef显示内容如下

  • UID:用户ID
  • PID:进程ID
  • PPID:父进程ID
  • CMD:启动进程所用的命令和参数

使用技巧

日常查看进程时,通常会将上述命令与 grep命令配合使用,`grep`可用于过滤文本行。

  1. 例如想查看所有的Java进程,便可执行以下命令
 ps -ef | grep java
  •  |符号称为管道符,其作用是将前边命令的输出作为下一命令的输入。

终止进程

若想停止进程,可使用`kill`命令,其用法如下

  1. 基本语法: kill [选项] 进程号
  2. 选项说明

  1. 案例实操,启动火狐浏览器,并杀死相关进程。
  2. 提示:火狐浏览器的英文名称为firefox。

5.压缩管理相关

`zip/unzip`可用于压缩和解压缩zip文件,使用方式如下

  1. 基本语法:
  • zip [选项] XXX.zip 文件或路径
  • unzip [选项] XXX.zip
  1. 选项说明

  1. 实操案例
# 创建两个文件`file1.txt`和`file2.txt`,并将其压缩为`first.zip`
[root@localhost ~]# vim file1.txt
[root@localhost ~]# vim file2.txt
       
[root@localhost ~]# zip first.zip file1.txt file2.txt
[root@lcoalhost ~]# zip -r hello.zip hello
# 创建一个`zip`目录,并将`first.zip`中的内容解压到`zip`目录
[root@lcoalhost ~]# mkdir zip
[root@lcoalhost ~]# unzip first.zip -d zip/

`tar`可用于对文件进行归档(打包)和压缩,使用方式如下

  1. 基本语法
  • 打包:`tar [选项] -c -f 包名 文件1 文件2 文件3 ...`
  • 解包:`tar [选项] -x -f 包名 -C 指定目录 `
  1. 选项说明

  1. 案例实操
# 打包`file1.txt`和`file2.txt`到`first.tar
[root@lcoalhost ~]# tar -cvf first.tar file1.txt file2.txt
# 打包并压缩`file1.txt`和`file2.txt`到`first.tar.gz`
 [root@lcoalhost ~]# tar -zcvf first.tar.gz file1.txt file2.txt
# 解包并解压`first.tar.gz`到`tar`目录
[root@lcoalhost ~]# mkdir tar
[root@lcoalhost ~]# tar -zxvf first.tar.gz -C ./tar

6.安装程序相关

RPM离线安装

 RPM(RedHat Package Manager),RedHat软件包管理工具,在基于 RedHat 的 Linux 发行版中广泛使用。常见软件包如下`Apache-1.3.23-11.i386.rpm`,类似于Windows系统中的`exe`文件。

可以使用`rpm`命令安装、卸载和查看系统中的应用,具体用法如下

安装

  1. 基本语法: rpm -ivh 软件包路径
  2. 选项说明

  1. 实操案例
# 在以下地址下载一个***sl软件***的rpm安装包,并安装
# 下载方式1: 在火狐浏览器中打开下载地址下载安装包
# 下载地址:https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm
# 下载方式2: 使用命令行下载软件包 (安装包会下载到当前所在目录中)
#  wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm

# 下载完成后,安装软件
# rpm -ivh sl-2.02.rpm

查看

  1. 基本语法:  `rpm -qa`
  2. 功能描述:查询所安装的所有rpm软件包
  3. 选项说明:

  1. 实操案例
# 查询刚刚安装的软件
[root@localhost ~]# rpm -qa | grep sl

卸载

  1. 基本语法:  rpm -e 软件包名
  2. 实操案例
#  卸载刚刚安装的sl软件
[root@localhost ~]# rpm -e sl-5.02-1.el7.x86_64

Yum在线安装

YUM(全称为 Yellowdog Updater Modified)是一个Linux软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,并且可以**自动处理依赖关系**,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装,该功能类似在JAVA中使用Maven工具从远程仓库中下载依赖一样,可以自动处理依赖关系。

可以使用yum安装和卸载应用,具体用法如下

安装软件包

  1. 基本语法: yum [选项] install 软件包名
  2. 选项说明

  1. 案例实操
# 使用yum在线安装***sl***软件
# 1.查询sl软件的包名
可在如下网站搜索Linux中的各种软件包,地址为https://pkgs.org/,搜索sl,并查看对应的Linux发行版,搜索结果为`yum install sl`。

# 2.执行yum安装命令
执行`yum install sl`后的结果为
 ```
 没有可用软件包 sl。
 错误:无须任何处理
 ```
 原因分析:
 yum的工作原理是从我们所配置的远程仓库下载rpm包,然后进行安装,远程仓库的配置文件位于`/etc/yum.repo.d/`目录中。
 上述问题的原因就是sl软件的rpm包不在系统预先配置的这些远程仓库中。
 因此需要先配置sl所在的远程仓库,才可使用yum进行安装,具体操作如下。

 # 3. 配置远程仓库
 远程仓库可手动配置,也可在线配置,下面在线配置
 [root@localhost ~]# yum -y install epel-release 
 
 完成后观察`/etc/yum.repo.d/`目录下配置文件的变化
 重新安装sl
 [root@localhost ~]# yum -y install sl

卸载软件包

  1. 基本语法:  `yum remove 软件包名`
  2. 案例实操
# 卸载sl软件
[root@localhost ~]# yum remove sl

远程访问

SSH概述

多数情况下,工作时所用的服务器并不在身边,这些计算机要么位于机房,要么位于云端,因此我们不能向操作个人电脑一样操作服务器,而是需要通过远程登录的方式来操作。

SSH(Secure Shell)使用一种网络协议,用于在计算机之间建立加密的连接,从而允许用户以安全的方式在远程的计算机中执行命令。

SSH实操

Linux系统中都会预装SSH服务,因此我们只需在自己的个人电脑安装SSH客户端,然后配置连接即可。可以选择的SSH客户端有很多,目前,比较主流的有 Xshell, SecureCRT,FinalShell,MobaXterm 等,同学们可以根据自己的习惯自行选择。

  1. 本课程使用MobaXterm,下面演示具体使用方式。
  2. 在Windows主机安装MobaXterm软件,安装包位于项目资料中。
  3. 查询虚拟机IP地址
# 使用`ifconfig`(network interfaces configuring)命令可查看虚拟机ip地址,其输出内容如下
# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
           inet 172.17.0.104  netmask 255.255.255.0  broadcast 172.17.0.255
           inet6 fe80::5fdd:f01e:a4fb:966  prefixlen 64  scopeid 0x20<link>
           ether 00:0c:29:fc:a3:fe  txqueuelen 1000  (Ethernet)
           RX packets 183030  bytes 70503744 (67.2 MiB)
           RX errors 0  dropped 78  overruns 0  frame 0
           TX packets 23385  bytes 1917128 (1.8 MiB)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
   
   lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
           inet 127.0.0.1  netmask 255.0.0.0
           inet6 ::1  prefixlen 128  scopeid 0x10<host>
           loop  txqueuelen 1000  (Local Loopback)
           RX packets 0  bytes 0 (0.0 B)
           RX errors 0  dropped 0  overruns 0  frame 0
           TX packets 0  bytes 0 (0.0 B)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
   
   virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
           inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
           ether 52:54:00:ea:8a:fb  txqueuelen 1000  (Ethernet)
           RX packets 0  bytes 0 (0.0 B)
           RX errors 0  dropped 0  overruns 0  frame 0
           TX packets 0  bytes 0 (0.0 B)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  •  其中`ens33`,为虚拟机的以太网络接口,此处获取的ip地址为`172.17.0.104`。
  1. 在MobaXterm中配置SSH(Secure Shell)连接

点击Session选项

点击SSH选项,并配置连接信息

输入root用户密码

远程登录成功,如下图所示

虚拟机网络配置

目前痛点

目前虚拟机联网方式为桥接模式,这种模式下,虚拟机通过主机的物理网卡,直接连接到主机所在的网络当中。具体效果如下图所示。

这种模式下存在两个痛点

1. 主机必须连接到某个网络中,主机和虚拟机才能互通。
2. 更换网络后,主机和虚拟机的IP地址均会发生变化,因此远程访问工具中的IP需要同步进行修改。

为解决上述痛点,我们需要调整虚拟机的网络模式和配置静态IP。

虚拟机网络模式

主机网络环境

为理解VMware中的虚拟网络模式,我们首先需要明确主机所处的真实网络环境,其所处环境如下图所示:

  1. 如上图所示,路由器一端(WAN口,Wide Area Network)连接互联网,另一端(Local Area Network,LAN)连接多个设备,这些设备组成一个局域网,局域网中的设备都通过路由器访问互联网,这个场景应该是大家十分熟悉的。
  1. 下面为大家介绍路由器中的两个十分重要的角色。

DHCP

全称**Dynamic Host Configuration Protocol** ,动态主机配置协议,该协议用于给联网的设备自动分配(私网)IP地址和其他网络配置。家用路由器中一般就会集成DHCP服务,因此设备只要连接上路由器,便能自动获取IP地址等网络配置。

NAT

全称**Network Address Translation**,网络地址转换,该技术主要用于缓解IPv4地址短缺,有了NAT之后,可以令多个网络设备共享一个公网IP地址,家庭路由器中也都集成了该服务。

其工作原理是,NAT设备(路由器)一端连接互联网,其具有一个公网IP,另一端连接一个局域网,局域网中的每个设备均只有一个私网IP。当局域网中的设备经过路由器向互联网中的其他设备发送数据时,NAT服务会将数据包的源地址由该设备的私网IP替换为路由器的公网IP,因此互联网中的其他设备看到源地址为路由器的公网IP,所以其返回数据时,就会把路由器的公网IP设置为目标地址,路由器接收到数据之后,NAT设备再将数据的目标地址由路由器的公网IP改为原设备的私网IP,最终数据就能返回到该设备了。具体流程如下图所示

在对我们的主机所处的网络环境有了一个了解后,下面分别为大家介绍VMware中的三种网络模式。

桥接模式

桥接模式的原理如下图所示

这种模式下,VMware虚拟出了一个交换机。首先,该虚拟交换机通过主机的物理网卡连接到主机所在的网络中,然后所有的虚拟机都通过虚拟交换机接入到主机所在网络中。所以在该模式下,虚拟机和主机位于同一网络中,因此在主机接入网络的前提下,虚拟机和物理机是可以互通的。

NAT模式

NAT模式的原理如下图所示

这种模式下,VMware虚拟出了一个交换机,一个DHCP服务以及一个NAT服务,相当于构成了一个虚拟路由器。虚拟路由器通过主机的物理网卡连接到主机所在的网络,虚拟机则全部连接到虚拟路由器上,组成了一个子网。此时所有的虚拟机位于同一网络,因此彼此之间可以互通,但是主机不能与虚拟机互通。

为使主机能够和虚拟机互通,VMware又在主机中虚拟出了一个网卡,并连接到了这个虚拟路由器中,这时主机便可虚拟机互通了。

仅主机模式

仅主机模式的原理如下图所示

这种模式,和NAT模式十分相似,唯一的区别是,虚拟路由器并未连接到主机所在的网络中,因此主机和虚拟机之间可以互通,但是虚拟机不能访问互联网。

虚拟机网络配置

网络模式选择

为保证主机未联网的情况下,主机和虚拟机也能实现互通;同时保证主机联网的情况下虚拟机也能访问互联网,我们最好选择上述三种模式中的NAT模式,具体配置如下。

VMware虚拟网络配置

点击VMware菜单栏中的`编辑`,选择`虚拟网络编辑器`

打开虚拟网络编辑器后,赋予管理员权限

配置VMnet8子网

打开NAT配置界面

修改NAT配置

注意事项: NAT网关IP须位于VMnet8子网IP范围内。

虚拟机选择网络模式

1. 修改虚拟机所使用的网络模式

2. 选择NAT模式

windows主机网络配置

上述配置中,VMware已将Windows主机连接到虚拟网络中了,此处只需查看Windows主机中的虚拟网络网卡配置是否正确即可。

1. 打开网络适配器配置面板
`Win+R`打开运行窗口,输入`ncpa.cpl`,然后按回车键

2. 查看VMnet8虚拟网络适配器

3. 查看IpV4配置

  • 注意事项: 主机IP须位于VMnet8子网IP范围内。

配置静态IP

NAT模式下,虚拟机的IP地址,默认情况下是由虚拟DHCP服务自动分配的,虚拟机的IP地址不固定,这对于SSH远程访问也不友好,所以通常情况下,我们不使用虚拟DHCP服务,而是手动为虚拟机配置静态的IP地址。具体操作如下。

1. 确定网络配置文件

在终端输入如下命令`ifconfig`命令,查看当前的网络接口,内容如下

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
           inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
           inet6 fe80::5fdd:f01e:a4fb:966  prefixlen 64  scopeid 0x20<link>
           ether 00:0c:29:fc:a3:fe  txqueuelen 1000  (Ethernet)
           RX packets 1526  bytes 136998 (133.7 KiB)
           RX errors 0  dropped 0  overruns 0  frame 0
           TX packets 1907  bytes 136735 (133.5 KiB)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
   
   lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
           inet 127.0.0.1  netmask 255.0.0.0
           inet6 ::1  prefixlen 128  scopeid 0x10<host>
           loop  txqueuelen 1000  (Local Loopback)
           RX packets 68  bytes 5916 (5.7 KiB)
           RX errors 0  dropped 0  overruns 0  frame 0
           TX packets 68  bytes 5916 (5.7 KiB)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
   
   virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
           inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
           ether 52:54:00:ea:8a:fb  txqueuelen 1000  (Ethernet)
           RX packets 0  bytes 0 (0.0 B)
           RX errors 0  dropped 0  overruns 0  frame 0
           TX packets 0  bytes 0 (0.0 B)
           TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中ens33是目前的以太网接口,故其配置文件为`vim /etc/sysconfig/network-scripts/ifcfg-ens33`。

2. 修改网络配置文件

# 打开配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

# 内容如下
   TYPE=Ethernet
   PROXY_METHOD=none
   BROWSER_ONLY=no
   BOOTPROTO=dhcp
   DEFROUTE=yes
   IPV4_FAILURE_FATAL=no
   IPV6INIT=yes
   IPV6_AUTOCONF=yes
   IPV6_DEFROUTE=yes
   IPV6_FAILURE_FATAL=no
   IPV6_ADDR_GEN_MODE=stable-privacy
   NAME=ens33
   UUID=bf788989-e095-4e58-865a-e6b07248a514
   DEVICE=ens33
   ONBOOT=yes
  • 需要修改的内容如下
    • 修改`BOOTPROTO`参数为`static`
    • 修改`ONBOOT`参数为`yes`
  • 增加如下内容
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=192.168.10.2
  • 注意事项
    • `IPADDR`需要位于前文VMnet8子网IP范围内,自己指定
    • `GATEWAY`需要配置为前文的NAT服务的网关IP。

    • `DNS1`用于配置DNS服务器, 配置同上, 意思就是转发给主机进行DNS解析

3.  重新启动网络服务

# 在终端执行以下命令,重启network服务
[root@localhost ~]# systemctl restart network

4. 观察网络配置是否生效

在终端执行`ifoconfig`命令,观察`ens33`的网络接口的IP地址是否为前文所配置的`IPADDR`。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值