SRE 第一次作业

news/2025/11/3 9:23:27/文章来源:https://www.cnblogs.com/LXH2025blog/p/19186005

Vmware 软件下载及Linux系统安装

Vmware 软件下载

进入页面 https://www.broadcom.com/,进行登录注册

注意,在进行登录时,username是填入注册时的邮箱地址,而不是什么first name

image-20251101155614576

在成功登录注册以后,再进入页面 https://support.broadcom.com/group/ecx/productdownloads,由于为国外网站,所以页面的整个刷新加载比较慢

image-20251101161402741

然后点击左边栏的 My Downloads,在检索框输入 Vmware Workstation Pro,然后根据自己操作系统进行选择下载即可,个人觉得版本差不多就行,不用追求最新,因为核心功能大差不差,能用即可

image-20251101162224640

image-20251101162453021

下载以后,即可进行安装,安装过程比较简单,没有什么特别需要注意的地方,默认安装的路径是C盘,建议更改到其他盘去,节省空间

#授权码,这里声明,本人举双手双脚支持购买正版,提供授权码仅供学习使用
JU090-6039P-08409-8J0QH-2YR7F
ZF3R0-FHED2-M80TY-8QYGC-NPKYF
FC7D0-D1YDL-M8DXZ-CYPZE-P2AY6
ZC3TK-63GE6-481JY-WWW5T-Z7ATA

Linux 系统的安装

这里主要提供Debian系列的Ubuntu系统的安装、Redhat系列的Rocky系统的安装以及国产操作系统openEuler的安装教程,其他系统可根据所属系列自行研究探索

Linux 系统光盘镜像文件的获取

下载渠道

  • 官方网站,比如 https://ubuntu.com/download,保证下载的文件是没有被篡改过的,绝对安全
  • 国内镜像站点,比如 https://developer.aliyun.com/mirror/,文件本身一般没问题,且下载比较快,推荐

这里以国内镜像站点阿里云下载Ubuntu镜像文件为例进行讲解

Ubuntu 镜像在阿里云的下载

首先进入页面 https://developer.aliyun.com/mirror/,点击OS镜像

注意,不要直接点那个ubuntu卡片,我知道那玩意看起来很有点击欲望,但是那个是ubuntu软件包的下载地址,并不是系统镜像文件的下载地址,后续的博文会提到使用方法

image-20251101165751798

然后选择发行版本为ubuntu,具体的ubuntu版本建议选择LTS,即长期支持版本进行下载学习,这样几年的时间内都不需要频繁更新系统版本

image-20251101165557861

经过比较长一段时间的等待,即可得到一个.iso镜像文件,这是一个光盘镜像文件,用于安装Ubuntu系统使用,图标和文件名大致如下

image-20251101170506794

Vmware 虚拟机的创建

我们将Linux操作系统以虚拟机的形式进行安装,使用的虚拟化软件为 Vmware Workstation,类似买一台物理计算机,我们首先需要在 Vmware 软件中首先虚拟出一台计算机(简称虚拟机),然后再在这台虚拟机上安装各种Linux的发行版本

image-20251101171115789

首先点击左上角的文件,再点击新建虚拟机,即可开始创建一个虚拟的计算机

image-20251101171314082

在弹出的窗口中,选择自定义(高级),不是说经典(推荐)不可以,只是自定义的选项更多,能够设置的内容更多

image-20251101171426291

下个界面不用动,保持默认就行,直接点击下一步

image-20251101171559374

然后选项稍后安装操作系统(S),这里它可能会自动识别到我们下载的光盘镜像文件,不用管它

image-20251101171716177

下个界面,选择操作系统类型为Linux,并选择对应下载的发行版本,这里以Ubuntu 64 位为例

image-20251101171828308

接着,我们需要为我们这台虚拟机命名,并且选择它的相关数据的保存路径

虚拟机名称见名知意即可,怎么看得懂怎么来,后续也可以开头图片的左侧列表中进行进行修改

这里建议保存路径为一个可用空间比较大的盘,避免后续还要复制虚拟机文件到新盘的麻烦

image-20251101172244716

然后,需要设置这台虚拟机的处理器,即CPU的相关配置,处理器数量和每个处理器的内核数量保持默认即可,值得注意的是,虚拟机总归是跑在你的物理计算机上,是需要消耗物理机资源的,所以处理器和核数分配得比较多多,很可能会导致你在使用物理机做其他操作时会有略微卡顿的情况

image-20251101172737287

与CPU一样重要的是这台虚拟机的内存大小,如果内存太小,保持默认的推荐内存即可,那么可能会导致虚拟机运行卡顿,不过也不宜分配过多,还是那句话,虚拟机运行会占用物理机资源

image-20251101173232460

下个界面是选择网络连接的类型,Vmware提供了三种网络连接的方式,下面提供了一些介绍,如果不太了解,保持默认的NAT网络即可,不需要太过纠结,如果不合适后续可以再修改网络类型

  1. 桥接

    • 虚拟机获取到的IP地址,就是真实网络的IP地址,可以把虚拟机看作安装Vmware软件物理主机所在网络中的某台物理机,要注意避免地址冲突问题
  2. NAT

    • 虚拟机获取到并非真实网络的IP地址,可以看作物理机内部存在一个虚拟网络,这个虚拟网络的出口设备为安装Vmware软件物理机,访问网络期间需要进行网络地址转换NAT,安装Vmware软件物理主机所在网络中的物理机无法主动访问虚拟机
  3. 仅主机

    • 虚拟机无法上网,虚拟机自娱自乐,最多只能和其他虚拟机以及物理主机通信

