三、Linux

1 阅读36分钟

一. 环境准备:Linux本地搭建与云服务器搭建

1.1 环境准备:安装VirtualBox

1.1.1 安装BirtualBox虚拟机

1.1.1.1 安装软件获取方式一:

直接从我提供的“上课所需软件”中,找到**\Linux操作系统学习软件\虚拟机软件**文件夹,里边一共包含了2个版本

  • 6版本

    • windows : VirtualBox-6.1.32-149290-Windows.exe

    • MacOS(6版本不做处理器的区分,都是这个) : VirtualBox-6.1.50-161033-OSX.dmg

  • 7版本

    • windows : VirtualBox-7.2.4-170995-Win.exe
    • MacOS X86_64 : VirtualBox-7.2.4-170995-OSX.dmg
    • MacOS arm64 : VirtualBox-7.2.4-170995-macOSArm64.dmg

根据自己的电脑型号进行选择

1.1.1.2 安装软件获取方式二:

从官网下载:

VirtualBox7下载地址:www.oracle.com/nl/virtuali…

VirtualBox6下载地址:www.virtualbox.org/wiki/Downlo…

在这个网址上下载对应的操作系统版本,不要下错了。

我安装的是6版本,7版本有时候不太稳定,有可能会出问题,如果你的7也有问题,就安装6

1.1.1.3 安装VirtualBox

双击安装文件后,点击下一步

修改你的安装路径,切记:不能有中文

点击下一步

直接点击下一步即可

选择是

点击安装

等待即可

如果弹出来这个选择框,就点击安装

等待安装

点击完成

至此VirtualBox安装完成

1.2 环境准备:Mac系统基于VirtualBox虚拟机软件搭建ubuntu系统

1.2.1 基于VirtualBox虚拟机软件搭建ubuntu操作系统

下载安装成功后,打开VirtualBox,在virtual box上点击新建后

选择虚拟机类型为Linux,选择版本为ubuntu64位

点击继续。

内存大小选择到2048MB

点击继续。

然后创建虚拟硬盘

点击创建

点击继续

点击创建

然后点击启动

接下来到了选择镜像的环节了

点击图片中的”文件夹“图标

点击注册

然后在新的弹框中选择你的ubuntu所在位置(这里可以从我们的网盘中下载到,也可以到官网下载),网盘的位置是”虚拟机“文件夹下。

我这里选的是Ubuntu20,但不影响安装过程,什么版本都是一样的,你安装24即可

选中文件后:

点击选择

点击启动

这个时候虚拟机将会开始正式的安装

稍作等待后,将会进入选择语言窗口

鼠标选中虚拟机后,直接回车即可

回车后显示如下页面

继续回车

继续回车

继续回车

继续回车,proxy address不用管

继续回车

这个时候你的鼠标是在截图中的**(x)位置,你需要一直按键盘中的”下“按钮,把光标挪到Done**上

然后回车

继续回车

这里光标要移动到**"continue"**上,然后回车

接下来进入到设置用户名和密码的阶段

设置好你自己的用户名和密码,按Tab键可以向下切换输入,然后将光标移动到Done按钮上,回车即可

下边这一页不用管,直接回车

选择把Install OpenSSH server安装上,按回车就选中了,然后将光标移动到Done下,然后回车

按回车后将会出现如下页面

我们都不用管,直接按键盘**”下“按钮,把光标移动到Done**上,然后回车即可,后续需要的东西我们会自己安装。

这个时候已经完成了基本的设置,接下来我们将要经历漫长的等待,系统正在做一些更新。。。。。。。。

如果等待的无聊,也可以按**”下“**按键将光标移动到”View full log“上,查看一下完整的日志,至少这里的日志会动,看起来它确实在工作。

等待了一会,将会变成如下的样子:

我们将光标移动到Reboot Now上边,然后回车,这就执行了虚拟机重启,其实到这里就安装好了,我们还需要进行一些设置,页面如果在这里停止了,你就按一下回车就可以了。

页面工作一会就又停住了,你再按一下回车,就出现了下图中的样子:

输入我们的用户名和密码(用户名和密码是上边安装过程中我们自己设置的,记得输入你自己的),这里你输入密码的时候是看不见的,直接输入就行,输入完就回车

这就登陆成功了

我们切换到root用户上,命令是sudo su,然后输入密码

输入命令shutdown -h now,执行关机,我们要做一下网络设置

关机后,设置桥接网络

选中我们的虚拟机,然后点击设置,弹出的窗口中选择网络,连接方式选择桥接网络,点确定即可

然后点击启动按钮,把ubuntu虚拟机启动起来,输入用户名和密码进行登录

安装SSH远程连接的服务,命令:sudo apt install openssh-server,输入密码,遇到需要确认则按y

关闭防火墙: sudo ufw disable

查看ip地址,命令:ip addr

获取到IP后,远程登陆即可

1.3 环境准备:Windows系统基于VirtualBox虚拟机软件搭建ubuntu系统

1.3.1 基于VirtualBox虚拟机软件搭建ubuntu操作系统

