【Java后端求职必备!】一篇搞定Linux安装和基础命令的使用:形象生动讲解基础命令、目录结构、权限管理、网络配置与传输等知识点

Linux

本文章较长,创作不易,内容较干,建议先点赞收藏!
by yzyzyzyyzy

文章目录

Linux 基础知识

电脑:个人桌面操作系统(window和macos)、服务器操作系统(Linux)

手机:安卓、IOS、鸿蒙

计算机由硬件和软件组成,软件是用户和硬件之间的桥梁,操作系统是软件的一类

操作系统可以:

调度CPU进行计算

调度内存进行工作

调度硬盘进行数据存储

调度网卡进行网络通讯

……

发展历史

Linux由芬兰学生林纳斯·托瓦兹于1991年出于个人兴趣开发。它继承了Unix的设计思想,但关键性地采用了GPL开源协议,从而吸引了全球开发者共同参与。

组成

Linux由Linux系统内核系统级应用程序两部分组成

内核:调度CPU、调度内存、调度文件系统、调度网关、调度IO等

系统级应用程序:出厂自带程序,可供用户快速上手操作系统(文件管理器、任务管理器、图片查看、音乐播放等)


image-20251010134634059

发行版

内核是免费、开源的,代表任何人都可修改内核,并自行集成系统级程序

但是内核无法直接使用,需要配合应用程序才能使用

所以提供了内核+系统级程序完整封装,称之为Linux发行版

国内外公司发布了很多发行版,我们学习CentOS和ubantu(辅助)

不同的发行版(基本操作命令100%相同)

Linux的环境

难道让自己的电脑重装一个Linux?不可能,Linux不适合日常办公

使用虚拟机来获得可用的Linux系统环境

虚拟机就是电脑中的电脑

image-20251010134634059

安装虚拟机(vmware软件有提供虚拟化的能力)(我演示的是Window,Mac的安装在MacOS安装VMware Fusion视频中)

官网页面访问不稳定,使用我的网盘资源

image-20251010145116999

通过网盘分享的文件链接: VMware

下载好后,点击安装程序,下一步

image-20251010145156843
同意
image-20251010145310385
可以自定义安装位置
image-20251010145338813
我这里两个都不勾
image-20251010145405767
点击下一步
image-20251010145449417
点击安装
image-20251010145526403
image-20251010152009641
安装好后检查网卡,搜索控制面板,打开网络和Internet
image-20251010150910046
点击“查看网络和任务”
image-20251010151047766

点击“更改适配器设置”

image-20251010151129712

查看到两个虚拟网卡VMent1和8即可

image-20251010151245345

因为window10和11的打开方式可能不同,这里有个通用方法

win+R,输入ncpa.cpl,回车

image-20251010151602439

Linux的安装

点击阿里镜像链接,下载

centos-7-isos-x86_64安装包下载_开源镜像站-阿里云

image-20251010162745246

或者到我的网盘资源中下载

通过网盘分享的文件:CentOS

image-20251010162745246

下载好后,打开虚拟机,点击新建一个

image-20251010162745246

选择典型

image-20251010162938247

选择刚刚下载的CentOS(自动检测到CentOS 7,并执行简易安装),点击下一步

image-20251010163150553
设置名称密码
image-20251010163420146
设定虚拟机存放位置
image-20251010163628268
自定义硬盘大小
image-20251010163828896
可以到“自定义硬件”设置更多,勾选“创建后开启”
image-20251010163956101
启动要10-20分钟

点击中间蓝色,输入密码,登录

Linux的远程连接

对于操作系统的使用,有2种形式:

图形化页面、命令行形式

(无论是Window、Linux还是Macos,都支持这两种形式)
(但是无论是企业开发亦或是个人开发,使用Linux操作系统,多数为命令行,效率更高,更加直观,资源占用低,程序运行更稳定)

但是外部的Window和内部Linux系统进行各类交互时不方便,如内容复制粘贴、文件上传下载都要跨越Vmware软件

所以就有通过第三方软件FinalShell,远程连接到Linux操作系统,并操作

FinalShell的下载

我演示的是Window系统的,这里有Mac系统的FinalShell下载和连接:远程连接Linux系统

官网下载:FinalShell官网

点击置顶的

复制适合的地址下载

下载好后,点击文件

image-20251010174727610
image-20251010174800615

选择好安装的位置,点击安装(中途有依赖软件的安装,点击确定)

image-20251010174856432

连接

在虚拟机界面右键打开终端

输入ifconfig,找到虚拟机ip地址

image-20251010175729169
回到FinalShell连接
image-20251010175729169
创建连接
image-20251010180230820
双击连接
image-20251010180330417
连接成功
image-20251010180330417

遇到的问题

当我ifconfig时,网络接口没有启用(ens33是Linux系统的网络接口命名),FinalShell连接不了

image-20251022102711204
基本步骤:

1.使用管理员权限

image-20251022103013998
2.启用ens33网络接口 > 使用dhclient获取IP > 检查NetworkManager状态
sudo ifconfig ens33 up //启用
sudo dhclient ens33 //检查ip
sudo systemctl status NetworkManager //检查状态
image-20251022103126385
3.验证网络连接
ip addr show ens33
image-20251022103412295
4.在ifconfig检查一下,出现了ens33即可
ifconfig
image-20251022103509212
如果希望系统启动时自动启用网络接口,需要编辑网络配置文件:
# 查看并编辑网络配置文件
cat /etc/sysconfig/network-scripts/ifcfg-ens33
vi /etc/sysconfig/network-scripts/ifcfg-ens33

确保文件有以下内容

TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens33
DEVICE=ens33
ONBOOT=yes

虚拟机快照

在学习过程可能损坏Linux操作系统

损坏的话重新安装一个Linux操作系统就会十分麻烦

VMware虚拟机支持为虚拟机制作快照,将当前的状态保存下来,以后可以通过快照回复虚拟机到保存状态

image-20251011105333734
关机时制作快照效率高 image-20251011105730880
右键打开快照管理器
屏幕截图 2025-10-11 105819
点击“拍摄快照”,填写本次快照名称
image-20251011110003855
回复某个状态
image-20251011110324860

对于MAC:拟机快照

扩展-Win10配置WSL得到Ubuntu发行环境

指导视频:扩展-Win10配置WSL(Ubuntu)环境

Linux目录结构

window有多个盘符,如C盘、D盘、E盘

Linux只有一个根目录 / ,所有文件都在它下面

image-20251011111135547

路径之间的层次关系表示:

Linux / 表示: /data/user/hello.txt /开头

Window **\ **表示:D:\data\hello.txt

Linux命令基础

命令行:即Linux终端(Terminal),一种命令提示符页面

命令:即Linux程序,一个命令就是一个Linux程序

基础格式

command [-options] [parameter]

command 命令本身

-options [可选的行为细节]

parameter [可选的参数]

以列表 l 的形式显示目录内的内容

ls -l /home/itheima

复制文件夹test1成为test2

cp -r test1 test2
ls命令

显示目录内的内容

ls [-a -l -h] [Linux路径]