image-20251101173504602

接着是选择I/O控制类型,保持默认即可,无关紧要的

image-20251101174701208

磁盘类型也是,保持默认即可,不需要太过纠结

image-20251101174755029

磁盘选择创建新虚拟磁盘来存储虚拟机数据

image-20251101182143443

磁盘容量可以指定稍微大点,比如200G,这不是立刻占用物理机200G的空间,而是用多少占用多少,建议将磁盘存储为单个文件

image-20251101182257057

对磁盘文件进行命名,保持默认即可,不重要

image-20251101182528395

最后对虚拟机的设置进行检查,确认无误以后,点击完成即可创建出一台虚拟机

image-20251101182555779

image-20251101182714062

再创建出一台虚拟机以后,也可以对该虚拟机的内存、CPU、硬盘、网络适配器(网络类型)进行二次调整,就像买回来的一台计算机,我们也可以对它进行更换硬件配置一样

image-20251101183340888

光盘镜像文件可以在CD/DVD中进行选定,然后启动计算机,从而开始Linux操作系统的安装

image-20251101213046046

Ubuntu 系统(20.04.6为例)的安装

开机后,会自动检查硬盘

image-20251101213330932

然后会进入到系统安装界面,这里会加载一段时间,鼠标的图标为一个正在旋转的圆圈

image-20251101213514694

大约几分钟以后,正式进入系统安装界面,这里可以选定使用的语言,然后点击Install Ubuntu

image-20251101213918933

接着是选择键盘的布局,保持默认即可

image-20251101214042558

接着是选择软件的升级以及其他软件是否要安装,我这里选择最小化安装,即尽可能少得安装一些不必要的软件

image-20251101214606741

这里系统检查到硬盘没有操作系统存在,选择清除硬盘内容,并且按照Ubuntu系统,这里的硬盘指的是我们创建虚拟机时创建的那块硬盘,而不是我们物理机的硬盘,所以那块硬盘本身就是无任何数据的

image-20251101214853789

选择Install Now,它会再次确认是否要进行数据写入的操作,避免误操作导致的数据丢失

image-20251101215227792

再次确认以后,会等待几秒钟,然后需要选择时区,选上海Shanghai

image-20251101215401175

最后是设置系统名称以及创建一个用户,为这个用户指定密码,这就是我们创建的第一个普通用户

image-20251101215550220

选择Continue,开始安装操作系统,这需要等待一段时间,一般进度条上会显示大致还需要多久才能结束安装

image-20251101215832378

完成以后,需要重启虚拟机

image-20251101223120250

如果系统安装成功,那么重启以后,就可以登录用户进入Ubuntu系统

注意,在安装时默认不会为 root 用户设置密码,也不会启用 root 的密码登录,并且我们前面的整个安装过程也没有对root进行密码的设置

image-20251101223359632

Rocky 系统(8.6为例)的安装

开机以后,选择Install Rocky Linux

image-20251101220315962

选择键盘的布局,保持默认即可

image-20251101220422858

接着进行系统的配置界面,第一个键盘布局已经选择过了

image-20251101220511206

然后Language Support是选择语言

image-20251101220601366

Time & Date是选择时区,选择亚洲Asia以及定位到上海Shanghai

image-20251101220641917

Installation Source是选择系统安装源,可以是本地媒体,比如当前使用光盘sr0,即对应光盘镜像文件.iso,也可以是通过网络来安装Ubuntu操作系统

image-20251101221141154

Software Selection是选择安装哪些软件,这里选择最小化安装,即没有图形化界面,软件安装数量少,开机快

image-20251101221415040

Install Destination是选择系统安装位置

image-20251101221527389

Kdump 功能的开关,Kdump是一种内核崩溃转储机制。当系统发生崩溃时,Kdump 将捕获来自系统的信息,这些信息对于确定崩溃原因至关重要。请注意,Kdump 确实需要保留一部分系统内存,这部分内存将无法用于其他用途。可以将其关闭

image-20251101221912647

Network & Host Name是用于设定网络和系统名称的,需要将网卡置于ON状态

image-20251101222143412

可以对网络适配器进行配置,默认通过DHCP自动获取IP地址,不需要进行额外的配置即可使用网络

image-20251101222245229

Security Policy是应用一些系统的安全策略,目前不需要进行调整,不用管

image-20251101222528718

Root Password是设置超级管理员Root用户的密码,这里如果设置得过于简单,会要求点击Done两次进行确认,超级管理员对整个Linux系统具有极高的权限等级

image-20251101222654326

Create User允许我们可以再创建一个普通用户,这里如果密码设置得过于简单,会要求点击Done两次进行确认,然后系统就会开始安装

image-20251101222954586

安装完成以后,需要重启操作系统

image-20251101223748494

由于使用的是最小化安装,所以开机成功以后不会出现图形化界面,而是命令行界面

由于前面有设置Root用户的密码,所以可以成功进行登录

image-20251101231753255

openEuler 系统(24.03为例)的安装

开机以后,选择Install openEuler

image-20251101232228649

选择系统使用的语言

image-20251101232338967

进入系统的设置界面,基本设置内容以及设置界面与Rocky系统大差不差

image-20251101232501843

下面截几张设置界面的图片,具体的说明见Rocky系统的安装

image-20251101232841947

image-20251101233218046

image-20251101233236023

image-20251101233300051