下载安装成功后,打开VirtualBox,在virtual box上点击新建后

选择虚拟机类型为Linux,选择版本为ubuntu64位

名称输入一个英文字母的组合就可以,文件夹的选择一定不能有中文

点击继续。

内存大小选择到2048MB

点击继续。

然后创建虚拟硬盘

点击创建

点击下一步

这个磁盘大小,你想调整大一点也可以,不调整也行,然后点击创建

然后点击启动

接下来到了选择镜像的环节了

点击图片中的”文件夹“图标

点击注册

然后在新的弹框中选择你的ubuntu所在位置

选中文件后:

点击选择

点击启动

这个时候虚拟机将会开始正式的安装

直接点击回车即可

稍作等待后,将会进入选择语言窗口

鼠标选中虚拟机后,直接回车即可

回车后显示如下页面

继续回车

继续回车

继续回车

继续回车,proxy address不用管

继续回车

这个时候你的鼠标是在截图中的**(x)位置,你需要一直按键盘中的”下“按钮,把光标挪到Done**上

然后回车

继续回车

这里光标要移动到**"continue"**上,然后回车

接下来进入到设置用户名和密码的阶段

设置好你自己的用户名和密码,按Tab键可以向下切换输入,然后将光标移动到Done按钮上,回车即可

下边这一页不用管,直接回车

选择把Install OpenSSH server安装上,按回车就选中了

按回车后将会出现如下页面

我们都不用管,直接按键盘**”下“按钮,把光标移动到Done**上,然后回车即可,后续需要的东西我们会自己安装。

这个时候已经完成了基本的设置,接下来我们将要经历漫长的等待,系统正在做一些更新。。。。。。。。

如果等待的无聊,也可以按**”下“**按键将光标移动到”View full log“上,查看一下完整的日志,至少这里的日志会动,看起来它确实在工作。

等待了一会,将会变成如下的样子:

我们将光标移动到Reboot Now上边,然后回车,这就执行了虚拟机重启,其实到这里就安装好了,我们还需要进行一些设置,页面如果在这里停止了,你就按一下回车就可以了。

页面工作一会就又停住了,你再按一下回车,就出现了下图中的样子:

输入我们的用户名和密码(用户名和密码是上边安装过程中我们自己设置的,记得输入你自己的),这里你输入密码的时候是看不见的,直接输入就行,输入完就回车

这就登陆成功了

我们切换到root用户上,命令是sudo su,然后输入密码

看到了“root”就是切换root用户成功了

输入命令shutdown -h now,输入完这个命令后,直接回车,执行关机,我们要做一下网络设置

关机后,设置桥接网络

选中我们的虚拟机,然后点击设置,弹出的窗口中选择网络,连接方式选择桥接网络,点确定即可

然后点击启动按钮,把ubuntu虚拟机启动起来,输入用户名和密码进行登录

如果你前边安装的时候,忘记勾选了那个Install OpenSSH server 你需要安装SSH远程连接的服务,命令:sudo apt install openssh-server,输入密码,遇到需要确认则按y,如果安装了,这个步骤就不用做了

关闭防火墙: sudo ufw disable

查看ip地址,命令:ip addr

获取到IP后,远程登陆即可,这个ip要记住,后边会用,或者记住获得的方式

至此,安装完毕!

1.4 环境准备:安装FinalShell并连接Linux操作系统

1.4.1 环境准备:安装FinalShell并连接Linux操作系统

1.4.1.1 安装软件获取方式一:

直接从我提供的“上课所需软件”中,找到**\Linux操作系统学习软件\客户端连接软件**文件夹

  • windows : finalshell_windows_x64.exe
  • MacOS X86_64 : finalshell_macos_x64.pkg
  • MacOS arm64 : finalshell_macos_arm64.pkg

根据自己的电脑型号进行选择

1.4.1.2 安装软件获取方式二:

从官网下载:

下载地址:www.hostbuf.com/t/988.html

在这个网址上下载对应的操作系统版本,不要下错了。

1.4.1.3 FinalShell软件安装

点击我接受

点击下一步

选择安装路径,路径中不要有中文,点击安装

如果有弹框,就点确定

点击关闭,安装完成

1.4.1.4 使用FinalShell连接Linux

点击文件夹图标,会弹出来连接管理器的弹窗

点击下图中,白色的这个新建按钮,然后会出现一个下拉选择框,选择**SSH连接(Linux)**这个选项

弹出新建连接这个弹框

输入你的信息

  • 名称:随意填写,啥都行
  • 主机:这个必须是你安装完ubuntu里边的那个ip,在前边安装虚拟机的最后一步
  • 用户名:安装虚拟机时候,你自己填的那个用户名
  • 密码:安装虚拟机时候,你自己设置的密码

点击确定

双击连接管理器,你自己创建的这个连接

点击接受并保存

见到如下画面就连接成功了

1.5 环境准备:为ubuntu系统设置固定IP

1.5.1 环境准备:为ubuntu系统设置固定IP