-a -l -h是可选选项(-a列出全部目录包括隐藏,-l列表竖向展示更多信息,-h不可单独使用

可以组合使用

ls -l -a
ls -la
ls -al
ls -lh //展示文件大小,如K M G

-h 选项会自动选择合适的单位:

image-20251011170054315
Linux路径是可选参数(查看指定目录内容)

当不使用选项和参数,直接使用ls命令本体:以平铺形式,列出当前工作目录下的内容

image-20251011162930792

Linux系统的命令行终端在启动时,默认加载HOME目录为当前工作目录,所以ls命令列出的是HOME目录的内容

HOME目录路径:/home/用户名 (我的就是/home/yzy)

打开根目录的方法

image-20251011164923774
cd命令

进入目录

cd [Linux路径]

无选项,有可选参数

不写参数就返回到用户的HOME目录

参数写法:绝对路径(根目录为起点)、相对路径(当前目录为起点,开头不写斜杠

特殊路径符:
… 表示上一级目录 cd … 切换上级目录 cd …/…切换到上二级目录
~ 表示HOME目录 cd ~ 切换到HOME目录 cd ~/Desktop 切换到HOME内的Desktop
. 表示当前目录

pwd命令

显示当前目录

pwd

无选项无参数

mkdir命令

创建新的文件夹

mkdir [-p] Linux路径

Linux路径参数必填(绝对路径/相对路径/特殊路径

-p 表示自动创建不存在的父目录,适用于创建连续多层级的目录

//在当前目录下创建itheima
mkdir itheima
//在指定的绝对路径创建test
mkdir /home/itheima/test
//在当前目录创建test2
mkdir ./test2
//在home目录下创建test3
mkdir ~/test3
//创建itcast、good、666
mkdir -p itcast/good/666

清空命令:ctrl+L

注意事项:
请确保创建文件夹均在HOME目录内完成,在HOME目录外会涉及权限问题,无法成功(后续会讲解权限管控知识)

touch创建文件

创建新文件

touch Linux路径

Linux路径参数必填**(绝对路径/相对路径/特殊路径)**

无命令选项

cat命令

查看文件内容(直接全部显示出来)

cat Linux路径

Linux路径参数必填(绝对路径/相对路径/特殊路径)

无命令选项

more命令

查看文件内容(文件内容过多支持翻页)

more Linux路径

在查看过程中,通过空格翻页

通过q退出查看

cp命令

用于复制(copy)文件/文件夹

copy [-r -a] 参数1 参数2

-r 选项可选,表示递归(复制文件夹时带上)

-a 归档模式,用于完整保留所有信息和目录结构,是备份时最常用的选项。

参数1,Linux路径,表示被复制的文件/文件夹

参数2,Linux路径,表示复制去的地方

//复制单个文件
cp file1.txt /home/user/documents/
//复制多个文件
cp file1.txt file2.jpg /home/user/documents/
//复制目录
cp -r my_folder /home/user/backups/
//复制目录(备份)
cp -a my_project my_project_backup
//复制文件(备份)
cp file1.txt file1_backup.txt
//复制文件(并重命名)
cp file1.txt /home/user/backups/file1_backup.txt
mv命令

用于移动(move)或重命名文件/文件夹

move 参数1 参数2

参数1,Linux路径,表示被移动的文件/文件夹

参数2,Linux路径,表示移动去的地方

//移动一个文件
mv file1.txt /home/user/documents/
//移动多个文件
mv file1.txt file2.log /home/user/documents/
//移动目录
mv my_folder /home/user/backups/
//重命名文件
mv old_name.txt new_name.txt
//移动文件到另一个文件并重命名
mv file1.txt /home/user/documents/new_file_name.txt
//重命名文件夹
mv old_folder new_folder

cp old.txt new.txt 和 mv old.txt new.txt区别

cp时:old.txt 仍然存在,内容不变。new.txt 被创建,内容是 old.txt 的副本。本质是 “复制 + 创建新文件”,而不是真正的重命名。你最终得到了两个文件。

mv时:old.txt 消失了。new.txt 出现了,它和之前的 old.txt同一个文件(相同的inode)。本质是**真正的、原子性的 “重命名” 操作。你始终只有一个文件。

rm命令

用于删除(remove)文件和文件夹

rm [-r -f] 参数1 参数2 …… 参数N

-r 用于删除文件夹

-f 表示强制删除(froce)(不会弹出提示信息)

普通用户删除内容不会弹出提示信息,只有root管理员用户删除内容会有提示,所以一般用户用不到-f选项

参数1 参数2 …… 参数N 用空格隔开

此命令支持通配符*,用来模糊匹配

*表示任意内容(包含空)

test*,表示匹配任何以test开头的内容
*test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容
rm -r *test*

为了练习,可以切换到管理员权限

su - root
输入密码:123456

但是!

image-20251019144348693
which命令

前面的Linux命令,其实它们的本体是一个个二进制可执行程序,和Window中的exe一个意思

可以使用which命令,查看所使用的一系列命令的程序文件存放在哪里

which 要查找的命令
which cd
which pwd
find命令

1.按文件名查找文件

find 起始路径 -name "被查找的文件名"

可以切换到管理员练习

find / -name "test"
find / -name "test*" //使用通配符

2.按文件大小查找文件

find 起始路径 -size +|- n [kMG]

+、-表示大于和小于

n表示大小数字

kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB

find / -size -10k
find / -size +100M 
grep命令

从文件中通过关键字过滤文件行

grep [-n] 关键字 文件路径

-n 可选选项,表示在结果中显示匹配的行的行号

关键字,表示要过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来

文件路径,表示要过滤内容的文件路径,可作为内容输入端口 (与后面的管道符相关)

grep "it" test.txt
grep -n "is" test.txt
wc命令

统计文件的行数、单词数量等

wc [-c -m -l -w] 文件路径

-c 统计bytes数量

-m 统计字符数量

-l 统计行数

-w 统计单词数量

文件路径,表示被统计文件,可作为内容输入(与后面的管道符相关)

wc test.txt //回车依此显示行数、单词数和字节数
管道符

即 | ,含义是:将管道符左边命令的结果,作为右边命令的输入

cat test.txt | grep itheima
cat test.txt | wc -l 
cat test.txt | grep itcast | grep itheima
//统计文件中带有itcast关键字的关键字有几行
cat test.txt | grep itcast | wc -l

grep的命令是这样的

grep [-n] 关键字 文件路径

当文件路径为空时,就作为内容输入

wc命令同理

wc [-c -m -l -w] 文件路径

左边只要是能产生内容输出的命令即可,如ls

echo命令

在命令行内输出指定内容

echo 输出的内容

无需选项,输出的内容复杂时可用 " " 双引号

image-20251020164449668

反引号`

飘号,被 `` 包围的内容会被作为命令执行,非普通字符

image-20251020164745439
重定向符
image-20251020165442541

将左侧命令的结果,覆盖写入到符号右侧指定的文件中

image-20251020165442541

将左侧命令的结果,追加写入到符号右侧指定的文件中

凡是左边能产生结果的都能写到右边

image-20251020170759262
tail命令

可以查看文件尾部内容,跟踪文件的最新更改

tail [-f -num] Linux路径

-f 表示持续跟踪

-num 表示查看尾部多少行,应用时写的是一个具体的数字(不填默认10行)

image-20251020171920462
使用 -num image-20251020172139605

使用 -f (注意:两个选项不可同时使用)

image-20251020172510163
新开一个窗口
image-20251020172950793
原窗口监视到了
image-20251020173055434

vi\vim编辑器

vi\vim是visual interface(视觉接口)的简称,是文本编辑器

替代了记事本编辑,vi是命令行下对文本文件进行编辑的绝佳选择

vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以用不同颜色的字体来辨别语法的正确性

三种工作模式

image-20251022112343924

注意:命令模式是核心中转,输入模式和底线命令模式互不相通

1.命令模式:所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能,不能进行自由的文本编辑

进入

vi 文件路径
vim 文件路径(推荐使用)

如果文件路径表示的文件不存在,那么此命令会用于编辑新文件(纯文本文件,这里指的是文件内容的存储格式,拓展名可以是.txt,但对于Linux来说不是必须的)

如果文件路径表示的文件存在,那么此命令会用于编辑已有的文件

image-20251022103808623

回车,进入到该文件的命令模式

image-20251022103719215

2.输入模式:可以对文件内容进行自由编辑

仅供参考

从命令模式转到输入模式的命令名称与功能描述
i插入 - 在光标当前位置之前开始插入。
a追加 - 在光标当前位置之后开始插入。
I行首插入 - 在光标所在行的行首(第一个非空白字符处)开始插入。
A行尾追加 - 在光标所在行的行尾开始插入。
o下方开新行 - 在光标所在行的下方新建一个空行并开始插入。
O上方开新行 - 在光标所在行的上方新建一个空行并开始插入。
s替换字符 - 删除光标所在的字符,并开始插入。
S替换整行 - 删除光标所在的整行,并开始插入。
0 (数字零)移动光标到当前行的绝对行首 (第一个字符)
^ (Shift + 6)移动光标到当前行的第一个非空白字符
$ (Shift + 4)移动光标到当前行的行尾
Ctrl + b (PgUp)向上翻页
Ctrl + f (PgDn)向下翻页
/ + 关键词搜索指定关键词。按 Esc 取消
n重复上一次搜索,向下继续查找
N (Shift + n)反向重复上一次搜索,向上继续查找
dd删除光标所在行(实际上是剪切,内容被保存)
ndd删除从当前行开始的向下 n 行(例如 5dd 删除5行)
yy复制光标所在行
nyy复制从当前行开始的向下 n 行(例如 3yy 复制3行)
p粘贴到光标所在行的下方
P (大写)粘贴到光标所在行的上方
u撤销上一次操作
Ctrl + r重做被撤销的操作(反向撤销)
gg跳转到文件第一行
G (大写)跳转到文件最后一行
nG:n跳转到文件第 n 行(例如 50G 跳转到第50行)
dG从当前行开始删除到文件末尾
dgg从当前行开始删除到文件开头
d$D从光标处删除到当前行尾
d0 (数字零)从光标处删除到当前行首(修正:原表格为 ,应为 d0
x删除光标下的字符(相当于 Del 键)
X (大写)删除光标前的字符(相当于 Backspace 键)

执行相应指令(一般我只用i,键盘的上下键可移动光标位置),进入输入模式

image-20251022103928410
最后Esc退出

试试搜索

image-20251022111638800

点击n,往下查找(N反之)

image-20251022111722023

最后Esc退出

3.底线命令模式:用于文件的保存和退出

从输入模式点击Esc退回命令模式,再输入 : 到底线命令模式,输入命令wq,回车,保存并退出

image-20251022104746758
底线命令模式命令功能描述
:w保存文件(Write)
:q退出编辑器(Quit)
:wq:x保存并退出
:q!强制退出,不保存任何修改
:w!强制保存(在只读文件等情况下可能需要)
:w [文件名]另存为新文件
:set nu显示行号
:set nonu隐藏行号
:set paste进入粘贴模式(防止自动缩进混乱)
:set nopaste退出粘贴模式(适合粘贴外部内容,格式不会乱)
:[行号]跳转到指定行(例如 :50 跳转到第50行)
:[起始行],[结束行]d删除指定范围的行(例如 :10,20d 删除10-20行)
:%s/旧文本/新文本/g全局替换文本(将文件中所有“旧文本”替换为“新文本”)

添加的小知识点:文件内容的存储格式和拓展名

一个文件有它自己的存储格式和拓展名

Linux 通过 file 命令检测文件的实际内容

file myfile
# myfile: ASCII text

再例如

# 创建一个文本文件
echo "这是一个文本文件的内容" > original.txt
# 复制并改成不同扩展名
cp original.txt test.jpg
# 检查文件类型,依然识别到文件实际类型是纯文本
file test.jpg    # ASCII text

拓展名只是文件名的一部分,便于系统/程序和用户识别

有些程序依赖扩展名来判断文件类型

# 双击 test.jpg(纯文本) - 图片查看器可能报错
# 双击 document.pdf(纯文本) - PDF阅读器可能报错
# 因为它们实际是文本文件,但扩展名暗示了其他格式

例如

# 示例:一个Python脚本
echo 'print("Hello")' > hello.py
chmod +x hello.py

# 正常执行
python hello.py          # 成功

# 改成其他扩展名
mv hello.py hello.txt
./hello.txt
# 直接执行会失败,因为系统不知道用python解释

python hello.txt         # 仍然可以执行!

root用户

无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理

在Linux系统中,分为超级管理员(root)和普通用户(如yzy)

root拥有最大的系统操作权限,而普通用户一般在其HOME目录内不受限的,一单出了HOME目录,大多数地方只有只读和执行权限,无修改权限

su命令

切换用户Switch User

su [-] [用户名]

符号 - 可选,表示是否在切换用户后加载环境变量**(建议带上)**

用户名,省略默认为root

exit //切换用户后可以退回上一个用户,也可以使用快捷键Ctrl+d

普通用户切到其他用户,需密码

root切到其他用户,无需密码

sudo命令

su可以切换到root,但是不建议长期使用root用户,避免带来系统的损坏

我们可以使用sudo命令(获得认可的用户才有权利使用sudo),为普通命令授权,临时以root身份执行

sudo 其他命令

获得认可的用户才有权利使用sudo,我们需要为普通用户配置sudo认证

为普通用户配置sudo认证

切换到root用户,执行visudo命令,会自动通过vi编译器打开:/etc/sudoers

image-20251022162449698

在文件末尾添加这段文本(NOPASSWD: ALL表示该用户使用sudo命令无需输入密码,中间是制表符Tab)

image-20251022162700405

最后wq保存,试试以普通用户身份在根目录创建文件夹

image-20251022162700405

用户组

Linux系统中可以:

配置多个用户

配置多个用户组

用户可以加入多个用户组中

image-20251024150022704

Linux中关于权限的管控级别有2个:针对用户和针对用户组的权限控制

以下命令均在root下完成

groupadd命令

创建用户组

groupadd 用户组名
groupdel命令

删除用户组名

groupdel 用户组名

展示所有组

cat /etc/group
useradd命令

创建用户

useradd [-g -d] 用户名

-g 指定用户的组,不指定-g,会创建同名组并自动加入,指定的组需要已经存在

-d 指定用户的HOME路径,不指定,HOME目录默认在:/home/用户名

注意:组和用户的HOME目录是分开的,两个不同概念

image-20251024155409455
可以切换用户 image-20251024160523649
userdel命令

删除用户

user [-r] 用户名

-r 删除用户的同时顺带删除用户的HOME目录,不使用 -r HOME目录保留

image-20251024161341922
id命令

查看用户所属的组

id [用户名]

可以指定被查看的用户,不指定则是自身

image-20251024161740152
image-20251024161740152
usermod命令

修改用户所属的组

usermod -aG 用户组 用户名

将指定的用户加入指定用户组

getent passwd命令

可以查看当前系统中有哪些用户

getent passwd
image-20251024165910738

列出7份信息:

用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

getent group命令
getent group

列出3份信息:

组名称:组认证(显示为x):组ID

image-20251024170509062

权限

认识权限信息

ls -l 命令可以显示权限细节

image-20251024171831996

框1:展示文件、文件夹的权限控制信息
框2:文件、文件夹所属用户
框3:文件、文件夹所属用户组

权限细节10个槽位


例:drwxr-xr-x表示

  • 这是一个文件夹
  • 所属用户权限:r、w、x
  • 所属用户组权限:r、w( - 表示无权限)
  • 其他用户权限:r、x

rwx含义

指令针对文件或文件夹
r查看文件内容
r(夹)查看文件夹内容(如ls命令)
w修改文件内容
w(夹)在文件夹内创建、删除、改名等操作
x可将文件作为程序执行
x(夹)可以更改工作目录到此文件夹(如cd)
修改权限信息
chmod命令

使用chmod命令修改文件或文件夹的权限信息

注意:只有文件、文件夹的所属用户root用户可修改

chomod [-R] 权限 文件或文件夹

-R 对文件夹的全部内容应用同样的操作

例1(u表示用户权限,g表示用户组权限,o表示其他用户权限)

chomod u=rwx,g=rx,o=x hello.txt

例2(将文件夹test以及文件夹内全部内容权限设置为:rwxr-x–x)

chmod -R u=rwx,g=rx,o=x test

还有简便写法

权限可以用3位数字表示

第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限

r=4 w=2 x=1

image-20251025153857262

所以751表示:rwxr-x–x

例3(修改hello.txt权限为 r-x–xr-x)

chmod 515 hello.txt
chown命令

使用chown命令修改文件、文件夹所属的用户和用户组

注意:此命令只适用于root用户执行

chown [-R] [用户] [:] [用户组] 文件或文件夹

-R 对文件夹及其内全部内容应用相同规则

:用于分隔而已

例1(将hello.txt所属用户修改为root)

chown root hello.txt

例2(将hello.txt所属用户组修改为root)

chown :root hello.txt

例3(将hello.txt所属用户修改为root,用户组修改为itheima)

chown root:itheima hello.txt

例4(将文件夹test的所属用户修改为root并对文件夹全部内容应用同样规则)

chown -R root test

Linux使用操作

强制停止

某程序运行时强行停止,或者某条命令写错取消

ctrl + c
退出或登出

退出账户的登录或退出某些程序指定的专属页面

ctrl + d
image-20251026091138466
image-20251026091222607
历史命令搜索
history命令
history
image-20251026091529011
结合grep image-20251026091605647
!命令

自动执行第一个前缀匹配的命令(适用于近期的自己记得的,第一个匹配的一定是自己想执行的)

!命令前缀
image-20251026092520210
ctrl+r命令

先搜索(可修改),确认对了再执行

ctrl + r //进入搜索模式
image-20251026160341958

输入要搜索的字母(如hi)

image-20251026160807469
回车立即执行,或者按键盘左右键修改命令再执行
光标移动快捷键

跳到命令开头

ctrl + a

跳到命令末尾

ctrl + e

向左(右)跳一个的单词

ctrl + 左键(右键)
image-20251026161853583
image-20251026161941255
清屏
ctrl + l 或者 clear

Linux系统软件安装

对于Mindow,可以使用exe文件、msi文件这些安装包自行安装,也可以去Microsoft Store商店内安装

对于Mac,可以使用dmg文件、pkg文件这些安装包自行安装,也可以去AppStore商店内安装

对于Linux,同样支持这两种方式

yum命令

相当于Linux命令行内的“应用商店”

yum是RPM包软件管理器(RPM是Linux操作系统安装包格式),用于自动化安装配置Linux软件,并可以自动解决依赖问题

yum是自动化安装软件的工具

注意:要联网,并且需要root权限或有sudo特权

yum [-y] [install | remove | search] 软件名称

-y 自动确认,无需手动确认安装或卸载过程

install安装

remove卸载

search搜索

Linux系统软件管理

systemctl命令

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启

能够被systemctl管理的软件,一般称为服务

systemctl start | stop | status | enable | disable 服务名

start启动 stop关闭 status查看状态 enable开启开机自启 disable关闭开机自启

系统内置的服务挺多的(均可以被systemctl控制)

NetworkManager 主网络服务

network 副网络服务

friewalld 防火墙服务

sshd、ssh服务(FinalShell远程登录Linux使用的就是这个服务)

下载第三方软件会自动注册为系统服务,因此可以被systemctl控制

安装一个软件ntp(其作用后续讲)

image-20251028101715831

安装好后ntp软件自动注册服务为ntpd

image-20251028101715831

apache服务器软件也可以自动注册

但是部分软件安装后没有自动集成到systemctl中,我们可以手动添加

后续讲解

软链接

在系统中创建软链接,可以将文件和文件夹链接到其他位置,(类似Window的快捷方式,打开属性可以看到它的目标位置

image-20251028104357216
ln -s 参数1 参数2

-s 选项,创建软链接

参数1 被链接的文件和文件夹

参数2 要链接去的目的地

例1(将etc目录内文件,链接到home目录内)

ln -s /etc/yum.conf ~/yum.conf

例2(将etc目录内文件夹,链接到home目录内)

ln -s /etc/yum ~/yum

通过 ls -l 查看

image-20251028110352378
前缀 L 表示为软链接 image-20251028111248198
image-20251028111346347
软链接生效

日期和时区

date命令
date [-d] [+格式化字符串]

-d 按照给定的字符串显示日期,一般用于日期计算

格式化字符串:通过特定的字符串标记,来控制显示的日期格式

  • %Y 年(2025)
  • %y 年份后的两位数字(00……99)
  • %m 月份(01……12)
  • %d 日(01……31)
  • %H 小时(00……23)
  • %M 分钟(00……59)
  • %S 秒(00……60)
  • %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
date
image-20251028162751650
date +%Y-%m-%d
image-20251028162936948
date +"%Y-%m-%d %H:%M:%S"
image-20251028163535877

由于中间带空格,使用双引号包围格式化字符串

对于-d

date -d "+1 day" +%Y%m%d //显示后一天的日期
date -d "-1 day" +%Y%m%d //显示前一天的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
date -d "-1 year" +%Y%m%d //显示上一年的日期
  • year年
  • month月
  • day天
  • hour小时
  • minute分钟
  • second秒
修改Linux时区

系统默认时区不是中国的东八区

使用root权限修改时区

rm -f /etc/localtime //将系统自带的localtime文件删除
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime即可
image-20251028170112740
ntp程序

我们可以通过ntp程序自动校准系统时间
安装ntp

yum -y install ntp

启动并设置开机自启:

systemctl start ntpd
systemctl enable ntpd
image-20251028183217141

当ntpd启动后会定期的帮助我们联网校准系统时间
也可以手动校准(root权限)

ntpdate -u ntp.aliyun.com

校准后告诉我们系统偏差了几秒

image-20251028183217141

IP地址和主机名

IP地址

分为ipv4和ipv6地址,这里使用ipv4

这里用命令查看的都是局域网的内网ip

Window终端中,使用ipconfig查看(可查看到本机ip和配置的虚拟机网关ip)

image-20251030172448662

注意:因为虚拟机创建时虚拟了一个自己的局域网,Window查看到的是虚拟机的网关地址

Linux终端中,使用ifconfig查看

image-20251030193651612

这里看到的虚拟机ip就是在这个虚拟局域网分配到的私网ip,所以跟它网关地址的网络号相同

相关知识点我的另一篇文章:【揭秘网络传输】向北京的小王寄信,让我一次搞懂IP地址、子网掩码、路由器和端口号!

特殊IP地址

lo:本地回环网卡,127.0.0.1用于指代本机(和自己通讯,比如端到端)

image-20251030194354788
0.0.0.0 特殊IP地址
  • 可以用于指代本机
  • 可以在端口绑定中用来确定绑定关系(后续讲解)
  • 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问(该作用后续接触到)
主机名

无论Windows或Linux系统,都可以设置主机名

window

image-20251030195302340
Linux

查看主机名

hostname

修改主机名(root)

hostnamectl set-hostname 要改的名字
image-20251030195924318
重新连接发现主机名已经改变
image-20251030200130950
域名解析

ip地址映射成一串英文

image-20251030200130950

先查看本机记录,在联网去DNS服务器(114.114.114.114或8.8.8.8)

所以在访问Linux系统时不想使用它的IP地址,而是使用字符串主机名,可以在本机文件自行配置这个映射 (比如FinalShell可以通过域名(主机名)连接)

配置主机名映射

搜索记事本,右键以管理员身份打开

image-20251030201802660
点击文件 - 打开 image-20251030201910724
先按这个路径进入到etc目录(C:\Windows\System32\drivers\etc)一进去先是空白
image-20251030202410695
右下角选择所以文件 image-20251030202252649
选择hosts文件 image-20251030202447113

添加:IP地址(空格)主机名,这一行,保存即可

image-20251030202705458
在FinalShell中,修改成主机名,点击应用-确定
image-20251030203323380
双击连接,可能会出现这个
屏幕截图 2025-10-30 203111

服务器有一个唯一的主机密钥,客户端会在第一次连接时记录它,以后每次连接都检查是否一致。

因为这是你第一次连这台虚拟机,FinalShell 没有它的密钥记录,所以弹出警告让你确认。

去朋友家串门比喻

  • 第一次去:门卫不认识你朋友,拿出一张你朋友的照片(密钥指纹)问你:“是这个人吗?你确认一下。”
  • 这张照片:就是 SHA256:Q9LiIWY... 这一串,是你虚拟机的“身份证”。
  1. 只接受本次
    FinalShell说:“行吧,这次我信你,但下次来我还要再问一遍。”
    (适合临时串个门)
  2. 接受并保存
    FinalShell说:“没问题,我记住这张脸了,以后来都直接放行。”
    (推荐选这个,是你自己的虚拟机就放心保存)
  3. 取消
    FinalShell说:“算了,我不进去了。”
    (放弃连接)

一般点击“接收并保存”就连接成功了

虚拟机配置固定IP

这里只讲解用于Window的

为什么要固定IP:

当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的

DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更(对于使用IP远程登录虚拟机本机配置的域名映射都是不利的)

1.在VMware Workstation中配饰固定IP

打开虚拟网络编辑器

image-20251030211148928
获得管理员权限
image-20251030211424789
选择VMent8,更改子网IP(这里表示一个网段,即我们的IP地址使用范围是192.168.88.0~192.168.88.254),确认子网掩码如图,最后点击NAT设置
image-20251030211524301
确认网关是88.2
image-20251030211927384
2.接着在Linux系统中修改固定IP

打开Linux服务器终端,获取root权限,编辑指定文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33
image-20251030214032669
编辑文件
image-20251030214744545
3.最后执行

先停止网络服务

systemctl stop network

卸载网卡模块

ifconfig ens33 down

重新加载网卡模块

ifconfig ens33 up

启动网络服务

systemctl start network

最后ifconfig检查

image-20251030215540266

注意:如果设置了主机名访问,记得修改本电脑的配置文件

网络传输

ping命令

可以通过ping命令,检查指定的网络服务器是否可联通

ping [-c num] ip或主机名

-c 检查的次数,不使用则将无数次持续检查

例1(检查baidu.com是否联通)

image-20251031095827041
要检查Ctrl+C停掉

其实实际ping的是IP地址,复制百度的ip加上-c试一下

image-20251031100130095
wget命令

wget是非交互式文件下载器,可以在命令行内下载网络文件,下载到当前工作目录中

wget [-b] url

-b 可选,后台下载,将日志写入到当前工作目录的wget-log文件中

参数url:下载链接

与yum软件安装对比

yum是用来管理系统的软件,而wget是用来下载任何文件。它们之间的区别就像去“官方应用商店安装App”和“在浏览器里下载一个文件”的区别。

Ctrl+C可以取消下载,但中断而已,文件已经下载了一半(使用ls -l,文件显示红色),所以要记得删除

如果使用后台下载,想查看进度,打开当前目录的wget-log文件,使用如下命令可以跟踪

tail -f wget-log
curl命令

发送网络请求,可用于下载文件、获取信息等 (本质就是浏览器打开url)

curl [-o] url

-o 用于下载文件,当url是下载链接时,可以使用此选项保存文件

参数url,发起请求的网络地址

例1(向cip.cc发起请求)

image-20251031104847159

“请求 cip.cc” 是一个用于快速查询本机公网IP地址的非常简便的方法。

它不是一个复杂的命令,而是一个基于HTTP协议的服务。当你向 cip.cc 这个域名发起访问时,它会返回你的计算机当前所使用的公网IP地址以及其他一些网络信息。

例2(向百度发起请求)

image-20251031105143137
例3(下载某个安装包,需要保存的)
image-20251031105315971

如果你不指定 -ocurl 会把下载的所有数据直接打印到终端上,这通常会导致你的终端被一堆乱码刷屏(如果下载的是二进制文件)。

与wget区别

  • wget 更像一个专注的“下载器”,其核心使命就是下载文件和整个网站。(自带保存)
  • curl 更像一个“数据传输的瑞士军刀”,其核心使命是与服务器进行各种复杂的交互,下载文件只是其功能的辅助
端口

端口分为物理端口和虚拟端口两类

物理端口又可称之为接口,是可见的,如USB接口、RJ45网口、HDMI端口等

虚拟端口指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的(如设备不同的程序对应不同的源端口或路由器在将私网ip转成公网ip时给每个连接分配的外部端口

端口的分类

Linux系统是一个巨大的、拥有65535个房间的超级酒店,这6万多个房间(端口)分成3类使用:

(一)公认端口——VIP贵宾套房&酒店自营部门:

1~1023,通常用于一些系统内置知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,HTTP服务的80端口。

(二)注册端口——可预定的标准客房:

1024~49151,任何应用程序(客人)都可以来这里预定一个房间,并长期驻守在这里,等待别人来连接。

  • 3306号房: 通常被 MySQL数据库 预定。
  • 8080号房: 经常被一些测试用的网页服务预定。
  • 3389号房: 通常被Windows的远程桌面服务预定。

(三)动态端口——临时休息区/公共电话亭:

49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

这些房间不固定分配给任何服务

当酒店里的一个客人(应用程序)想主动外出访问别的酒店(别的服务器)时,它会临时、随机地在这些房间里挑一个使用。用完就退房,这个房间号就释放了,可以给下一个外出的客人用。

当你电脑上的浏览器想访问百度。

  • 浏览器(作为客户)会随机选择一个动态端口(比如54321号房)作为出发地
  • 然后去连接百度的80号房(目的地)

提问:当我们向外界发送数据包时,数据包中的源ip的源端口就属于动态端口?

回答:正确的,当你主动向外界发送数据包时(比如用浏览器访问网站、用微信发消息),你的操作系统会从动态端口区(49152~65535)中随机挑选一个可用的端口号,作为你这次连接的源端口。

nmap命令

使用nmap查看端口占用情况

首先安装nmap(已安装的略过)

yum -y install nmap //root权限

问题:

如果一开始yum install nmap后出现错误信息 “Could not resolve host: mirrorlist.centos.org” ,表明你的CentOS系统无法连接到CentOS的官方软件仓库

直接使用国内镜像源解决问题(需要点时间)

# 一键更换为阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清理缓存并安装nmap
yum clean all && yum makecache
yum install -y nmap

最后检验版本就行

image-20251102152153379

查看本机端口占用

nmap 127.0.0.1
image-20251102152309939
netstat命令

查看指定端口的占用情况

首先安装netstat(已安装的略过)

yum -y install net-tool

查询版本以确认安装

image-20251102153303853
netstat -anp
特性netstat -anpnmap 127.0.0.1
工作原理查询内核状态。它直接从操作系统的网络协议栈中读取当前的连接状态表、路由表和网络接口信息。这是一个“内部调查”。主动网络探测。它向目标IP地址(这里是127.0.0.1)发送特定的网络数据包(如SYN包),然后根据目标的响应来判断端口状态。这是一个“外部测试”。
观察视角从内向外看。它告诉你本机正在监听哪些端口,以及本机与外部建立了哪些连接。从外向内看。它模拟一个外部客户端,尝试连接你的机器,告诉你从网络上看,哪些端口是开放的。
信息范围非常全面。包括: 1. 所有监听端口(LISTEN) 2. 所有活动连接(ESTABLISHED, TIME_WAIT等) 3. Unix域套接字(如果使用特定参数) 4. 关联的进程ID和名称(-p 参数)相对聚焦。主要显示: 1. 开放端口(open) 2. 关闭端口(closed) 3. 被过滤的端口(filtered,通常由防火墙导致)
关键区别:防火墙影响不受防火墙影响。因为它直接从内核读取信息,所以即使有防火墙阻止了外部访问,netstat 仍然能看到服务本身在监听。受防火墙影响。如果本地防火墙(如 iptables, firewalld)规则阻止了某个端口,nmap 从回环地址扫描可能没问题,但从外部IP扫描时,该端口会显示为 filtered(被过滤)而不是 open(开放)。
显示进程信息(使用 -p-lp 参数)。可以直接看到是哪个程序(如 /usr/bin/python3)在占用哪个端口。这是 netstat 的一个巨大优势。。nmap 本身无法直接告诉你是哪个进程在监听端口。需要额外使用 lsof -i :端口号netstat 来查询。
性能和速度极快。因为是查询本地表格,几乎是瞬时完成。相对较慢。因为需要发送和接收网络包,并且有等待超时时间,尤其是扫描大量端口时。
主要用途系统管理和故障排查。快速诊断“端口被谁占了?”、“我的服务启动了吗?”、“这台机器和哪些外部地址有连接?”。安全审计和网络探测。确认“从网络视角看,我的机器暴露了哪些服务?”、“防火墙规则是否生效?”、“远程主机上运行了什么?”。

指定端口

netstat -anp | grep 端口号
image-20251102154348246
image-20251102154634161

也可以查看指定进程

image-20251102154823855
可检查端口空闲

进程

程序运行在操作系统中,被操作系统所管理(注册为一个进程):每一进程都有进程ID

Window

image-20251102161050215

ps命令

查看进程

ps [-e -f]

-e 显示出全部进程

-f 以完全格式化的形式展示信息(展示全部信息)

一般用ps -ef

image-20251102161558428
从左到右分别是:
  • UID:进程所属的用户id
  • PID:进程的进程号id
  • PPID:进程的父id(启动此进程的其他进程)
  • C:此进程的CPU占用率(百分比)
  • STIME:进程的启动时间
  • TTY:启动此进程的终端序号(显示?:表示非终端启动,是系统启动)

终端启动:就像你手动打开一个软件(如记事本、浏览器),它和你的当前操作会话紧密相关。

系统启动:就像开机后自动在后台运行的服务(如病毒防护、网络管理),它与任何用户的登录无关。

  • TIME:进程占用CPU的时间
  • CMD:进程的启动路径和启动命令

现在启一个新的标签页,一边执行tail卡在那里,一边执行ps -ef

image-20251102163737079
image-20251102163811219
找到tail启动的进程
image-20251102163846657
但是

结合grep

ps -ef | grep tail
image-20251102164045031
下面那一条相当于上面的命令本身

可以过滤时间

image-20251102164544660

也可以是进程号,用户ID等等

kill命令

关闭进程

在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它

同样,在Linux中,可以通过kill命令关闭进程

kill [-9] 进程ID

-9 强制关闭进程。不选用此选项,则会向进程发送信号要求其关闭,但是是否关闭看进程自身的处理机制

例1(结束tail进程)

kill 111914
image-20251102170032840
例2(强制结束tail进程)
kill -9 125444
image-20251102170406325

主机状态监控

系统资源监控top命令

查看CPU、内存使用情况,类似Windows的任务管理器

默认每5秒刷新一次,回车执行时默认清屏,每次刷新覆盖掉之前的信息,按qctrl + c退出

top
image-20251102173121675
top命令内容详解(上半部分)
  • 第一行:image-20251103160032198

top-命令名称,17:31:16-当前系统时间,up 2:42-启动了2小时42分钟,3 users-3个用户登录,load-1分钟、5分钟、15分钟负载

系统平均负载是指在一定时间内,系统处于可运行状态不可中断状态的平均进程数

  • 对于单核CPU
    • Load = 1.00:意味着 CPU 刚好满负荷工作。
    • Load < 1.00:表示 CPU 还有空闲资源。
    • Load > 1.00:表示有进程在排队等待 CPU 资源。
  • 对于多核CPU
    • 你需要将 Load 值除以 CPU 核心总数来评估。
    • 例如,一个 4核CPU 的系统:
      • Load = 4.00 意味着所有核心都刚好满负荷。
      • Load < 4.00 表示系统还有空闲的处理能力。
      • Load > 4.00 表示进程开始排队,系统可能过载。
    • 假设你的系统是一台 4核CPU 的机器:
      • 那么负载 0.49 意味着平均只利用了 0.49 / 4 = 12.25% 的 CPU 总能力。
  • 第二行:image-20251103161850403

Tasks-总计204个进程,1 running-1个进程在运行,203 sleeping-203个进程睡眠,0 stopped-0个停止进程,0 zombie 0个僵尸进程

  • 第三行:image-20251103162532475

%Cpu(s)-cpu使用率,us-用户CPU使用率,sy-系统CPU使用率,ni-高级优先级进程占用CPU时间百分比,id-空闲CPU率,wa-IO等待CPU占用率,hi-CPU硬件中断率,st-强制等待占用CPU率

一般只看用户CPU使用率us系统CPU使用率sy这两个

  • 第四五行:image-20251103163648755

KiB Mem:物理内存,KiB Swap:虚拟内存(交换空间)
total总量,free空闲,user使用,buff/cache:buff和cache占用
一般看物理内存

top命令内容详解(下半部分)
image-20251103164427030
  • PID:进程id
  • USER:进程所属用户
  • PR:进程优先级,越小越高
  • NI:负值表示高优先级,正表示低优先级

PR(最终优先级) = 80 + NI(友好值)

这里的80是一个基准值(在不同的内核版本或设置中可能不同,但逻辑不变)。NI 是 PR 的“偏移量”,你通过调整 NI 来间接地影响 PR。

NI(Nice):用户施加的“影响力”或“偏移量”

  • 一个设置为 NI = -10 的视频编码进程:它很“自私”,告诉内核:“我很重要,快把 CPU 时间给我!”
  • 一个设置为 NI = 15 的备份进程:它很“友好”,告诉内核:“我不着急,等别人都不用 CPU 的时候再处理我就行。”

关键点:

  • 普通用户只能 降低 优先级(将 NI 值调为 正数)。
  • 只有 root 用户 才能 提高 优先级(将 NI 值调为 负数),以防止普通用户垄断系统资源。

PR(Priority):内核看到的“真实”优先级

  • 普通进程 中,它的取值范围是 0 到 39
  • 对于 实时进程,它的取值范围是 0 到 99(此时会显示为 RT)。

如何理解:

  • PR 值越小,进程优先级越高,越容易被调度器选中运行。
  • VIRT:进程使用虚拟内存,单位KB
  • RES:进程使用物理内存,单位KB
  • SHR:进程使用共享内存,单位KB
  • S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
  • %CPU:进程占用CPU率
  • %MEM:进程占用内存率
  • TIME+:进程使用CPU时间总计,单位10毫秒
  • COMMAND:进程的命令或名称或程序的文件路径
top命令也支持选项
  • -p 后面接PID:只显示某个进程的信息
  • -d 后面接数字(秒):设置刷新时间,默认是5s
  • -c 后面不接:显示产生进程的完整命令(COMMAND更加详细),默认是进程名
  • -n 后面接数字(次):指定刷新次数,比如 top -n 3,刷新输出3次后退出
  • -b 以非交互非全屏模式运行 (不清屏不覆盖像流水一样),以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp(写到指定文件中)

没有-b,只输出当前终端大小能显示的那部分进程

-b,有 "完整输出"的概念,完整地输出所有收集到的进程信息

“非交互” = “只能看,不能摸”

你无法用键盘命令控制它,它只是单向输出信息。

“非全屏” = “不霸占整个窗口”

它不会清空你的终端屏幕,只是像 lscat 等其他命令一样,在光标位置输出结果,然后结束。

  • -i 不显示任何闲置(idle)或无用(zombie)的进程
  • -u 查找特定用户启动的进程

交互式(清屏加刷新覆盖)

image-20251103194412359

非交互式(展示全部,像瀑布流出)

image-20251103194451434
top交互式选项

非-b选项启动

  • h键 显示帮助画面
  • c键 显示产生进程的完整命令,再按一下回复默认显示
  • f键 选择需要展示的项目
    键盘上下键,按空格控制是否显示
image-20251105201921614
  • M键 根据驻留内存大小(RES)排序
image-20251105202705288
  • P键 根据CPU使用百分比大小进行排序
image-20251105202608872
  • T键 根据时间/累计时间进行排序
image-20251105202514352
  • E键 切换顶部内存显示单位(按多几下切换到不同单位,如KiB、MiB、TiB)
image-20251105202904452
  • e键 切换进程显示单位(按多几下切换到不同单位,如k、m、p、t)
image-20251105203354351
  • l键 切换显示平均负载和启动时间信息
image-20251105203051855
  • i键 不显示闲置或无用的进程,再按一下回复默认显示
image-20251105204101815
  • t键 切换显示CPU状态信息

有时这样(看第三行)

image-20251105210401862

有时

image-20251105210439551

有时

image-20251105210501472
  • m键 切换显示内存信息

有时这样(看第4、5行)

image-20251105210630804

有时

image-20251105210650507

有时

image-20251105210723032

按q退出

磁盘信息监控
df命令

查看硬盘的使用情况

df [-h]

-h 更人性化的单位显示

image-20251105211141212
iostat命令

查看CPU、磁盘的相关消息

iostat [-x] [num1] [num2]

-x 显示更多消息

num1:刷新间隔

num2:刷新次数

image-20251105212754917 image-20251105212857064

参数解读(上面cpu使用情况通过top命令查看,关注加粗的就好了)

  • rrqm/s: 每秒合并的读请求数
  • wrqm/s: 每秒合并的写请求数
  • r/s: 每秒完成的读 I/O 操作数
  • w/s: 每秒完成的写 I/O 操作数
  • rkB/s: 每秒读取的数据量(KB)
  • wkB/s: 每秒写入的数据量(KB)
  • avgrq-sz: 平均每次 I/O 操作的数据扇区数
  • avgqu-sz: 平均 I/O 队列长度
  • await: 平均每次 I/O 操作的等待时间(毫秒)
  • r_await: 读操作的平均等待时间(毫秒)
  • w_await: 写操作的平均等待时间(毫秒)
  • svctm: 平均每次 I/O 操作的服务时间(毫秒)
  • %util: 磁盘忙碌百分比
网络监控
sar命令

查看网络的相关统计(sar命令非常复杂,这里仅简单用于网络统计)

sar -n DEV num1 num2

-n 查看网络

DEV表示查看网络接口

num1:刷新间隔(num1和num2不填,查看一次结束)

num2:查看次数(只有num2不填,无限次数)

image-20251105214359738

参数解读(关注加粗的)

  • IFACE: 网络接口名称
  • rxpck/s: 每秒接收的数据包数量
  • txpck/s: 每秒发送的数据包数量
  • rxkB/s: 每秒接收的数据量(KB)
  • txkB/s: 每秒发送的数据量(KB)
  • rxcmp/s: 每秒接收的压缩数据包数量
  • txcmp/s: 每秒发送的压缩数据包数量
  • rxmcst/s: 每秒接收的多播数据包数量

最底下有统计消息

image-20251105214649586

环境变量

环境变量就是操作系统和应用程序的配置中心和通讯录,存放关键程序的路径和配置参数

输入运行命令时,就会从Path列出的目录中查找对应的运行程序

Path记录了系统执行任何命令的搜索路径

所以在Linux系统中,无论当前工作目录是什么,输入cd命令,都执行/usr/bin/cd这个程序

问1:什么时候需要查Path?

场景例子是否查Path
命令行直接输入命令python, git clone, node app.js
双击运行桌面快捷方式点击Chrome图标❌ 否(有固定路径)
程序调用系统工具Python调用 os.system("ping")
在文件管理器双击程序双击 C:\Program Files\App\app.exe❌ 否(有完整路径)
脚本中调用外部命令批处理文件调用 java -jar

问2:除了Path,其他环境变量主要为应用程序提供运行时所需的配置信息,作用可分为四类:

1.指位置 - 告诉程序核心资源在哪

  • JAVA_HOME:JDK安装路径

2.定环境 - 告诉程序运行在什么模式

  • NODE_ENV:开发还是生产模式

3.配密钥 - 安全地存储敏感信息

  • DATABASE_URL:数据库密码和地址

  • API_KEY:第三方服务密钥

4.改行为 - 改变程序的默认操作

  • HTTP_PROXY:设置网络代理

核心区别:Path是系统用来找程序的,其他变量是程序用来读配置的。

环境变量是KeyValue性结构,即名称和值,等号相连

env命令

查看当前系统中记录的环境变量

env
image-20251109171614798
image-20251109171722427
$符号

在Linux系统中,$符号被用于取变量的值

$环境变量名
image-20251109172310400
结合echo
echo $PATH
image-20251109172548253
当和其他内容混在一起时,加 { }
echo ${PATH}ABC
image-20251109172825993
自行设置环境变量
临时生效

即关闭此连接窗口无效

export 变量名=变量值
image-20251110155649055
永久生效
对当前用户

针对当前用户生效,配置在当前用户的:~/.bashrc文件中

编辑

vi ~/.bashrc

新增一行后,保存退出

image-20251110161053629
让文件生效
source .bashrc

验证

image-20251110161855204
切换到其他用户就没用了
image-20251110162056919
对所有用户

针对所有用户生效,配置在系统的:/etc/profile文件中

编辑(root权限)

vim /etc/profile

添加环境变量,保存退出

image-20251110162644316

生效

source /etc/profile

验证

image-20251110162957094
自定义环境变量PATH

环境变量记录了系统执行命令的搜索路径

实例:

创建mytest文件夹,在里面创建hello文件,在里面写入echo “Hello”

vi hello
image-20251110175415683
给予权限,执行一下
image-20251110182930884
image-20251110183026748
写入PATH(所有用户的、系统的)
vim /etc/profile //root权限

加入一行(一定要在PATH后面追加,千万不要写错!!!)

image-20251110182601937

生效

source /etc/profile

检查

image-20251110183604883
image-20251110183604883
系统的PATH环境变量是公用的,但是不同用户都要重新生效一次
image-20251110183759721

问:用户自己的PATH路径里面能写关于root目录的吗?

可以写,但是有权限限制!

执行命令 → PATH找到文件 → 有目录执行权限 → 有文件读取权限 → 有文件执行权限

具体看对应的文件夹和文件对这个用户权限

文件的上传和下载

可视化方法
image-20251112212631591
直接下载到桌面的一个文件夹里面 image-20251112212726963

命令窗口和下面的图形化界面的权限不同

image-20251112213358438

上半部分只是暂时获得root权限,实际整个连接窗口还是以个人用户(yzy)登录,所以下面查看不到root文件夹

修改登录用户
image-20251112213743819


image-20251112213848177

上传则反过来,打开目标文件夹,鼠标拖拽即可

命令行方法

首先rz、sz命令需要安装

yum -y install lrzsz # 安装命令
image-20251113193037192
sz命令

下载

sz 对应文件名

进入到文件对应的目录

image-20251113193556742
Tab键会补全文件名 image-20251113193726593
回车,即开始下载到桌面的fsdownload文件夹
rz命令

上传

rz 回车

弹出我们电脑的资源管理器

image-20251113194254913

但是这种命令方法上传得很慢,大文件一般拖拽

压缩和解压

压缩格式

zip格式:Linux、Windows、MacOS常用

7zip格式:Windows系统常用

rar格式:Windows系统常用

tar:Linux、MacOS常用

gzip:Linux、MacOS常用

在Windows系统中常用的软件(winrar、bandizip等)都支持各类常见的压缩格式。

下面讨论如何在Linux系统中操作:tar、gzip、zip这三种压缩格式,完成文件的压缩、解压操作

tar命令

对于tar和gzip格式文件

tar格式,称为tarball,后缀.tar,只是将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅只是简单的封装

gzip格式后缀.tar.gz或.gz,是用gzip压缩算法将文件压缩到一个文件内,可以极大减少压缩后的体积

tar [-c -v -x -z -C -f] 参数1 参数2 …… 参数N

-c 压缩模式

-v 显示压缩、解压过程,用于查看进度

-x 解压模式

-z gzip模式,不使用-z就是普通的tarball格式 (使用的话,一般处于选项第一个)

-C 选择解压的目的地,用于解压模式

-f 要创建的文件,或要解压的文件 (-f选项必须在所有选项中位置处于最后一个)

这么多限制怎么记!!?? 其实记住固定格式就行了

压缩成tar(-cvf)

将1.txt 2.txt 3.txt 压缩到test.tar文件内

tar -cvf test.tar 1.txt 2.txt 3.txt
压缩成gzip(-zcvf)

将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内 (gzip模式)

tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
解压tar(-xvf)

解压test.tar到当前目录

tar -xvf test.tar

解压test.tar到指定目录

tar -xvf test.tar -C /home/yzy
解压gzip(-zxvf)

解压test.tar.gz到当前目录

tar -zxvf test.tar.gz
zip命令

对于zip格式文件的压缩

zip [-r] 最终的压缩文件名 参数2 …… 参数N

-r 被压缩的包含文件夹时,需要使用-r选项

例1

将a.txt b.txt c.txt 压缩到test.zip文件内

zip test.zip a.txt b.txt c.txt
例2

将test、yzy两个文件夹和a.txt文件,压缩到test.zip文件内

zip -r test.zip test yzy a.txt
unzip命令

对于zip格式文件的解压

unzip [-d] 要解压的zip文件

-d 指定解压到的位置

例1

将test.zip解压到当前目录 (注意:同名内容会替换)

unzip test.zip

将test.zip解压到指定目录

unzip test.zip -d /home/yzy
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值