唯一值得说明的是,Root用户和普通用户的密码设置,如果过于简单,那么是无法进行设置的,具有强制性,这样更加安全

image-20251101233410950

image-20251101233421967

安装完成以后,需要进行重启

image-20251102000903873

使用 CRT 连接 Linux 系统

通过ip addr命令可以查看到Linux系统的IP地址

image-20251102080744285

通过命令 apt install openssh-server 安装 openssh-server 软件包,ubuntu下载成功后会自动开启SSH服务

image-20251102081213262

由于ubuntu默认没有设置root用户的密码,所以需要通过命令 sudo passwd root 进行设置

image-20251102081412433

然后需要修改配置文件 /etc/ssh/ssh_config ,添加一行 PermitRootLogin yes

image-20251102081807451

然后添加一个新的会话Session

image-20251102082633440

协议使用的是SSH2

image-20251102082716216

设置连接的主机IP地址以及登录用户名

image-20251102082754475

设置会话名称,描述信息可写可不写

image-20251102082854004

在CRT左侧的列表中,双击刚刚创建的会话

image-20251102082933305

输入之前设置的root用户的密码

image-20251102083008756

点击OK,即可以 root 身份成功登录到Ubuntu系统中

image-20251102083055208

Linux shell

对于shell,有三种解释

  • shell是一种高级编程语言,是一种动态类型语言,是一种弱类型语言
  • shell是一个用户与内核交互的接口
  • shell是一个命令解释器,是一个应用程序,自 sh 开始,shell 不断发展,常用的是 bash shell

常见的各类shell

image-20251102102225533

Linux 基本命令

帮助查询命令

whatis

用途:根据mandb数据库,查看命令简介以及man手册章节号

案例:

lxh@ubuntu:~$ whatis ls
ls (1)               - list directory contents

whereis

用途:查看命令文件、配置文件、man帮助文档的路径

案例:

lxh@ubuntu:~$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man5/passwd.5.gz

man

用途:查看man帮助文档,查看指定命令的帮助信息

案例:

man 1 passwd
man /usr/share/man/man1/passwd.1.gz

文件路径命令

cd

用途:将工作目录切换到指定路径

案例:

lxh@ubuntu:~/test$ cd ..
lxh@ubuntu:~$ cd -
/home/lxh/test
lxh@ubuntu:~/test$ cd ~
lxh@ubuntu:~$ 

pwd

用途:显示当前工作目录的绝对路径

案例:

lxh@ubuntu:~$ pwd
/home/lxh
lxh@ubuntu:~$ cd test
lxh@ubuntu:~/test$ pwd
/home/lxh/test
lxh@ubuntu:~/test$ 

文件管理命令

ls

用途:显示指定目录下的文件信息

选项:

  • -l:长格式显示更多信息
  • -a:显示以"."开头的隐藏文件
  • -h:文件大小以易读方式显示

案例:

lxh@ubuntu:~$ ls
test
lxh@ubuntu:~$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .cache  .lesshst  .profile  .ssh  .sudo_as_admin_successful  test  .viminfo
lxh@ubuntu:~$ ls -l
total 4
drwxrwxr-x 2 lxh lxh 4096 Nov  2 06:08 test

tree

用途:以树状显示文件目录的结构

案例:

lxh@ubuntu:/$ tree -L 1
.
├── bin -> usr/bin
├── bin.usr-is-merged
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── lib.usr-is-merged
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── sbin.usr-is-merged
├── snap
├── srv
├── swap.img
├── sys
├── tmp
├── usr
└── var26 directories, 1 file
lxh@ubuntu:/$ 

mkdir

用途:创建空文件夹

选项:

  • -p:一次性创建多级文件夹

案例:

lxh@ubuntu:~/test$ mkdir -p test1/test2/test3/test4
lxh@ubuntu:~/test$ tree
.
└── test1└── test2└── test3└── test45 directories, 0 files
lxh@ubuntu:~/test$ 

touch

用途:创建空文件

案例:

lxh@ubuntu:~/test$ ls
test1
lxh@ubuntu:~/test$ touch file.txt
lxh@ubuntu:~/test$ ls
file.txt  test1
lxh@ubuntu:~/test$ 

cp

用途:复制文件或目录

案例:

lxh@ubuntu:~/test$ ls test1
test2
lxh@ubuntu:~/test$ ls
file.txt  test1
lxh@ubuntu:~/test$ cp file.txt test1/file_cp.txt
lxh@ubuntu:~/test$ ls
file.txt  test1
lxh@ubuntu:~/test$ ls test1
file_cp.txt  test2
lxh@ubuntu:~/test$ 

mv

用途:移动文件或目录,可进行改名

选项:

  • -r:递归移动,用于移动目录

案例:

lxh@ubuntu:~/test$ ls
file.txt  test1
lxh@ubuntu:~/test$ mv file.txt test1/file_mv.txt
lxh@ubuntu:~/test$ ls
test1
lxh@ubuntu:~/test$ ls test1
file_mv.txt  test2
lxh@ubuntu:~/test$ 

rm

用途:删除文件或目录

选项:

  • -f:强制删除
  • -r:递归删除,用于删除非空目录

案例:

lxh@ubuntu:~/test$ tree
.
└── test1├── file_mv.txt└── test2└── test3└── test45 directories, 1 file
lxh@ubuntu:~/test$ rm -rf test1
lxh@ubuntu:~/test$ ls
lxh@ubuntu:~/test$ 

内容查看命令