这一节课的难点是我们还没有学过Linux命令,所以文档一定要仔细看,一个字都不能错误,一个空格都不能写错,不然就会设置不成功。

Linux操作系统是对字母大小写、空格等操作非常敏感的操作系统。

一定要先切换到英文输入法下,再进行操作!

1.5.2 设置固定IP的目的

每次关闭Linux和启动Linux后IP不会产生变化,如果你切换了网络并且不设置固定IP,每次启动Linux后IP会变。

当然不设置固定IP也并不影响后续的学习,只不过就是你的电脑切换了网络,再次启动Linux后,你需要使用ip addr命令,查看ip后,再使用FinalShell进行连接即可。

1.5.3 开始设置

连接上Ubuntu后,界面如下:

输入以下命令,查看网卡,(关注信息,如 enp0s3、enp4s0)和当前 IP

ip a

输入后,如下图

输入以下命令,确认网关,关注路由器地址,示例 192.168.1.1或192.168.100.1等

ip route show default

查看配置文件:

命令如下

ls /etc/netplan/

编辑 netplan 配置文件

输入以下命令

sudo vim  /etc/netplan/50-cloud-init.yaml

输入后如下图:

然后点击回车,输入密码,密码输入的时候不会展示出来,密码就是你的登录密码,输入完回车即可

如下图:

双击字母d,每一次双击会删除掉一行,把这个文件里的内容删除干净

删完之后如下图:

按以下字母i,让左下角这里变成insert,这里变成了insert就代表着可以往这个文件里写入内容了

先把下边的配置文件复制到你本地的记事本里,注意要根据你自己上边查看到的信息更改里边的内容,不要动这里边的缩进

额外说明:如果你家里的设备比较多,这个IP:192.168.100.105 可以改的大一些,防止冲突,例如:192.168.100.200

network:
  version: 2
  renderer: networkd  # 服务器版用 networkd,桌面版用 NetworkManager,我们现在都是用的服务器版
  ethernets:
    enp0s3:  # 替换为你的网卡名,我的就是enp0s3,这个值是上边用ip a命令看见的那个
      dhcp4: no  # 禁用 DHCP
      addresses:
        - 192.168.100.105/24  # 固定 IP/子网掩码(/24=255.255.255.0) 固定ip就是你想设置的ip,前边3个要跟你的网关一致,我的网关前面3个是192.168.100,这个ip可以是你现在的ip,不要改,现在一个wifi连那么多设备,万一你改成别的了,冲突了就连不上了
      routes:
        - to: default
          via: 192.168.100.1  # 网关,这个要根据你自己的改,这个也是你们家路由器的管理地址
      nameservers:
        addresses: [114.114.114.114, 8.8.8.8]  # DNS 服务器

这个时候按以下ESC按键

输入:

:wq!

这个命令的含义是保存并退出

输入后,按回车键

应用配置并验证

检查配置语法 ,命令如下

sudo netplan try

输入完这个命令后,会要求你输入密码,输入密码后回车,如下图

等一会儿之后,这个连接可能会断开,我断开的原因是我设置的固定ip跟我现在的ip不一样,后来我又试了一次没改ip的就没事,你别改ip了,出了问题以现在的情况你不太好搞定

到这里,我们先回到我们的virtualbox的虚拟机里边

输入命令,应用配置:

sudo netplan apply

输入命令,验证网络

ip a

这个时候我们需要重新修改一下我们的连接配置,如果没改ip就不需要后边的步骤了,直接双击连接管理器里的连接就能重新连接,如果你改了并且没出问题,那就修改一下。

打开连接管理器

在我们创建的连接上点击右键,选择编辑

修改这个主机ip,为我们设置的固定ip

修改后,点击确定

双击这个连接,重新连接

二. 必知必会:Linux基础命令

2.1 认识根目录:Linux根目录文件夹介绍及切换工作目录

2.1.1 认识根目录:Linux根目录文件夹介绍及切换工作目录

Linux操作系统下:一切皆文件

2.1.2 目录介绍

在Linux下,我们看不到这些驱动器盘符,我们看到的是文件夹

在Linux中没有盘符的概念,只有一个根目录/,所有文件都在根目录下

  • /

    • 根目录,一般根目录下只存放目录,在Linux系统中只有一个根目录,所有的文件目录都是从根目录开始
    • 例如:在终端输入/home,告诉电脑,先从根目录开始,在进入到home目录中
  • /bin、/usr/bin

    • 可执行二进制文件的目录,如常用的命令:ls、tar, mv,cat等
  • /boot

​ 放置Linux系统启动时用到的一些文件

  • /dev

​ 存放Linux系统的设备文件,访问该目录下的某个文件,相当于访问某个设备,常用的例如挂载光驱

  • /etc

​ 系统配置文件存放的目录

  • /home

​ 系统默认的用户家目录

  • /opt

