一. 环境准备: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 目录操作
- 查看工作目录
pwd
- 查看当前工作目录下的所有文件
ls
或
ls 目录名称
-
目录切换
命令关键字: 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 第一列说明
第一列中分别中-、d、l这三种表示方式
其中-表示这是一个文件、d表示这是一个文件夹、l表示这是一个软连接
软连接的含义就是在windows当中我们创建的快捷方式
软件连命令:ln -s 原文件 目标路径及文件名称
第2列到第10列
r: read 代表着读
x: execute 代表着执行
w: wirte 代表着写
windows下一般的可执行文件:**.bat或者叫***.exe
2.2.3.2 后续说明
我们再来看除第一列外,我画圈的后边的内容,其中包含-、r、x、w,它们代表的是权限的意思,我们来分别说一下。
其中-代表没有权限、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 练习:
-
创建以下层级的目录
t1
t4
t5
t6
t2
t7
t8
t3
-
经过你的操作后,将目录结构变成如下,并说明你的操作步骤
t1
t4
t6
t2
t7
t5
t8
t3
- 再经过你的操作后,将目录变成如下,并说明你的操作步骤
t1
t4
t5
t6
t2
t7
t5
t8
t3
t8
- 再经过你的操作后,将目录变成如下,并说明你的操作步骤
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
应用场景:
- 当我们知道某个文件的名字,但不记得具体位置的时候可使用
- 当我们大概知道文件的名字,但记不住全名了的时候可以使用
根据文件名称查找文件
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 devtar -选项 压缩包文件名 -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编辑器包含的模式
- 命令模式
- 刚刚开始进入时,处于这个模式,按
字母i进入编辑模式,按冒号:进入底线命令模式
- 刚刚开始进入时,处于这个模式,按
- 编辑模式
- 进入文件后,按一下
字母i,就进入了编辑模式,编辑模式按ESC键就回到了命令模式
- 进入文件后,按一下
- 底线命令模式
- 在命令模式下,按冒号就进入了底线命令模式,按回车键就结束了底线命令模式,进入到了命令模式
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
生产者生产消费,消费者能够消费到消息,意味着环境搭建成功。