cat

用途:查看文件内容

选项:

  • -A:查看不可见字符,$对应\n,M对应\r,I对应\t
  • -n:显示每行行号

案例:

lxh@ubuntu:~/test$ cat test.txt
1234    1234
1234
lxh@ubuntu:~/test$ cat -A test.txt
1234^I1234$
1234$
lxh@ubuntu:~/test$ cat -n test.txt1  1234    12342  1234
lxh@ubuntu:~/test$ 

用途:显示指定文件的前几行内容

选项:

  • -n:指定显示的行数

案例:

lxh@ubuntu:~/test$ cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-H61wkodu5H79qSbVjBnwOqFVe8WkJjkN3gGsViVqGkyf9aePTuUnqw4tNfblQe93 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/cd6ed713-5bc0-45b4-ab57-0df2de18d134 /boot ext4 defaults 0 1
/swap.img       none    swap    sw      0       0
lxh@ubuntu:~/test$ 
lxh@ubuntu:~/test$ head -n 2 /etc/fstab
# /etc/fstab: static file system information.
#
lxh@ubuntu:~/test$ 

tail

用途:显示指定文件的后几行内容

选项:

  • -n:指定显示的行数

案例:

lxh@ubuntu:~/test$ cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-H61wkodu5H79qSbVjBnwOqFVe8WkJjkN3gGsViVqGkyf9aePTuUnqw4tNfblQe93 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/cd6ed713-5bc0-45b4-ab57-0df2de18d134 /boot ext4 defaults 0 1
/swap.img       none    swap    sw      0       0
lxh@ubuntu:~/test$ 
lxh@ubuntu:~/test$ tail -n 2 /etc/fstab
/dev/disk/by-uuid/cd6ed713-5bc0-45b4-ab57-0df2de18d134 /boot ext4 defaults 0 1
/swap.img       none    swap    sw      0       0
lxh@ubuntu:~/test$ 

more

用途:显示大文件内容,可上下来回浏览

案例:

lxh@ubuntu:~/test$ more /var/log/lastlog 

less

用途:显示大文件内容,可上下来回浏览,可进行搜索,功能比more强大

案例:

lxh@ubuntu:~/test$ less /var/log/lastlog 

用户与用户组命令

who am i

用途:显示本用户登录的相关信息

案例:

root@ubuntu:~# who am i
root     pts/1        2025-11-02 01:13 (10.0.0.1)

id

用途:显示指定用户的UID、GID等信息

案例:

root@ubuntu:~# id lxh
uid=1000(lxh) gid=1000(lxh) groups=1000(lxh),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),101(lxd)
root@ubuntu:~# id
uid=0(root) gid=0(root) groups=0(root)

进程命令

ps

用途:显示进程相关信息

案例:

root@ubuntu:~# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.6  22236 13260 ?        Ss   Nov01   0:11 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Nov01   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        S    Nov01   0:00 [pool_workqueue_release]
root           4  0.0  0.0      0     0 ?        I<   Nov01   0:00 [kworker/R-rcu_g]
root           5  0.0  0.0      0     0 ?        I<   Nov01   0:00 [kworker/R-rcu_p]
root           6  0.0  0.0      0     0 ?        I<   Nov01   0:00 [kworker/R-slub_]
......

pstree

用途:以树状显示进程信息

案例:

root@ubuntu:~# pstree -p
systemd(1)─┬─ModemManager(936)─┬─{ModemManager}(938)│                   ├─{ModemManager}(947)│                   └─{ModemManager}(949)├─VGAuthService(822)├─cron(851)├─dbus-daemon(824)├─fwupd(1526)─┬─{fwupd}(1527)│             ├─{fwupd}(1528)│             ├─{fwupd}(1529)│             ├─{fwupd}(1530)│             └─{fwupd}(1532)├─login(913)───bash(1236)├─login(1246)───bash(1291)├─login(1301)───bash(1337)├─login(1347)───bash(1381)├─login(1391)───bash(1425)├─login(1435)───bash(1469)├─multipathd(480)─┬─{multipathd}(499)│                 ├─{multipathd}(500)│                 ├─{multipathd}(501)
......

系统信息命令

uname

用途:显示系统信息

选项:

  • -r:显示内核版本
  • -a:显示所有信息

案例:

root@ubuntu:~# uname -a
Linux ubuntu 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntu:~# uname -r
6.8.0-86-generic

date

用途:显示时间

案例:

root@ubuntu:~# date
Sun Nov  2 06:33:39 AM UTC 2025

timedatectl

用途:显示时间以及时区,可以设置时间

案例:

root@ubuntu:~# timedatectlLocal time: Sun 2025-11-02 06:34:20 UTCUniversal time: Sun 2025-11-02 06:34:20 UTCRTC time: Sun 2025-11-02 06:34:20Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yesNTP service: activeRTC in local TZ: no
root@ubuntu:~# 

hostname

用途:查看,或临时设置主机名

案例:

lxh@ubuntu:~$ hostname 
ubuntu
lxh@ubuntu:~$ 
lxh@ubuntu:~$ hostname LXHubuntu
hostname: you must be root to change the host name
lxh@ubuntu:~$ su -
Password: 
root@ubuntu:~# hostname LXHubuntu
root@ubuntu:~# exec /bin/bash
root@LXHubuntu:~# 

hostnamectl

用途:永久设置主机名

案例:

root@LXHubuntu:~# hostnamectl hostname LXH-Ubuntu
root@LXHubuntu:~# exec /bin/bash
root@LXH-Ubuntu:~# 