​ 给主机额外安装软件所摆放的目录

  • srv

    • 服务启动之后需要访问的数据目录
  • /usr

    • 应用程序存放目录
    • /usr/bin存放应用程序
    • /usr/share存放共享数据
    • /usr/lib存放不能直接运行的,却是许多程序运行所必须的一些函数库文件
    • /usr/local存放软件升级包
    • /usr/share/doc系统说明文件
    • /usr/share/man程序说明文件
  • /var

    • /var放置系统执行过程中经常发生变化的文件
    • /var/log随时更改的日志文件
    • /var/run程序或服务启动后,其PID存放的目录
2.1.2.1 终端命令基本组成
  • 格式

    command [-options] [parameter]
    命令名 [-选项] [参数]
    
    • command命令名,相应功能的英文单词或单词的缩写
    • [-options]选项,可用来对命令进行控制,也可以省略
    • [parameter]传给命令的参数,可以是0个,一个或多个
    • []代表可选

2.1.3 目录操作

  1. 查看工作目录
pwd
  1. 查看当前工作目录下的所有文件
ls
或
ls 目录名称
  1. 目录切换

    命令关键字: cd

    3.1 切换到根目录

    cd /
    

    3.2切换当前目录下的目录

    # 实现方式1
    cd ./目录路径
    # 实现方式2
    cd 目录路径
    

    3.3 切换到家目录

    cd ~
    

    3.4 切换到上一层目录

    cd ..
    

    3.5 切换到从根目录开始的目录

    cd /目标路径
    

​ 3.6 切换到上一次所在的目录

cd - 

2.1.4 路径中的.

.就代表当前路径的意思

2.1.5 相对路径与绝对路径

相对路径:目标路径相对于当前文件或文件夹的路径

绝对路径:从根目录开始的路径

2.1.6 路径自动补全

巧用tab键

2.1.7 练习:

请按如下步骤进行操作,并截图形成笔记

  • 假设在根目录下有一个test文件夹,test文件夹下一个文件叫test.log,请描述test.log的绝对路径表示

  • 假设有用户h1为登录用户,在登录用户的家目录下有一个文件叫1.txt,请分别使用两种方式来描述1.txt的路径

  • 有目录结构如下:

    • /

      home

      zjy

      t1

      t3

      goods.txt

      t2

      t4

    • 当前工作目录为t4,请使用两种方式描述goods.txt的路径,一种为绝对路径,第二种为相对路径方式

  • 工作目录切换到/usr/local/lib下

  • 工作目录切换到家目录

  • 工作目录切换到根目录

2.2 认识文件夹:详解目录的基本操作

2.2.1 认识文件夹:详解目录的基本操作

基本命令

ls
参数选项
a:显示隐藏文件
l:以列表的形式展示内容,并展示更多的信息
h:展示文件大小

查看文件夹下文件详情

### 2.2.2 实现方式1
ls -l
### 2.2.3 实现方式2
ll

ll命令执行后的详情解释:

执行后的结果如下图:

主要看上图画圈的部分

2.2.3.1 第一列说明

第一列中分别中-dl这三种表示方式

其中-表示这是一个文件、d表示这是一个文件夹、l表示这是一个软连接

软连接的含义就是在windows当中我们创建的快捷方式

软件连命令:ln -s 原文件 目标路径及文件名称

第2列到第10列

r: read 代表着读

x: execute 代表着执行

w: wirte 代表着写

windows下一般的可执行文件:**.bat或者叫***.exe

2.2.3.2 后续说明

我们再来看除第一列外,我画圈的后边的内容,其中包含-rxw,它们代表的是权限的意思,我们来分别说一下。

其中-代表没有权限、r代表着读的权限、x代表着可执行权限、w代表写的权限。

现在我们遗留下两个问题:

  • 什么是权限?
  • 为什么后边有那么多列,都代表什么?

这两个问题我们在后边的课程中解决。

2.3 文件权限:详解读、写、执行三种权限

2.3.1 用户权限命令

2.3.1.1 基本说明

命令:chmod

说明:Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

只有文件所有者和超级用户可以修改文件或目录的权限。

参数说明:

  • u 表示该文件的拥有者
  • g 表示与该文件的拥有者属于同一个群体(group)者
  • o 表示其他以外的人
  • a 表示这三者皆是。

使用说明:

  • + 表示增加权限
  • -表示取消权限
  • = 表示唯一设定权限。

  • r 表示可读取,对应数字为4
  • w 表示可写入,对应数字为2
  • x 表示可执行,对应数字为1
2.3.1.2 使用实例

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

为 ex1.py 文件拥有者增加可执行权限:

chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

创建一个文件,名字为a.txt

touch a.txt

2.3.1.3 数字权限使用说明

语法为:

chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4

w=2

x=1
  • 若要 rwx 属性则 4+2+1=7;
  • 若要 rw- 属性则 4+2=6;
  • 若要 r-x 属性则 4+1=5。

切记切记:系统文件的权限不要改。不是自己的文件,尽量也不要改权限,乱改权限可能把系统改崩了!