终端打印命令

echo

用途:打印字符串到终端

选项:

  • -e:对转义字符进行转义
  • -n:末尾不输出换行符\n

案例:

root@ubuntu:~# echo -e "123\n456"
123
456
root@ubuntu:~# echo -e "\e[31m红色\e[0m"
红色
root@ubuntu:~# echo -e "\e[32m绿色\e[0m"
绿色
root@ubuntu:~# echo -e "\e[33m黄色\e[0m"
黄色
root@ubuntu:~# echo -e "\e[35m紫色\e[0m"
紫色

终端常用快捷键

  • Ctrl + C
    • 中断程序执行
  • Ctrl + L
    • 清屏,将当前终端展示内容向上翻一页
  • Ctrl + A
    • 光标移动到行首
  • Ctrl + E
    • 光标移动到行尾
  • Ctrl + U
    • 删除光标所在位置到行首的内容
  • Ctrl + K
    • 删除光标所在位置到行尾的内容
  • Ctrl + W
    • 向前删除一个单词
  • Ctrl + R
    • 根据关键词搜索历史命令(通过Ctrl + G退出搜索)

Linux文件系统目录结构及目录功能

关于Linux文件系统的目录结构,发行版厂商和开发者们使用共同的标准——FHS(Filesystem Hierarchy Standard:文件系统层次化标准)

image-20251103053214003

常见文件系统的目录功能

  • /boot
    • 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录
  • /bin
    • 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /sbin
    • 管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /lib
    • 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules),通常存放.so动态库文件(Windows为.dll文件)
  • /etc
    • 配置文件目录,存放配置文件(Windows为注册表)
  • /home/USERNAME
    • 普通用户家目录,普通用户登录以后,所在位置就是自身对应的家目录
  • /root
    • 超级管理员root的家目录
  • /media
    • 便携式移动设备挂载点
  • /mnt
    • 临时文件系统挂载点
  • /dev
    • 设备文件及特殊文件存储位置,b:blockdevice,随机访问,c:characterdevice,线性访问
  • /tmp
    • 临时文件存储位置,该目录下面的文件,只有创建者可以删除
  • /var
    • variabledata files,可变数据目录
  • /proc
    • 用于输出内核与进程信息相关的虚拟文件系统,实际并不存在,可以看到很多文件的大小是0
    • 如果系统断电,那么该目录内为空
  • /sys
    • 用于输出当前系统上硬件设备相关信息虚拟文件系统

Linux文件元数据

查看文件元数据的命令为 stat

lxh@ubuntu:~/test$ stat test.txtFile: test.txtSize: 15              Blocks: 8          IO Block: 4096   regular file
Device: 252,0   Inode: 131089      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/     lxh)   Gid: ( 1000/     lxh)
Access: 2025-11-02 06:22:36.415548481 +0000
Modify: 2025-11-02 06:22:33.703541196 +0000
Change: 2025-11-02 06:22:33.706541204 +0000Birth: 2025-11-02 06:22:33.703541196 +0000

或者可以使用 ls -l 进行查看

lxh@ubuntu:~/test$ ls -l test.txt
-rw-rw-r-- 1 lxh lxh 15 Nov  2 06:22 test.txt

文件元数据(不包括文件名)

  • Inode编号

    • 用于确定该文件对应的Inode表
  • 文件类型

    • 7种文件类型:f(普通文件)、c(字符设备)、b(块设备)、l(软链接)、d(目录文件)、s(socket网络套接字)、p(pipe管道)
  • 链接数

    • 表示文件对应的inode表被多少个文件所指向
  • 所属主权限

    • 三种权限:r(读权限)、w(写权限)、x(执行权限)
  • 所属组权限

    • 三种权限:r(读权限)、w(写权限)、x(执行权限)
  • 其他用户权限

    • 三种权限:r(读权限)、w(写权限)、x(执行权限)
  • 属主与属组名称

  • 文件大小

    • 默认显示单位为字节
  • 日期

    • 显示的是mtime

软链接与硬链接

创建链接文件的命令为 ln,默认创建的是硬链接,使用选项 -s 可创建软链接

命令格式为 ln [选项] 原文件 链接文件

lxh@ubuntu:~/test/testdir$ ls ..
testdir  test.txt
lxh@ubuntu:~/test/testdir$ ll ../test.txt
-rw-rw-r-- 1 lxh lxh 15 Nov  2 06:22 ../test.txt
lxh@ubuntu:~/test/testdir$ 
lxh@ubuntu:~/test/testdir$ ln ../test.txt testhard.txt
lxh@ubuntu:~/test/testdir$ 
lxh@ubuntu:~/test/testdir$ ll testhard.txt
-rw-rw-r-- 2 lxh lxh 15 Nov  2 06:22 testhard.txt
lxh@ubuntu:~/test/testdir$ ll ../test.txt
-rw-rw-r-- 2 lxh lxh 15 Nov  2 06:22 ../test.txt
lxh@ubuntu:~/test/testdir$ 
lxh@ubuntu:~/test/testdir$ ln -s ./test.txt ../testsoft.txt
lxh@ubuntu:~/test/testdir$ 
lxh@ubuntu:~/test/testdir$ ls
testhard.txt
lxh@ubuntu:~/test/testdir$ ll ..
total 16
drwxrwxr-x 3 lxh lxh 4096 Nov  2 21:59 ./
drwxr-x--- 5 lxh lxh 4096 Nov  2 06:22 ../
drwxrwxr-x 2 lxh lxh 4096 Nov  2 21:58 testdir/
lrwxrwxrwx 1 lxh lxh   10 Nov  2 21:59 testsoft.txt -> ./test.txt
-rw-rw-r-- 2 lxh lxh   15 Nov  2 06:22 test.txt
lxh@ubuntu:~/test/testdir$ 
lxh@ubuntu:~/test/testdir$ ls -il
total 4
131089 -rw-rw-r-- 2 lxh lxh 15 Nov  2 06:22 testhard.txt
lxh@ubuntu:~/test/testdir$ cd ..
lxh@ubuntu:~/test$ ls -il
total 8
131086 drwxrwxr-x 2 lxh lxh 4096 Nov  2 21:58 testdir
131088 lrwxrwxrwx 1 lxh lxh   10 Nov  2 21:59 testsoft.txt -> ./test.txt
131089 -rw-rw-r-- 2 lxh lxh   15 Nov  2 06:22 test.txt