2.3.2 练习:

  • 前提:工作目录为登录用户的家目录。分为用至少两种命令实现。
    • 创建文件file1.txt,将文件权限修改为所有用户可读可写可执行。
    • 创建文件file2.txt,将文件权限修改为文件所有者可读可写可执行,组内用户可读可写,其他用户可读
    • 创建文件file3.txt,将文件权限修改为文件所有者可执行,组内用户可读,其他用户可写

2.4 文件夹的管理:文件夹的创建、删除与移动

2.4.1 创建目录

命令:mkdir

用法:

mkdir  目录名

同时创建多个目录

mkdir 目录1 目录2 目录3

同时创建多级目录

mkdir -p 目录名/目录名/目录名.....

2.4.2 修改目录

命令:mv

mv 现在的目录名称 新目录名称

说明:mv也有移动的意思,可以用于移动目录

2.4.3 移动目录用法

mv 文件所在路径及文件名  目标路径

mv同时也有重命名的用法

mv 当前文件或目录  新的名字
注意:新的名字前边可以加路径,如果加了路径就代表同时移动并重命名
如果不加路径,就是当前文件夹下直接重命名

2.4.4 删除目录

命令:rm

删除一个文件

rm 文件名称

删除一个文件夹

rm -r 文件夹名称

依次删除这个文件夹下所有的文件夹及文件

rm -rf 当前文件夹名

删除当前文件夹下的所有内容

rm -rf *

2.4.5 复制目录

命令:cp

复制一个文件

cp 文件所在目录及文件名  被粘贴到的目标目录

复制一个文件夹下所有内容到另外一个文件夹下

cp -r 文件夹所在目录  被粘贴到的目录

2.4.6 用户切换

命令 sudo su 是切换到root用户下

命令su - 用户名是切换到指定用户下

2.4.7 练习:

  1. 创建以下层级的目录

    t1

    t4

    t5

    t6

    t2

    t7

    t8

    t3

  2. 经过你的操作后,将目录结构变成如下,并说明你的操作步骤

t1

t4

t6

t2

t7

t5

t8

t3

  1. 再经过你的操作后,将目录变成如下,并说明你的操作步骤

t1

t4

t5

t6

t2

t7

t5

t8

t3

t8

  1. 再经过你的操作后,将目录变成如下,并说明你的操作步骤

t1

2.5 文件管理:文件创建、查看与查找

2.5.1 创建一个文件

命令:touch

用法:

touch 文件名

说明:如果文件不存在则创建一个空白文件,这里需要注意各类文件的后缀名

2.5.2 输出重定向的方式创建文件

1、覆盖写入

echo "aaa" > 文件名

2、追加写入

echo "aaa" >> 文件名

2.5.3 删除一个文件

命令:·rm

用法与目录管理中一致,这里就不做讲解了。

2.5.4 查找文件

命令:find

应用场景:

  1. 当我们知道某个文件的名字,但不记得具体位置的时候可使用
  2. 当我们大概知道文件的名字,但记不住全名了的时候可以使用

根据文件名称查找文件

find 要查找的目录路径 -name 要查找的文件名称

根据模糊的文件名称查找文件

find 要查找的目录路径 -name  *模糊的文件名*
举例:
find ./ -name "*.txt"  注意这里要有双引号

更多举例:

在当前路径下查找以.sh为结尾的文件

find ./ -name *.sh

备注:如果自己完全不知道路径,需要从最根部路径开始搜索文件时,可选择使用root用户权限执行,不然其他用户很多路径没有权限

sudo find / -name 文件名

备注:文件查找时,查找的是指定路径及其子路径,一起查找

2.5.5 查找可执行文件

which命令 在环境变量设置的目录里查找符合条件的文件

  • 语法格式

    which -选项 文件名
      -n <文件名长度>指定文件名长度 指定的长度必须大于或等于所有文件中最长的文件名
      -p<文件名长度> 与-n参数相同 ,文件名长度包含文件的路径
      -w 指定输出时栏位的宽度
      -v 显示版本信息
    
    #查看bash的绝对路径
    which bash
    

whereis 只能查询二进制文件、说明文档、源文件等

which 只能查可执行文件

2.5.6 文件的上传与下载

上传文件:rz

下载文件:sz

注意:上传或下载时,不能上传或下载文件夹,只能是文件,如果是多个文件,请统一压缩成压缩包

2.5.7 清空屏幕

命令:clear

2.5.8 查看文件所有内容

命令:cat

用法:

cat 文件名

查看文件的同时显示行号

cat -n 文件名

2.5.9 文件内容分屏向下查看

命令:more

用法:

more 文件名

当文件中内容太多时,我们使用cat就会一下把所有内容显示出来,查看还得往上重新翻,很不方便,这个时候使用more。

使用more时,一屏显示不下时就会分屏

使用过程中:使用空格键 跳到下一屏内容,回车键显示下一行内容,字母q键退出,注意不能回看。

2.5.10 可以回看的分屏显示命令

当我们使用more命令时,如果想再次查看已经查看过的内容,这个是做不到的,如果未来使用命令时,可能存在这种情况,我们需要使用命令less

用法:

less 文件名

使用过程中空格键 跳到下一屏,字母b键上一屏,回车键显示下一行,字母k键上一行

2.5.11 显示文件前几行

命令:head

显示文件前10行数据

head 文件名

显示文件前5行数据

head -n 5 文件名

2.5.12 查看文件末尾内容

命令:tail

显示文件最后10行数据

tail 文件名

显示文件最后5行数据

tail -n 5 文件名

在企业项目中,tail最常用的用法是 tail -f 文件名,它的作用是动态观测和查看文件。

2.5.13 统计文件的行数

命令: wc

wc 命令用于统计文件中字节数、字符数、行数等

语法格式:

wc -选项 文件名称
  -c 文件的字节数
  -l 文件的行数
  -w 统计字数(空格或换行统计字数)
#查看test02.txt文件中有多少行内容
wc -l test02.txt

2.5.14 文件压缩与解压

tar 命令用于压缩文件以及解压文件

  • 语法格式

    tar -选项 打包文件名 要压缩的文件
      -c 建立新的压缩文件
      -z 通过gzip压缩文件
      -v 显示操作过程
      -f 指定压缩文件
    
    #将家目录中qa目录进行压缩,压缩为qa.tar.gz
    tar -czvf qa.tar.gz qa
    tar -czvf tsd2308.tar.gz qa test1 dev
    
    tar -选项 压缩包文件名
      -x 从压缩的文件中提取文件
      -z 通过gzip
      -v 显示操作过程
      -f 指定压缩文件
    
    #将tsd2308压缩包移动到test1目录下进行解压缩
    #将qa压缩包移动到dev目录下进行解压缩
    mv tsd2308.tar.gz test1
    mv qa.tar.gz dev
    cd test1/
    tar -xzvf tsd2308.tar.gz
    cd ..
    cd dev/
    tar -xzvf qa.tar.gz
    
unzip 用于解压zip文件

2.5.15 管道符

可以通过管道符将两个命令连接起来,左边命令的输出会作为管道符右边命令的输入

#查询IP信息看开头2行内容
ifconfig | head -2

对于centos用户,查看ip命令是ifconfig
mac用户,查看ip命令是ifconfig
对于Ubuntu用户,查看ip命令是ip addr

2.5.16 文本搜索

grep 用于过滤/搜索特定字符

  • 语法格式

    grep -选项 ‘搜索内容’ 文件名
      -v 显示不包含匹配文本的所有行
      -n 显示匹配 行 和 行号
      -i 忽略大小写
    

查看文件中包含error的信息:

cat 文件名| grep error

2.6 文件管理:文件编辑命令vim

2.6.1 文件管理:文件编辑命令vim

使用工具vim,所以我们学的都是vim编辑器的命令

2.6.2 安装vim编辑工具

命令:

Centos安装:yum install vim
Ubuntu安装:apt install vim

2.6.3 编辑一个文件,如果没有则创建

用法:

vim 文件名

常见用法:

  • 上下左右光标移动,每次只能移动一个位置

  • i开启编辑模式,开启编辑模式后,可正常输入内容

  • esc退出编辑模式

退出编辑模式后,按冒号:的情况

  • q退出文件
  • w写入内容
  • !强制操作

一张来自于网络,多年前的一张老图

vim编辑器包含的模式

  1. 命令模式
    • 刚刚开始进入时,处于这个模式,按字母i进入编辑模式,按冒号:进入底线命令模式
  2. 编辑模式
    • 进入文件后,按一下字母i,就进入了编辑模式,编辑模式按ESC键就回到了命令模式
  3. 底线命令模式
    • 在命令模式下,按冒号就进入了底线命令模式,按回车键就结束了底线命令模式,进入到了命令模式

2.6.4 光标移动到文件尾部

G

2.6.5 光标移动到文件头部

gg

2.6.6 光标移动到行首

^

2.6.7 光标移动到行尾

$

2.6.8 光标跳转到目标行号

10G

2.6.9 删除光标后的一个字符

x

2.6.10 删除光标前的一个字符

X

2.6.11 剪切光标所在行

dd

2.6.12 撤销上一步

u

2.6.13 反撤销

ctrl + r

2.6.14 复制光标所在行

yy

2.6.15 复制当前行开始的n行

n yy

2.6.16 光标所在位置向下一行进行粘贴

p

2.6.17 复制光标开始一直到行尾

y$

2.6.18 到行首插入

I

2.6.19 到行尾插入

A

2.6.20 跳转到下一个单词

w

2.6.21 光标跳转到上一个单词

b

2.6.22 到达光标所在单词的尾部

e

2.6.23 向下翻页

ctrl + f

2.6.24 向上翻页

ctrl + b

2.6.25 底线命令模式

首先需要进入底线模式

2.6.26 设置显示行号

:set nu

2.6.27 设置取消行号显示

:set nonu

2.6.28 跳转到目标行

:15

2.6.29 向下查找某个单词

/word

开始查找后,n是查找下一个,N是查找上一个

2.6.30 向上查找某个单词

?word

2.7 环境运维:网络与进程等相关命令