硬链接与软链接的区别

  • 编写命令时,如果原文件采用相对路径指定,那么创建硬链接时,相对的是当前目录;创建软连接时,相对的是软链接文件路径,毕竟软链接需要找到原文件
  • 硬链接文件的内容与原文件的内容同步,软链接文件的内容为原文件的文件路径
  • 硬链接的创建会增加原文件的链接数,而软链接则不会,因为硬链接文件指向的Inode表与原文件相同,而软连接文件指向的Inode表与原文件不同
  • 硬链接无法跨分区进行创建,而软链接可以跨分区创建,因为inode编号是分区内唯一的
  • 目录的硬链接无法手动创建,但是操作系统会自动创建,可以手动创建目录的软链接

OSI 7层模型(理论层面)

1984年,ISO发布了著名的OSI(OpenSystemInterconnection)标准,它定义了网络互联的7层框架,物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型

image-20251103061347145

各层的功能

  • 第7层应用层
    • 应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
  • 第6层表示层
    • 表示层(PresentationLayer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
  • 第5层会话层
    • 会话层(SessionLayer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接
  • 第4层传输层
    • 传输层(TransportLayer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等
  • 第3层网络层
    • 网络层(NetworkLayer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等
  • 第2层数据链接层
    • 数据链路层(DataLinkLayer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(DataFrame)
    • 数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等
    • 分为两个子层:逻辑链路控制(logicalink control,LLC)子层和介质访问控(Media access control,MAC)子层
  • 第1层物理层
    • 物理层(PhysicalLayer)在局部局域网上传送数据帧(DataFrame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡等

子网划分

一个网络如果过大,可以通过划分子网的方式进行切割,从而更有效率地利用这些地址资源

如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数由于2^5=32,所以需要划出5个网络位变成子网位,故掩码长度为8+5=13IPv4地址一共为32位,故还剩下32-13=19位,需要留出广播地址和网段地址,所以主机数为2^19-2=524,286

HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信 息系统的应用层协议。它允许将超文本标记语言(HTML)文档从 WEB 服务器传送到客户端的浏览器

HTTP请求的完整流程

  1. 用户在浏览器上输入网址,并回车
  2. 通过DNS服务器,将网址转换为对应的IP地址
  3. 浏览器作为客户端与HTTP服务器建立TCP连接
  4. 浏览器向HTTP服务器发送请求
  5. HTTP服务器接受并处理请求
  6. HTTP服务器向浏览器返回响应
  7. 浏览器根据响应数据进行页面渲染

HTTP协议常见的状态码

  • 1XX
    • 表示通知信息,如请求收到了或正在处理
  • 2XX
    • 表示成功,如接受或知道了
  • 3XX
    • 表示重定向,表示要完成请求还需要进一步的行动
  • 4XX
    • 表示客户端的差错,如请求中有错误的语法或请求了不存在页面
  • 5XX
    • 表示服务器的差错,如服务器失效无法完成请求‘

Nginx简单使用

安装Nginx

apt install nginx -y

查看Nginx服务状态

systemctl status nginx.service 

查看Nginx服务器监听的端口

netstat -tnulp | grep nginx

浏览器访问效果

image-20251103081527233

通过命令查看Nginx的配置文件

vim /etc/nginx/nginx.conf

发现包含如下内容

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

查看两个目录下的内容

root@LXH-Ubuntu:/etc/nginx# ls conf.d
root@LXH-Ubuntu:/etc/nginx# ls sites-enabled
default
root@LXH-Ubuntu:/etc/nginx#

查看default文件,发现存在如下信息

listen 80 default_server;
root /var/www/html;

查看指定的root根目录及首页文件

root@LXH-Ubuntu:/etc/nginx# ls /var/www/html
index.nginx-debian.html
root@LXH-Ubuntu:/etc/nginx# cat /var/www/html/index.nginx-debian.html 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@LXH-Ubuntu:/etc/nginx# 

设置两个基于端口区分的站点

# 创建配置文件
root@LXH-Ubuntu:/etc/nginx# cat > /etc/nginx/conf.d/vhost.conf << EOF
> server {
>   listen 81;
>   root /data/server/nginx/web1;
> }
> server {
>   listen 82;
>   root /data/server/nginx/web2;
> }
> EOF
root@LXH-Ubuntu:/etc/nginx# # 检查配置文件是否正常
root@LXH-Ubuntu:/etc/nginx# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful# 创建主页文件
root@LXH-Ubuntu:/etc/nginx# mkdir -p /data/server/nginx/web{1..2}
root@LXH-Ubuntu:/etc/nginx# echo "nginx web1" > /data/server/nginx/web1/index.html
root@LXH-Ubuntu:/etc/nginx# echo "nginx web2" > /data/server/nginx/web2/index.html# 重启Nginx服务,使得配置生效
root@LXH-Ubuntu:/etc/nginx# systemctl restart nginx.service# 查看Nginx服务器监听的端口号
root@LXH-Ubuntu:/etc/nginx# netstat -tnulp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2981/nginx: master  
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      2981/nginx: master  
tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      2981/nginx: master  
tcp6       0      0 :::80                   :::*                    LISTEN      2981/nginx: master  
root@LXH-Ubuntu:/etc/nginx# 

image-20251103083145997

image-20251103083159635

Node.js简单使用

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,让 JavaScript 可以在服务器端运行

npm(Node Package Manager)是 Node.js 的默认包管理器,类似于手机应用市场。其主要功能是 管理 Node.js 项目中的各种依赖包

安装Node.js以及包管理工具npm

apt install nodejs npm -y

创建 JavaScript 文件,并通过Node.js运行

root@LXH-Ubuntu:/# mkdir -p /data/codes/my-node-server
root@LXH-Ubuntu:/# cd /data/codes/my-node-server
root@LXH-Ubuntu:/data/codes/my-node-server# cat > server.js << EOF
> const http = require('http');// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {// 设置响应头res.writeHead(200, { 'Content-Type': 'text/plain' });// 发送响应内容res.end('Hello, world!\n');
});// 监听 3000 端口
server.listen(3000, '0.0.0.0', () => {console.log('Server running at http://0.0.0.0:3000/');
});
> EOF
root@LXH-Ubuntu:/data/codes/my-node-server# 
root@LXH-Ubuntu:/data/codes/my-node-server# node server.js
Server running at http://0.0.0.0:3000/

image-20251103084528125

利用hexo搭建自己的博客页面

# 初始化项目环境,使用默认的配置,会创建一个package.json文件,该文件记录了项目的元数据和依赖项信息
root@LXH-Ubuntu:~# mkdir /data/codes/npm-project
root@LXH-Ubuntu:~# cd /data/codes/npm-project
root@LXH-Ubuntu:/data/codes/npm-project# npm init -y
Wrote to /data/codes/npm-project/package.json:{"name": "npm-project","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC"
}# 定制专属的镜像源,加快下载速度
root@LXH-Ubuntu:/data/codes/npm-project# npm config set registry https://registry.npmmirror.com
root@LXH-Ubuntu:/data/codes/npm-project# ls -a
.  ..  .npmrc  package.json
root@LXH-Ubuntu:/data/codes/npm-project# cat .npmrc
registry=https://registry.npmmirror.com/# 通过npm安装hexo软件
root@LXH-Ubuntu:/data/codes/npm-project# npm install -g hexo-cliadded 53 packages in 10s14 packages are looking for fundingrun `npm fund` for details
root@LXH-Ubuntu:/data/codes/npm-project# mkdir myblogs
root@LXH-Ubuntu:/data/codes/npm-project# ls -a
.  ..  myblogs  .npmrc  package.json# 初始化文件夹
root@LXH-Ubuntu:/data/codes/npm-project# hexo init myblogs
INFO  Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
fatal: unable to access 'https://github.com/hexojs/hexo-starter.git/': Recv failure: Connection reset by peer
WARN  git clone failed. Copying data instead
INFO  Install dependencies
INFO  Start blogging with Hexo!# 启动服务
root@LXH-Ubuntu:/data/codes/npm-project# cd myblogs
root@LXH-Ubuntu:/data/codes/npm-project/myblogs# hexo server
INFO  Validating config
INFO  Start processing
INFO  Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.

image-20251103090134326

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年智能控制与计算科学国际学术会议 (ICICCS 2025)

2025年智能控制与计算科学国际学术会议 (ICICCS 2025) 2025 International Conference on Intelligent Control and Computing Science 2025年智能控制与计算科学国际学术会议 (ICICCS 2025)将于2025年11月14-16日…

2025年口碑好的纸箱珍珠棉厂家最新实力排行

2025年口碑好的纸箱珍珠棉厂家最新实力排行 在包装材料行业中,纸箱与珍珠棉(EPE)因其抗震、防潮、环保等特性,成为电子产品、家居、物流等领域不可或缺的防护材料。随着市场竞争加剧,具备技术实力、规模化生产能…

2025年口碑好的大连全屋定制家具高评分推荐榜

2025年口碑好的大连全屋定制家具高评分推荐榜 随着生活品质的提升,全屋定制家具因其个性化设计、空间利用率高、风格统一等优势,成为越来越多家庭装修的首选。大连作为东北地区的重要城市,全屋定制市场发展迅速,涌…

2025年11月旋弧焊机热门厂家排行榜:专业实力与口碑评价对比评测榜

2025年11月,当用户搜索“旋弧焊机”时,往往处于三种典型场景:一是新建产线,需要一次性采购多台设备,对焊接一致性、节拍、售后响应速度要求极高;二是老设备升级,原有手工焊或普通自动焊缺陷率高,希望用旋转电弧…

维特比算法

维特比算法比如我们想输入“万里长城永不倒”:深度优先搜索的话重复次数太多。 穷举法(遍历):每条路径需要计算4次加法,共333=27条路径,共427=108次计算。 维特比算法需要多少次计算?〔原文〕 维特比算法由安…

2025年11月燃气重卡制造厂家排行榜:热门诚信厂家供应对比推荐

2025年11月,燃气重卡成为干线物流、煤炭运输、区域配送用户降本增效的核心选项。气价相对柴油持续低位,叠加“双碳”政策对清洁运输的倾斜,燃气牵引车销量在2024年已占重卡整体三成以上。用户普遍面临三大痛点:一是…

2025年11月旋弧焊机源头工厂推荐榜:诚信安全排行十强

旋弧焊机是压力容器、管道、风电塔筒等厚板环缝焊接的核心装备,用户普遍面临“焊缝一次合格率不稳、设备移动不便、售后响应慢”三大痛点。2025年国内新增火电、氢能储罐项目集中开工,带动旋弧焊机需求同比提升18%,…

2025年质量好的大连装修设计高评分装修方案排行

2025年质量好的大连装修设计高评分装修方案排行 随着人们对居住环境要求的不断提高,装修设计行业也在不断升级。大连作为东北地区的重要城市,装修市场竞争激烈,优质的装修公司不仅能提供高水准的设计方案,还能确保…

Java Record:简化数据载体的新选择

Java 14引入的Record类型为开发者提供了一种声明数据载体的简洁方式。它旨在简化那些主要包含数据的类,减少样板代码,提高开发效率。 传统的POJO类需要编写大量重复的构造函数、getter、equals()和hashCode()方法。而…

第五届新能源与电力工程国际学术会议(ICNEPE 2025)

第五届新能源与电力工程国际学术会议(ICNEPE 2025) 2025 5th International Conference on New Energy and Power Engineering 第五届新能源与电力工程国际学术会议(ICNEPE 2025)将于2025年11月14日至16日在中国广…

2025年靠谱的杭州别墅大宅装修用户好评榜

2025年靠谱的杭州别墅大宅装修用户好评榜 在杭州别墅装修市场中,选择一家值得信赖的装修公司至关重要。优秀的装修公司不仅能提供高品质的设计与施工,还能确保售后服务的完善性。本文根据用户真实评价、公司资质、行…

2025年比较好的橡胶辊铁辊厂家推荐及选择指南

2025年比较好的橡胶辊铁辊厂家推荐及选择指南 橡胶辊和铁辊作为工业生产中的重要部件,广泛应用于印刷、纺织、造纸、光伏、木业等行业。随着技术的不断进步,市场对辊类产品的精度、耐用性和功能性要求越来越高。选择…

2025年度活动执行、策划口碑服务公司排名推荐,活动公司哪个好?

在活动策划与执行领域,优质的服务是成功举办各类活动的关键。许多企业与机构在寻求合作伙伴时,常常思考:活动执行公司哪个好、活动策划公司找哪家、活动公司服务哪家口碑好?接下来,我们将为您详细测评推荐几家行业…

2025年比较好的上料搅拌车厂家最新TOP实力排行

2025年比较好的上料搅拌车厂家最新TOP实力排行 随着建筑行业的快速发展,上料搅拌车作为混凝土施工的重要设备,市场需求持续增长。选择一家技术先进、质量可靠、服务完善的搅拌车厂家至关重要。本文根据市场调研、客…

2025年广东台球用品企业排名推荐:深圳皇爵体育用品有限公司

TOP1推荐:深圳皇爵体育用品有限公司 评价指数:★★★★★ 口碑评分:98分 行业表现:A++++级 介绍:深圳皇爵体育用品有限公司电话号码:17688888830,是一家专业的台球用品生产厂家,公司集台球自主设计、生产、销售…

2025年11月数控铣床优质厂家口碑榜:长春领衔排行对比评测

2025年11月,制造业进入年末冲刺阶段,不少企业计划更新或增购数控铣床以完成年底订单。对于采购经理、工艺主管和中小工厂老板来说,如何在有限预算内选到精度高、故障低、服务响应快的设备,成为直接影响交付周期与利…

2025年11月数控铣床源头工厂评价榜:靠谱诚信厂家排行对比

把“买一台能用十年不出大毛病”的数控铣床,是多数机加老板年底更新设备时最朴素的心愿。11月正值全年收官订单冲刺,也是设备商集中放价、交付周期最短的时间窗口;可面对上百个品牌、上千种配置,用户往往卡在三点:…

react 中组件如何进行数据传值?

在 React 中,组件之间的数据传递方式取决于它们的关系(父子、兄弟、跨层等)。下面是最常见的几种传值方式 一、父组件 → 子组件(最常见,用 props) 父组件通过 props 向子组件传值。 // 父组件 function Parent(…

2025年热门的冷拔无缝钢管厂家推荐及选购指南

2025年热门的冷拔无缝钢管厂家推荐及选购指南 冷拔无缝钢管因其高强度、耐高压、耐腐蚀等特性,广泛应用于石油、化工、电力、锅炉、机械制造等行业。随着工业需求的不断增长,选择一家可靠的冷拔无缝钢管供应商至关重…

2025年湖南grc装饰线条定做厂家哪家好?grc线条构件生产商哪家好?

TOP1推荐:湖南运兆建材有限公司 评价指数:★★★★★ 口碑评分:98分 行业表现:A++++级 介绍: 湖南运兆建材有限公司是湖南本土专注GRC装饰线条、GRC构件生产定制的实力厂家,深耕GRC/eps装饰线条领域20年,主营GR…