2.7.1 环境运维:网络与进程等相关命令

2.7.1.1 查看全部进程

ps 命令用于查看全部进程的状态

  • 语法格式

    ps -选项
      -e 显示全部进程
      -u 以用户为主的进程状态
      -f 完整的输出
    常用-ef
    

    查看指定进程信息

    ps -ef | grep pid(根据进程id号查询)
    
2.7.1.2 终止进程

kill 命令用于终止命令,通常查询进程pid,然后使用kill命令终止进程

  • 语法格式

    kill -选项 进程号(PID)
       -9 表示强制进程立即停止
    
2.7.1.3 查看防火墙状态

CentOS系统操作

systemctl status firewalld 命令用于查看防火墙状态

  • Active: inactive (dead) 表示停止
  • Active:active(running) 表示运行
2.7.1.4 开启防火墙

systemctl start firewalld 命令用于开启防火墙

2.7.1.5 关闭防火墙

systemctl stop firewalld 命令用于关闭防火墙

Ubuntu系统操作

关闭防火墙 sudo ufw disable

2.7.1.6 查看IP地址

centos:

ifconfig 命令用于查看IP地址

- inet 表示网卡的IP地址

ubuntu系统:

ip addr
2.7.1.7 查看网络连接情况

ping 命令使用传输协议,发出要求回应信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运行正常

  • 语法格式

    ping 域名/IP地址
    
2.7.1.8 查看端口情况

netstat 命令用于查看各种网络相关信息

  • 语法格式
netstat -选项
  -a 表示显示所有选项
  -t 表示显示tcp相关的选项
  -u 表示显示udp相关的选项
  -n 表示以IP地址方式显示
  -p 显示正在使用的
#请搜索端口行是3306的服务是那个
netstat -ant | grep 3306
查询ssh协议
netstat -anp | grep ssh
#查询有关ssh的进程
ps -ef | grep ssh
2.7.1.9 磁盘空间占用

df 命令用于查看文件系统的磁盘空间占用情况

  • 语法格式

    df -选项
      -a 列出所有的文件系统
      -h 易阅读的格式自行显示
      -T 显示文件系统类型
    
2.7.1.10 查看某文件夹磁盘站用情况

du -sh *

2.7.2 统计目录占用磁盘空间大小

常见用法:

统计当前目录下所有文件及文件夹的大小,*就是个通配符:du -sh *
统计某一个文件的大小:du -sh 文件名
  • -a, --all 显示目录中个别文件的大小。
  • -B, --block-size=大小 使用指定字节数的块
  • -b, --bytes 显示目录或文件大小时,以byte为单位。
  • -c, --total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -D, --dereference-args 显示指定符号链接的源文件大小。
  • -H, --si 与-h参数相同,但是K,M,G是以1000为换算单位。
  • -h, --human-readable 以K,M,G为单位,提高信息的可读性。
  • -k, --kilobytes 以KB(1024bytes)为单位输出。
  • -l, --count-links 重复计算硬件链接的文件。
  • -m, --megabytes 以MB为单位输出。
  • -L<符号链接>, --dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
  • -P, --no-dereference 不跟随任何符号链接(默认)
  • -0, --null 将每个空行视作0 字节而非换行符
  • -S, --separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
  • -s, --summarize 仅显示总计,只列出最后加总的值。
  • -x, --one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件>, --exclude-from=<文件> 在<文件>指定目录或文件。
  • --apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大。
  • --files0-from=F 计算文件F中以NUL结尾的文件名对应占用的磁盘空间如果F的值是"-",则从标准输入读入文件名
  • --exclude=<目录或文件> 略过指定的目录或文件。
  • --max-depth=N 显示目录总计(与--all 一起使用计算文件)当N为指定数值时计算深度为N,等于0时等同--summarize
  • --si 类似-h,但在计算时使用1000 为基底而非1024
  • --time 显示目录或该目录子目录下所有文件的最后修改时间
  • --time=WORD 显示WORD时间,而非修改时间:atime,access,use,ctime 或status
  • --time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):full-iso,long-iso,iso,+FORMAT
  • --help 显示此帮助信息并退出
  • --version 显示版本信息并退出

2.7.3 历史命令查看

history

history 10 查看过去10条

也可以使用!数字的方式直接执行所显示的命令

!n 执行第n条

!! 历史命令的最后一条

!-n 倒数第几条

history -c 清空历史命令

2.7.4 查看发行版信息

lsb_release -a

三. 环境运维:环境搭建实战

3.1 1-Web服务器:Tomcat基本介绍与环境搭建

3.1.1 Tomcat中间件

Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器

在企业中,Tomcat经常被用作Java应用程序的部署应用服务器

Tomcat是一个跨平台的应用服务器,即:可以运行在Linux、Mac以及Windows上。

3.1.2 Tomcat下载地址

https://tomcat.apache.org/download-11.cgi

3.1.3 Tomcat目录结构介绍:

/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件

/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml

/doc:存放Tomcat文档

/server:包含三个子目录:classes、lib和webapps

/server/lib:存放Tomcat服务器所需的各种JAR文件

/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用

/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件

/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)

/logs:存放Tomcat执行时的日志文件

/src:存放Tomcat的源代码

/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

/work:存放JSP编译后产生的class文件

3.1.4 给bin目录下的文件赋予可执行权限

chmod a+x *

3.1.5 下载百度首页的源代码到webapps/ROOT下

curl -o baidu.html www.baidu.com/

3.1.6 jdk的安装与配置

下载jdk,有可以用课程所需软件中找到

下载地址:www.oracle.com/java/techno…

切换到root权限操作:sudo su

以下操作都在root下即可

在环境变量中配置java17生效

vim /etc/profile

JAVA_HOME=/java/jdk-25.0.2
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

环境变量生效命令是

source /etc/profile

输入java -version验证是否生效

3.1.7 启动tomcat

进入到bin目录下,运行startup.sh文件

运行命令:./startup.sh

3.1.8 访问我们自己的程序

打开浏览器,输入ip:8080/你的文件名

我这里的文件名是baidu.html

3.2 2-Web服务器:Nginx基本介绍与环境搭建

3.2.1 Web服务器:Nginx基本介绍与环境搭建

apt-get install nginx

/var/www/html目录:存放静态文件或应用程序

把你的图片,放到这个目录(/var/www/html)下

注意:你自己上传的图片的访问权限问题!

/etc/nginx/sites-availabel/default 修改配置文件

service nginx start 启动nginx

service nginx stop 停止nginx

3.3 3-消息队列:kafka环境搭建

3.3.1 jdk的安装与配置

下载jdk,有可以用课程所需软件中找到

下载地址:www.oracle.com/java/techno…

切换到root权限操作:sudo su

以下操作都在root下即可

在环境变量中配置java25生效

vim /etc/profile

JAVA_HOME=/java/jdk-25.0.2
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

环境变量生效命令是

source /etc/profile

输入java -version验证是否生效

3.3.2 配置kafka

下载kafka: kafka.apache.org/downloads(不…

创建一个文件夹,为工作空间,用来存放kafka

cd /

mkdir workspace

把kafka的包放在workspace文件夹下,进行解压

tar -zxvf kafka包名

修改监听的配置文件:

cd kafka的包路径
vim config/server.properties 

使用set nu将文件的行号显示出来,修改第34行

listeners=PLAINTEXT://你自己的ip地址:9092
例如:
listeners=PLAINTEXT://172.16.216.238:9092
如果是本地你就写:
listeners=PLAINTEXT://127.0.0.1:9092或listeners=PLAINTEXT://localhost:9092

然后,点击esc进入到命令模式,再输入:wq保存退出

3.3.3 启动zookeeper

启动zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties

注意:这样启动后,这个打开的终端将会被占用

如果想要后台启动可以使用:

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

3.3.4 启动kafka

这里需要重新开一个命令行窗口,重新开窗口后也要切到root用户下,刚切换到root用户下,可能java是不生效的

如果不生效,那么运行一下:source /etc/profile

kafka启动命令:

bin/kafka-server-start.sh config/server.properties

3.3.5 创建主题:topic

这里topic的名字为topic-test,或者叫其他的你自己随意起,但是不能是中文,也不能是纯数字

bin/kafka-topics.sh --create --topic 你自己的主题名称 --bootstrap-server 你自己的ip地址:9092
例如:
bin/kafka-topics.sh --create --topic topic-test --bootstrap-server 172.16.216.238:9092
bin/kafka-topics.sh --create --topic topic-test --bootstrap-server 127.0.0.1:9092

输入完以上命令,出现

Created topic topic-test.

意味着成功

3.3.6 查看创建的topic:

命令为:

bin/kafka-topics.sh --list --bootstrap-server 你自己的ip地址:9092
例如:
bin/kafka-topics.sh --list --bootstrap-server 172.16.216.238:9092

运行命令后,出现topic列表为成功

__consumer_offsets
topic-test
topic-test1

3.3.7 监听topic

就是消费者

这里需要重新开一个命令行窗口,重新开窗口后也要切到root用户下,刚切换到root用户下,可能java是不生效的

如果不生效,那么运行一下:source /etc/profile

命令为:

bin/kafka-console-consumer.sh --topic 你自己创建的主题名称 --from-beginning --bootstrap-server 你的ip地址:9092
例如:
bin/kafka-console-consumer.sh --topic topic-test --from-beginning --bootstrap-server 172.16.216.238:9092

3.3.8 向topic中发送消息

就是生产者

这里需要重新开一个命令行窗口,重新开窗口后也要切到root用户下,刚切换到root用户下,可能java是不生效的

如果不生效,那么运行一下:source /etc/profile

命令为:

bin/kafka-console-producer.sh --broker-list 你自己的ip:9092 --topic 你自己的主题名称
例如:
bin/kafka-console-producer.sh --broker-list 172.16.216.238:9092 --topic topic-test

生产者生产消费,消费者能够消费到消息,意味着环境搭建成功。