Linux操作

目录
0x01 计算机系统结构
0x02 安装和配置 CentOS
0x03 Linux 基础知识
0x04 Linux 文件和目录管理
0x05 文件压缩和解压缩
0x06 查看和处理文件内容
0x07 Linux 文本编辑器
0x08 Linux 安装软件
0x09 用户和权限管理
0x10 Linux 网络管理
0x11 系统状态管理


0x01 计算机系统结构

1.1 计算机发展历史

1.1.1 计算机组成

  1. 计算机应用程序
  2. 操作系统、编译原理、计算机网络
  3. 计算机体系结构
  4. CPU/GPU、内存/硬盘、显示器/键盘

1.1.2 发展历史

1) 图灵理论

计算的本质是一种机械运动,但它需要信息(指令)控制

2)香农

《继电器与开关电路的符号分析》
将电路开关和布尔代结合起来

3)冯·诺依曼体系结构

一般的计算机的组成:控制器,运算器,存储器,输入设备和输出设备

3)发展历程

  • 1946 电子管计算机
  • 1956 晶体管计算机
  • 1964 集成电路计算机
  • 1972 超大规模继承电路计算机

1.2 计算机硬件

1.2.1 CPU 中央处理器

解释指令 处理数据

1 ) 组成

  • 控制单元(Control Unit):发送控制指令,完成数据处理整个过程中的调配工作
  • 算术逻辑单元 ALU(Arithmetic Logic Unit):完成各个指令以便得到程序最终想要的结果
  • 存储单元:发原则储存原属数据以及运算结果
    (大规模 高精度)

芯片有很多种类
GPU 图形处理单元 (适合大量吞吐的 重复性强的工作)
NPU 神经网络处理单元
FGCA 现场可编程门

2 ) 参数

  • 核心数:物理核心数(插槽)
  • 线程: 超线程技术、逻辑处理器
  • 频率: 工作频率,1s 产生的脉冲信号
  • 32 位和 64 位: CPU 一次能处理的位数

3 ) CPU 指令集和架构

  • 指令是用来控制硬件的,经过编译后:01101 的电信号

  • 复杂指令集(Complex Instruction Set Computer): 每个指令做复杂动作,完成操作需要较少的指令【庞大】/Intel X86/ PC 端较多

  • 精简指令集(Reduced ISC): 每个指令做简单动作,完成操作需要很多指令【灵活】/ARM、RISC-V、MIPS/ 移动端较多

1.2.2 内存

用来临时存储 CPU 的运算的数据
CPU 不可以操作硬盘 需要写入内存再由 CPU 操作(CPU 造价高 存储空间宝贵)

1 ) 虚拟内存

可以让程序认为地址是连续、安全的

2 ) 区分

RAM 运行内存(电脑的)

ROM 存储空间(手机的)(容量)

3 ) 工作频率

SDRAM 100 133 166 200
DDR 200 2666 333 400
DDR2 400 -1066
DDR3 800-2133
DDR4 2133-3200
DDR5 4800 5200 5600…

1.2.3 硬盘(外部存储器)

1 ) MHDD 机械盘

/3.5 寸机械盘,2.5 寸机械盘/
(Mechanical Hard Disk Drive,HDD)机械盘是一种使用旋转磁盘和移动读写磁头的存储设备。它由一或多个可旋转的磁盘组成,在磁盘上有磁道和扇区存储数据。当读取或写入数据时,机械盘需要将读写磁头定位到正确的磁道上。机械盘具有较大的存储容量和相对较低的成本,常用于存储大量数据,如文档、照片、视频等。
机械盘的优点包括较大的存储容量、较低的成本和广泛的兼容性。然而,由于机械盘需要机械部件的运动,其读写速度较慢,平均寻址时间和访问延迟较高。

2 ) SSD 固态盘

/2.5 寸 SATA 固态盘,M.2 固态盘/
(Solid State Drive,SSD)固态盘是一种使用闪存存储芯片实现数据存储的设备。它没有机械部件,数据存储在闪存芯片中,通过电子方式进行读取和写入。相比于机械盘,固态盘具有更快的读写速度、更低的访问延迟和更高的可靠性。
固态盘的优点包括快速的数据访问速度、较低的能耗、抗震抗摔等特性。它适用于需要高性能和快速响应的场景,如操作系统安装盘、游戏载入盘等。
然而,固态盘的存储容量相对较小,价格也较高。因此,在实际应用中,常常将固态盘用作操作系统和常用应用程序的安装盘,而将机械盘用作数据存储盘,以兼顾性能与存储容量的平衡。

3 ) 本质区别

机械硬盘:是通过磁场的磁化去磁实现写入读取等操作
固态硬盘:利用闪存颗粒,压缩了体积,提高了速度

1.2.4 输入输出设备

输入: 键鼠,麦克风,摄像头,扫描仪,手柄
输出:显示器,扬声器

1.2.5 特殊

1 ) GPU

显卡:GPU(Graphics Processing Unit),通常称为显卡或图形处理器,是一种用于处理图形和影像计算的专用硬件设备。

GPU 最初是为了加速计算机图形渲染而设计的,主要用于游戏、电影制作、计算机辅助设计等需要大量图形处理的领域。与传统的中央处理器(CPU)相比,GPU 具有高并行计算能力,能够同时处理大量数据和执行多个任务。
GPU 的主要特点包括:

  1. 并行计算能力:GPU 拥有大量的处理单元和并行计算结构,可以同时处理多个数据和任务,加快计算速度。
  2. 图形渲染能力:GPU 有专门的图形渲染管道和纹理单元,能够高效地进行图形渲染和图像处理,提供更好的视觉效果。
  3. CUDA 和 OpenCL 支持:NVIDIA 的 CUDA 和 Khronos Group 的 OpenCL 是流行的 GPU 编程框架,可以利用 GPU 的并行计算能力进行通用计算。
  4. 图形内存:GPU 通常具有独立的图形内存,用于存储图像、纹理和其他图形数据,提供高速访问和处理。
  5. 显存带宽:GPU 的显存带宽决定了它能够传输和处理图像数据的速度,较高的带宽可以提高图形渲染和计算性能。

2 ) 声卡

不是单纯输入或输出,音频接口卡或声音适配器,是计算机中用于处理音频输入和输出的硬件设备。它可以将数字音频信号转换为模拟音频信号,并将音频信号发送到扬声器、耳机或其他音频设备上。


1.3 程序运行原理

1.3.1 二进制

二进制(Binary)是一种计数系统,只包含两个数字 0 和 1。这是一种非常重要的数制,尤其在计算机领域被广泛应用。
在二进制系统中,每个数字位代表一个权值。二进制在计算机中扮演着重要的角色,因为计算机内部的所有信息都以二进制形式存储和处理。使用二进制编码,计算机可以进行逻辑运算、数据存储和传输等操作。同时,二进制还可以通过编码方式表示其他形式的数据,如文字、图像和声音等。
(前苏联有三进制的)

1.3.2 编程语言

  1. 第一代 机器语言
    最底层的二进制代码语言
    01011
    操作复杂,直接和硬件交互,速度快

  2. 第二代 汇编语言
    用英文字母或符号串来代替操作
    LOAD A
    ADD B
    STORE C
    需要编译器翻译后给机器

  3. 第三代 高级汇编语言
    贴近自然语言,不直接操作硬件,可移植
    高级语言编码简单,特性较多

1.3.3 从源代码到可执行文件

  • 源程序
  • 编译器
  • 汇编语言程序
  • 汇编器
  • 机器代码
  • 连接器、加载器
  • 目标机器代码

1.4 操作系统

1.4.1 综述

Operating System,简称 OS,是计算机系统中的一种软件,它管理和控制计算机的硬件和软件资源,为用户和应用程序提供服务和接口。

  1. 管理硬件资源:操作系统负责管理计算机的硬件资源,包括处理器、内存、硬盘、输入输出设备等。它分配和调度这些资源,以提高计算机的性能和效率。
  2. 提供用户接口:操作系统提供了用户与计算机系统交互的接口,包括图形用户界面(GUI)和命令行界面(CLI)。用户可以通过这些界面执行操作、运行程序、管理文件等。
  3. 管理文件系统:操作系统管理计算机上的文件系统,包括文件的创建、读写、删除等操作。它还负责文件的组织和存储,确保文件的安全性和可靠性。
  4. 进程管理:操作系统管理计算机上运行的进程(程序的执行实例)。它分配和调度进程的执行顺序,控制进程的资源访问和通信,以确保系统的稳定性和效率。
  5. 内存管理:操作系统管理计算机的内存资源,包括内存的分配、回收、保护和虚拟内存等。它确保不同程序之间的内存空间隔离,并优化内存的使用效率。
  6. 设备驱动程序:操作系统提供设备驱动程序来管理和控制计算机的输入输出设备,如打印机、键盘、显示器等。它使应用程序可以方便地与设备进行交互。

1.4.2 个人电脑操作系统

win10.win11 mac…

1.4.3 服务器操作系统

客户端 Client ——》 网络 ——》服务端(服务器)Server
(详细访问: [计网笔记.1计网体系结构 | )

1.软件架构

C/S 架构 Client/Server

  • 客户端:迅雷,qq,wx…
  • 特点:需要安装和升级,占用资源多,性能高

B/S 架构 Browser/Server

  • 浏览器:CHrome,Edge…
  • 站点:百度,知乎…
  • 特点:不用安装,跨操作系统,占用资源低

2.服务器的组成部分

  • 服务器硬件(对环境要求严格)

  • 服务器操作系统
    Windows Server/ / windows
    CentOS/Redhat/Ubuntu/Debian/ /linux
    SUN Solatris/SBSD Unix/ /unix

  • HTTP 容器(Tomcat,Apache,Nginx)
    监听一个 HTTP 的端口,提高 HTTP 协议访问(默认端口 http80 https443)

  • 应用程序(应用服务器)
    各种编程语言开发的软件项目
    Java PHP Python Ruby Go

1.5 Linux 系统简述

1.5.1 为什么学习 Linux

  1. 使用网络的程序,都有服务器
  2. 服务器大部分是 Linux 操作系统

1.5.2 学 linux 的要点

  1. 先学习重点
  2. 分门别类的学
  3. 不要强行记命令
  4. 多用,自然熟练

1.5.3 Linux 内核

  1. 内核(只有操作系统的核心功能): 设备驱动、文件系统、进程管理、网络通信…

  2. 查询内核版本

  1. 版本号含义 Linux 3.10.0-514.el7.x86_64
    版本号含义

  2. 发行版: Distribute


0x02 安装和配置 CentOS

2.1 Docker 容器技术

当今大量被运用在服务器里面

2.2.1 架构

通过远程仓库简单的处理环境配置等问题

2.2.2 特点

  1. 开箱即用
  2. 快速部署
  3. 可移植性强
  4. 环境隔离

2.2.3 实现原理

  1. namespace 系统环境的隔离
  2. Cgroup 资源限制
  3. 镜像管理文件系统操作 根目录环境的隔离

对比虚拟机:容器的应用程序的运行环境是建立在 容器引擎对物理机操作系统的基础上
虚拟机是建立在虚拟机–》虚拟机监视器–》物理机操作系统

  • 虚拟机主要是用来提升硬件资源的利用率进而隔离资源
  • 容器主要用来简化环境配置的过程

2.2 关于 VMware

2.2.1 补充基本功能

1)虚拟机被锁定

原因:不可以同时打开同一个正在使用的虚拟机

解决:找到原来的窗口,或者删除虚拟机目录下所有的.lck 文件和.lck 目录

2)重启,休眠后虚拟机无法使用

解决:
方法一:打开网络,属性(网络适配器)中禁用 vmnet8,再启用。

方法二:管理员运行重启 bet 脚本

3)克隆、快照

克隆:免去重新安装配置的麻烦(克隆后可以吃病毒了)
创建完整克隆才是隔离独立的,链接克隆是引用

快照:可以还原时间节点(还原拍摄快照时刻,回溯)

4)与物理机传输文件

物理机和虚拟机共享一些文件,如何做到

  1. net 模式下,利用社交软件,上外网手动传输(同一网段下才有可观的传输速度)

  2. 直接物理机复制,虚拟机黏贴 (VMtools)

  3. 使用 XSELL 或者 Xftp

2.2.2 VMware 的三种网络模式

1)前置知识

  • 网卡是电脑内置的硬件(有线网/无线网 两张)
  • 路由器 充当网关,控制下行网络;扩展有线网络端口;WIFI(让移动设备连接无线网络)
  • 交换机 扩展有线网络接口

2)虚拟交换机

可以让同一种网络模式的虚拟机相互连接

  • VMnet0-桥接模式
  • VMnet1-仅主机模式
  • VMnet8-NAT 模式

3)虚拟网卡

让主机和虚拟机相互连接
桥接模式不需要虚拟网卡

  • VMware Network Adapter VMnet1 仅主机模式
  • VMware Network Adapter VMnet8 NAT 模式

4)桥接模式

通信方式

  1. 虚拟机通过连接到虚拟机交换机,利用虚拟网桥连接到主机的网卡
  2. 不需要虚拟网卡,没有 VMware Network Adapter VMnet0

特点

  1. 物理机和虚拟机地位平等
  2. 虚拟机占用一个独立 IP
  3. 使用物理机网卡访问互联网

配置
虚拟机 IP 网段和主机一致

连通情况

  1. 主机和虚拟机可以相互访问
  2. 虚拟机之间可以相互访问
  3. 可以访问互联网
  4. 可以访问其他主机
  5. 其他主机可以访问此虚拟机

使用场景
创建一个虚拟服务器在内网提供 网络服务

5)NAT 模式

通信方式

  1. 虚拟 NAT 设备(虚拟路由)连接到 VMnet8 虚拟交换机(给虚拟机联网用的)
  2. 主机通过虚拟网卡连接到 VMnet8 虚拟交换机(主机和虚拟机连接用的)

特点

  1. 虚拟机在外部网络中没有自己的 IP 地址
  2. 虚拟 NAT 设备会把专用网络中的 IP 地址转换为主机系统的 IP 地址(网络地址的转换)
  3. 主机可以联网,虚拟机就可以联网

配置

连通情况

  1. 主机和虚拟机可以相互访问
  2. 虚拟机之间可以相互访问
  3. 可以访问互联网
  4. 可以访问其他主机
  5. 其他主机不可以访问此虚拟机
    (解决方法:共享网络/端口映射)

使用场景
大部分默认情况


5)仅主机模式

通信方式
主机使用虚拟网卡连接到虚拟交换机

特点
无 NAT 设备(虚拟路由),因此不能上网

配置

连通情况

  1. 主机和虚拟机可以相互访问
  2. 虚拟机之间可以相互访问
  3. 不可以访问互联网
  4. 不可以访问其他主机
  5. 其他主机不可以访问此虚拟机

使用场景
创建一个与其他机器隔离的网络


2.3 VI 编辑器

vi 来打开编辑文本文件 vim 是升级版 vi

使用

1)命令模式

只能输入命令

2)编辑模式(插入模式)

按 i 进入
可以修改文本

3)底行模式

结束操作
按 Esc+ :q! 不保存退出
按 Esc+ :wq 保存退出

4)权限与 swp

只有 root 用户可以修改,低权限只读

swp 是未正确退出留下的临时文件
cd 指令找到文件目录
ls 展示所有文件
ls -a 可见所有文件和隐藏文件
rm+文件名 代表 remo 删除
y 确认(删除)


2.4 CentOS 部署

2.4.1 CentOS 替换为国内的阿里云 yum 源

Yellowdog Updater, Modified 是一种在 Linux 系统中用于软件包管理的工具,而 YUM 源则是指存储、提供软件包的服务器或仓库。通过配置 YUM 源,可以方便地通过 YUM 工具来获取、安装、更新和删除软件包。

1) 替换操作

文件位置:/etc/yum.repos.d/CentOS-Base.repo
cat 查看文件内容
备份:cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
替换源为阿里云:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
查看检查:cat /etc/yum.repos.d/CentOS-Base.repo

2)使用准备

清理缓存:yum clean all
重载缓存:yum makecache
(若重载缓存失败 1.再试试 2.检查自己的 ip 设置:vi /etc/sysconfig/network-scripts/ifcfg-ens33)
更新软件(不建议):sudo yum -y update

2.4.2 使用 Xshell

1) 什么是 Xshell(废话)

Xshell 是一款 Windows 平台上的强大的终端模拟软件,它提供了一个图形化界面,用于连接和管理远程计算机。以下是 Xshell 的一些主要特点和功能:

  1. 终端模拟:Xshell 可以模拟 SSH、TELNET、RLOGIN 和 SERIAL 等协议,让用户能够从本地计算机控制远程计算机的命令行界面。 (目前使用 SSH 进入 root 用户,使用 Xftp 实现物理机和虚拟机的文件传输)
  2. 多会话管理:可以在一个主窗口中同时管理和控制多个远程会话,方便进行批量操作和切换。
  3. 高级安全性:Xshell 支持 SSH 协议和公钥/私钥认证,通过加密和身份验证来保护远程会话的安全。它还提供了基于 X.509 数字证书的 SSL/TLS 加密功能。
  4. 自动登录和脚本执行:可以配置自动登录信息,使 Xshell 在启动时自动连接到指定的远程服务器。此外,还可以编写和执行脚本,实现自动化操作。
  5. 字符串调整和关键词高亮:Xshell 提供了字符串调整功能,可以自定义和更改远程终端中的字符样式。它还支持关键词高亮显示,帮助用户更容易地识别和区分命令和输出。
  6. 分屏显示:Xshell 支持在一个窗口中分割多个会话,使用户可以同时查看和管理多个终端。

2)操作

-Xshell 压缩包资源处下载后,把“Xshell_v7.0.0076.7z”解压出来,在“绿化处理.bat”上,右键管理员运行;桌面会得到一个 Xshell 快捷方式。双击启动 Xshell,新建会话;

-名称(N)自定义,区分不同的主机。主机(H)填写虚拟机的 IP

-接下来点“用户身份验证”,输入用户名和密码保存,确定。回到会话列表窗口,双击就可以打开连接了。
(第一次连接弹出接受 SSH Key,接受(永久保存)就可以了。)

0x03 Linux 基础知识

3.1 Linux 体系结构

3.1.1 内核

用来管理进程,内存,驱动,文件和网络
是系统的核心

3.1.2 Shell

接收用户的命令,经过转换,交给内核去执行
cat –> open()read()
win 的 cmd powershell 也是 shell 工具

1)好处

  1. 简化操作
  2. 安全

2)查询

CentOS 自带,可以外加
echo $SHELL 命令查询(输出 bin/bash)
cat /etc/shells 命令查询

3)更改

chsh -l 查看可选项目 (change shell list)
chsh -s /bin/csh/

-terminal 是对 shell 再次封装建立的图形化操作界面

4)shell 编程/Shell 脚本(.sh)


3.1.3 文件系统

一切皆文件

1. 文件简单操作

  • 普通文件、目录、进程(/proc)、输入输出设备(/dev)、网络字节流 socket、链接文件、管道文件
查看文件 作用
losf /bin/bash 查找某个文件相关的进程
lsof -u root 列出某个用户打开的文件信息
lsof -c redis 列出某个程序进程所打开的文件信息
lsof -i tcp 列出所有 tcp 网络连接信息

2. 文件基本知识(了解)

Linux 没有盘符概念,只有很多的文件夹
存在根目录
/ 是目录分隔符

  • 蓝色:目录
  • 绿色:可执行文件
  • 红色:压缩文件
  • 浅蓝色:链接文件
  • 白色:其他文件

3. 根目录操作(理解)

  • bin 存放普通用户可执行指令
  • boot 开机引导目录
  • dev 设备目录
  • etc 各种配置文件
  • lib 库文件存放地点,bin 和 sbin 需要的库文件
  • media 可以出设备挂载目录
  • mnt 用户临时挂载其他的文件系统
  • opt 第三方软件安装程序(建议放在/user/local 中)
  • proc 虚拟文件系统 ^f4c199
  • root 系统管理员目录(除 root 之外,其他用户均放置在/home 目录下)
  • run 系统运行时所需文件
  • sbin 只有 root 才能运行的管理指令
  • srv 服务启动后所需要访问的数据目录
  • sys 跟 proc 意义,虚拟文件系统
  • tmp 存放临时文件目录
  • usr 应用程序放置目录
  • var 存放系统执行过程经常改变的文件

4. 用户主目录

主目录: home directory
root 用户的主目录是 /root
其他用户的主目录是 /home/用户名

cd 空格 或者 cd ~

工作目录: working directory

5. 目录指代

  • 绝对路径
  • 相对路径
  • / 根目录
  • . 代表当前目录
  • ~ 代表用户工作目录
  • ../ 代表上一级目录
  • ../../ 上上级目录

同时执行: ;分号
查询当前目录:pwd

只有目录后面可以带着/ 如 home/


3.2 常用操作

3.2.1 命令操作

man command (manual)
whatis command
info command
help command

3.2.2 用户操作

关机
poweroff
shutdown -h now
halt

重启
reboot

3.2.3 快捷键和命令

  • Tab 补全命令和目录(自动提示)

  • 方向键 上/下一条命令

  • Ctrl+Insert 复制*(Ctrl SHift C)

  • Shift+Insert 黏贴(Ctrl+Shift+V)

  • Alt+Insert 复制并黏贴

  • Ctrl+E 光标移动到行尾

  • Ctrl+A 光标移动到行首

  • Ctrl+K 清楚光标后行至行尾的内容

  • Ctrl+U 清除光标前至行首 间的所有内容
    (EU or AK 就是全行)

  • Ctrl+R 搜索模式

  • !cd: 重复执行最近一次的命令

  • clear: 清屏(只是页面向下自动滑动)

  • history: 查看历史命令

  • history: 清除历史命令(新建会话 history 仍然可见)

彻底清除历史命令:

  • echo > ~/.bash_history (CentOS)
  • echo > ~/.zsh_history (Kali)

3.2.4 别名配置 alias

  • 查看别名: alias

  • 设置别名: vim ~/.bashrc

  • 格式: alias short=‘xxx;xxx’

  • 读取并执行命令,使之生效:source ~/.bashrc

3.2.5 通配符

符号 指代
* 任意字符
单个字符
[] 匹配范围内的,比如 [0-9] [a-z]
{} 多个以 xx 结尾的文件 {.log,.txt}
^ 取反 不是 xx 结尾的文件 *[ ^ txt]

3.2.6 环境变量

1)环境变量的作用

告诉操作系统去哪里找到用户想要的文件
“编辑系统的环境变量” “高级” 分为用户变量(单用户)和系统变量
path 路径配置可执行程序的路径

2)操作指令

  • 查看全部变量: env
  • 查看单个变量: echo $XX
  • 用户 变量: ~/.bashrc
  • 系统 变量: /etc/profile

3)设置环境变量

(以配置 JDK 为例)
vim /etc/profile

export JAVA_HOME=/user/local/soft/java/jdk1.8.0_74
export PATH= $JAVA_HOME/bin:$ PATH
export CLASSPATH=.: $JAVA_HOME/lib/dt.jar:$ JAVA_HOME/lib/tools.jar

读取并执行命令,使之生效:source /etc/profile


3.3 文件描述符和重定向

3.3.1 文件描述符

File Descriptor(系统自带的)

1)描述符

ID 描述 设备
0 标准输入 stdin 键盘 默认输入值
1 标准输出 stiout 显示器 默认输出值
2 标准错误输出 stderr 显示器

2)重定向符号

重定向:改变输入输出的方向

  1. 和>> 输出重定向

  2. &> 表示将一个流(stream)重定向到另一个文件描述符(f d)
  3. <和<< 输入重定向

为什么不问问神奇海螺呢

3)输出重定向

4)输入重定向


0x04 Linux 文件和目录管理

4.1 命令格式

https://www.linuxcool.com

4.1.1 基本格式

Command Options Arguments
命令 选项 参数

选项:命令的行为方式
参数:命令的对象

4.1.2 乐子 rm -rf /*

rm :remove 删除
-r :递归(目录和目录中的目录)
f:强制
/:根目录 *:通配符

强制删除根目录下的所有文件

4.1.3 规范

  1. 命令不能缺少
  2. 空格不可缺少
  3. 区分大小写
  4. 大部分情况不区分顺序和拆分合并

4.1.4 推荐一个命令查询网站

https://www.linuxcool.com


4.2 具体操作

4.2.1 列出目录

ls 选项 文件名
ls(list)
ls -a 显示隐藏文件
ls -t 按时间排序

4.2.2 打印工作路径

pwd (print working path)

4.2.3 切换工作路径

cd (change directory)

4.2.4 查看文件类型

file 选项 文件 or 目录

4.2.5 复制文件或陌路

cp 选项 源文件名 目标文名
-R/r 递归处理:将指定目录下的所有文件一并处理
-f 强行复制文件或目录,无论目标文件或目录是否已存在

4.2.6 查找文件或目录

find 目录 选项 名字或模式

-name 名字

find . -name a*
find /etc -name a *
find /etc -name“aaa”2>/dev/null

-type 类型参数

f 普通文件 d 目录
find /root -type f

-size 大小

find /root -tpye f -size 10M+

特殊

-exec command
把 find 找到的文件内容作为命令的参数去执行
{}就是找到的内容
find . -name “*.txt” -exec rm -rf {} \;(包括子目录)
find . -name aaa -exec mv {} bbb \;

其他

whereis:查找二进制程序、代码等相关文件路径
which:查找并显示给定命令的绝对路径
locate:updatedb 程序每天跑一次,建立文件索引

4.2.7 创建目录

命令:mkdir (make direcotry)
mkdir 选项 目录名

mkdir tset
mkdir -p /usr/local/hh (一次性创建多级目录)

4.2.8 移动或重命名

mv 选项 原文件 新文件

mv 1.txt 2.txt (重命名)
mv /a/.txt /b/2.txt (ab 为路径,移动)

4.2.9 删除文件

rm 选项 (多个)文件名

rmdir 删除空目录

-r 递归(连通子文件夹) recursive
-f 强制删除
find . -name “a.json” -exec rm -rf{}

4.2.10 创建文件

touch 选项 文件名
vi(m) 文件名


4.3 挂载和连接

4.3.1 挂载 mount

(以 U 盘挂载为例)
输入图片说明

ln 源文件 链接文件
(便于访问)

1 ) 硬链接

完全将两个文件绑定 (自动同步)

  1. 用户不能给目录创建硬链接
  2. 只能在相同文件系统下创建

2 ) 软连接

查看: ll /usr/bin/nc

创建软链接:ln -s /usr/local/phpstudy/system//phpstudyctl/usr/bin/study (需要下载好 phpstudy)

使用:study

源文件删除,软连接失效


0x05 文件压缩和解压缩

5.1 打包和压缩的区别

5.1.1 打包

把多个文件变成一个文件—减少文件个数

打包/解包 pack/unpack

  • 减少传输次数

  • 归档利于管理

5.1.2 压缩

缩小文件体积—减小文件体积

压缩/解压

compress/decompress

  • 图片:BMP GIF JPEG JPG

  • 音频:APE FLAC MP3

  • 视频:RMVB AVI MP4

压缩率:压缩后体积/压缩前体积

其他作用

添加密码

注意:打包解包、压缩解压都需要时间

用时间换空间

5.1.3 常见的压缩格式

HTTP:gzip

gzip,deflate(zlib),br(Brotli),identity(不压缩)

Windows:gzip、rar、7z

winrar,360 压缩,bandzip,7zip

Linux:gzip(tar.gz=.tgz)、bzip(.bz2)、 zip

压缩后体积: tar.bz2>tgz>tar 压缩解压时间:tar.bz2>tar>tgz


5.2 常见的压缩格式

5.2.1. HTTP:gzip

gzip,deflate(zlib),br(Brotli),identity(不压缩)

5.2.2 Windows:gzip、rar、7z

winrar,360 压缩,bandzip,7zip

5.2.3 Linux:gzip(tar.gz=.tgz)、bzip(.bz2)、 zip

压缩后体积: tar.bz2>tgz>tar 压缩解压时间:tar.bz2>tar>tgz


5.3 tar 常用选项及示例

tar: tape archive (磁带+归档) 打包的出来的是红色的.tar 文件

创建 11 个 txt 文件:touch {0..10}.txt 打包:tar -cvf test0110.tar _.txt 解包:tar -xvf test0110.tar 打包并压缩:tar -czvf test0110.tar.gz _.txt 解压: tar -xzvf test0110.tar.gz


5.4 zip 命令

5.4.1 用法示例

==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’

5.4.2 Drawing

 N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MQHNsYfpwBGAOlT0AtmIBeNCtlQbs6RmPry6uA4wC0KDDgLFLUTJ2lH8MTDHQ0YNMWHRJMRZFEIB2MiRPVRhGMBoEAG0AXXJ0KCgAZQCwPlBJfDxM7A0+Rk5MTHIdGCIAIXRUAGsCrkZcAGF6THp8BBAAYgAzEdGQAF9xoA===

0x06 查看和处理文件内容

本章针对文本文件

6.1.1 文本文件

  • ASCII、UTF-8、Unicode、ANSI
  • txt、xml、conf、properties、yml 等配置文件、日志文件、源代码
    (文本文件的二进制编码中有字符级编码使其具有可读性)

6.1.2 cat / tac

concatenate 连接
cat 文件名

6.1.3 more/less

分页查看

操作 按键
分页查看 more redis.conf
第三行开始显示 more +3 test.log
从出现 x 开始显示 more +/x test.log

分屏操作

操作 按键
下一行 Enter/箭头上下
下一行 y/箭头上
下一屏 Space 空格/Ctrl+F
上一屏 b
退出 q/ctrl + c/zz

搜索
/ [查找字符] 配合 n 键,从上往下查所有
?[查找字符] 配合 n 键,从下往上查所有
(n 表示 next)
按 Enter 后:
n 键盘查找下一个符合的内容
N 上一个符合的内容

6.1.4 head/tail

对于行数特别多的文件

head -n 10 redis.conf 查看前十行
tail -n 10 info.log 查看后十行

tail -f /var/log/messages
-f 是实时显示文件日志(监视追加内容)

6.1.5 grep

Globally search a Regular Expression and Print
全局搜索正则表达式(内容)并打印

格式:grep 选项 模式 文件名
grep choco * 在当前目录里寻找所有内容里带 choco 的文件

6.1.6 管道符号 pipe

把前一个命令原本要输出到屏幕的数据当作是最后一个命令的标准输入

command1|command2|command3

cat test.log | more -5
ps -ef | less -N

nestat -an | grep 3306
cat -n info.log | grep “debug” | more

6.1.7 wc

word count 词数统计
-l/-lines 显示行数
-w/-woeds 显示字数

wc -w choco.conf

显示文件数
ls -l | wc -l (按行显示文件名再看有几行哈哈)

6.1.8 diff

different
对比文件的不同

diff A.txt B.txt
diff -r aaa bbb

windows 的
文件(目录)对比:beyond compare、ultraCompare


0x07 Linux 文本编辑器

文本编辑器

  • windows:
    notepad、sublime、ultraEdit
  • Linux:
    VI/VIM、nano、Emacs、Sed、Gedit、Kate

VI、VIM 字符界面文本编辑
是之后学习使用的重点工具

7.1 Vi 和 Vim 的区别

  • vi:visual interface
  • 1976 BillJoy(ex)
  • 1991 Bram Moolenaar
  • Vim: VI IMproved(兼容 VI 的大部分功能)

7.2 VIM 的配置文件

1)

man vim 查看可操作命令

大部分 vim + 文件名

2)查看详细参数

全局配置: /etc/vimrc
用户配置: ~/.vimrc

详细配置参考:https://blog.csdn.net/xiao_yi_xiao/article/details/118491698

7.3 VIm 的三种模式

  • 命令模式:通过命令操作文本文件
  • 编辑模式:对文本的内容进行编辑
  • 底行模式:结束操作的时候使用

1)示例

vi 文件名
//命令模式// 输入 i a o
//编辑模式// Esc
//命令模式// :
//底行模式// 命令回车结束
//命令模式// :wq 退出

2)命令模式

vim 文件名 进入命令模式
若存在临时文件 需要处理(保存或者删除)之后才能对原文件进行操作

1.移动光标的操作

.
set nu 标记行号(nu/numble)

2.搜索替换操作

3.删除和复制的操作

3)编辑模式

命令模式中,按

  • a: 在光标下一个字符前插入文本
  • A: 在光标所在的行模插入文本
  • i: 在当前光标插入文本(常用)
  • I: 在光标的行首插入文本
  • o: 在光标所在的行下插入文本
  • O: 在光标所在的行上插入文本
  • r: 修改当前的光标所在的字符
  • R: 替换文本

撤销: Ctrl + U

退出编辑模式: Esc

4)底行模式

冒号:后面没有空格(笔记字体看上去会有空格)

1. 进入底行模式模式

Shift + :
:w 保存
:q 退出
:wq 保存并且退出
:q! 放弃修改,退出
:e! 放弃所有修改,退出

显示行号
:set nu

注意这里已经利用
sudo vim /etc/vimrc 在配置文件里面加入了 set number
以后看文本文件自动显示行号了 不需要手动开启

:%


0x08 Linux 安装软件

8.1 软件为什么需要安装

8.1.1 windows 软件安装

  1. 安装检查
  2. 释放文件
  3. 复制可执行文件
  4. DLL 动态链接库/安装服务
  5. 注册表
  6. 开始菜单和快捷方式

“绿色软件”对环境配置要求低,可以直接用 exe 运行

8.1.2 Linux 可执行程序

/bin
/sbin
/usr/bin
/usr/sbin
(有可执行权限就可以执行,不需要后缀,操作系统通过文件头来识别文件)


8.2 脚本和程序的区别

不需要编译的:javascipt、python、ruby(跨平台特性)
需要编译的:C、C++、Swift、Kotlin、Go..

解释型:边解释边执行
编译型:(编译成二进制文件)计算机可以直接执行


8.3 Linux 安装软件得到几种方式

8.3.1 方式总览

源码编译 make、
rpm、deb、yum、apt、Docker

8.3.2 主要派系

主要派系 Linux 发行版 主要安装方式
Redhat Redhat、CentOS、Fedora 等 make、rpm、yum、dnf
Debian Kali、Ubuntu deb、apt、dpkg
FreeBSD FreeBSD make、pkg、ports

8.3.3 源码编译

源码已经安装:(干什么的?我不到啊)
源码安装redis


8.3.4 rpm 安装

PedHat Package Manager
不需要手动编译了
文件尾缀.rpm

操作 命令 说明
查询 rpm -qa;rpm -q 包名 q query
安装 rpm -ivh 包名 install verbose hash
升级 rpm -Uvh 包名 U 安装或升级版本
卸载 rpm -e 包名 需要先卸载依赖其的软件

注意:rpm 安装存在软件之间的相互依赖关系,不方便用户使用

8.3.5 yum 安装

Yellow Dog Updater, Modified

1. 命令

2. DNF 和 YUM

2013 年 yum 作者因车祸去世后,yyum 停止更新,推出 dnf 代替 yum (danadified YUM)

3. yum 安装

MYSQl 服务器
物理机安装 navicat


8.3.6 Debian 系

  • Deb 包安装
  • apt 安装(自动安装 )
操作 命令
搜索 apt search
安装 apt install
升级 apt update
卸载 apt remove

8.3.7 FreeBSD 系

  • package
  • ports
操作 命令
搜索 pkg search
安装 pkg install
升级 pkg upgrade
卸载 pkg del

8.4 软件版本管理

update-alternatives

  1. 查看:
    update-alternatives

  2. 添加:
    alternatives –install /usr/bin/java java/usr/local/jdk-11.0.2/
    bin/java 3

/usr/bin/java 注册地址,软链
java(第二个 java) 服务器名
/usr/local/jdk-11.0.2/bin/java 实际程序路径
3 优先级

  1. 切换
    update-alternatives –config java
    然后选择版本对应的数字就可以了

0x09 用户和权限管理

9 .1 用户和用户组

9.1.1 用户组

Group 部门分组
一个用户必须属于至少一个组(主要组)

1)组 ID-Group (GID)

  1. root 用户组:GID=0
  2. 程序用户组(系统用户组):1-999(CentOS7)
  3. 普通用户组:1000-65535 (用户自定义产生的用户)

2)用户组相关命令

查看全部组: cat /etc/group
查看用户所属组: groups
添加用户组: groupadd xx
删除用户组: groupdel xx

9.1.2 用户

1)用户 ID-User (UID)

  1. root 用户:UID=0
  2. 程序用户(系统用户):1-999(CentOS)
  3. 普通用户:1000-65535

2)用户相关命令

查看所有用户: cat /etc/passwd
添加用户: useradd ..
删除用户: userwd ..
修改用户信息: usermod ..


9.2 用户管理相关文件

9.2.1 group 文件格式

在/etc/group 中 文件名称顺序意义依次为

  1. 组名
  2. 组密码(! 表示不使用密码)
  3. GID
  4. 用户列
    (x 表示影子文件:cat /etc/gshadow )

9.2.3 passwd 文件格式

在/etc/passwd 中

  1. 用户名
  2. 密码
  3. UID
  4. GID
  5. 全名
  6. home 路径
  7. 调用的 shell 解释工具
    影子文件(密码存放): cat /etc/shadow

9.2.4 shadow 文件格式

在/etc/group/中

  1. 用户名
  2. 密码
  3. 最后修改时间(1970.1.1 日后多少天)
  4. (使用 date -d “1970-01-01 < number >”翻译成日期)
  5. 最小修改间隔时间
  6. 密码有效期
  7. 密码需要变更前的警告天数
  8. 密码过期后的宽限天数
  9. 账号失效时间
  10. 保留

密码格式

命令: openssl passwd -1 salt admin 123456
格式: $ id $ salt $ encrypted

示例: $ 1 $ admin $ LCLIYcRe.ee8dQwgrFc5nz
passwd -1 -salt choco(盐) 123456

id 数字 加密方式
1 MD5
2a Blowfish
5 SHA-256
6 SHA-512

9.2.4 sudoers 文件格式

在/etc/sudoers/文件中
把某项原本 root 用户的权限授权给普通用户执行
格式:
choco ALL = (ALL)ALL
kali ALL = (ALL)NOPASSWD: /bin/useradd
(visudo 打开配置文件并写入,其他路径访问只能读 不能写哈)

全拼:
super user do
sudo -I
sudo command (需要执行的命令)


9.3 用户管理基本命令

9.3.1 基础操作

操作 命令
查询用户账号身份标识 id
查询用户账号的登陆属性 finger
查询当前主机的用户登录情况 w、who
查看用户 whoami
切换用户 su

查询用户账号身份标志

9.3.2 用户和文件的关系(LL 查看)

文件所有者: 所属文用户、所属组
访问权限:读、写、执行

文件的拥有者/文件的所属者 change owner
chown -R wuya /usr/local/soft
chown -R redis:redis /usr/local/soft/redis


9.4 文件和目录权限

9.4.1 文件类型

  1. 首位:
    d: 目录文件(文件夹) -: 软连接
    l: 块设备文件(硬盘、光驱)
    p: 管道文件
    c: 字符设备文件(屏幕等串口文件)
    s: 套接口文

后面三段 rwx rwx r-x
r 可读 4 w 可写可移动 2 x 可执行 1(可以进入文件) -无权限 0
根据三个数字相加的和 可以反推权限情况(775…)

  1. 所属用户的权限 u user
  2. 所属组用户的权限 g group
  3. 其他用户的权限 o other

9.4.2 修改权限

输入图片说明


0x10 Linux 网络管理

10.1 网络基本概念

  1. 网卡(无线,有线,虚拟网卡)

  2. MAC 地址(Media Access Control) 媒体访问地址(和网卡绑定的 ·物理地址)

  3. IP(Internet Protocal Address)互联网协议地址(可修改的动态的 ·逻辑地址)
    192.168.142.132(某内网)
    47.106.11.166(某外网)

  4. NAT(NerWork Address Translation 网络地址转换)
    共享公有 IP 地址
    输入图片说明

  5. IPv4 IPv6

    IPv4(Internet Protocol version 4)是当前广泛使用的互联网协议版本之一。下面是关于 IPv4 的一些基本信息:
    1.IPv4 地址格式:
    IPv4 地址由 32 位二进制数组成,通常以点分十进制表示(例如,192.168.0.1)。
    IPv4 地址被分为网络部分和主机部分,用于标识网络和主机设备。
    2.IPv4 地址范围:
    IPv4 地址总共有约 42 亿个。然而,由于地址耗尽的问题,这一数量已经趋近枯竭。
    IPv4 地址被分为不同的地址类别,包括 A、B、C、D 和 E 类。其中 A、B 和 C 类地址用于对外连接的网络,而 D 类地址用于多播,E 类地址保留未使用。
    3.IPv4 的局限性:
    地址耗尽:由于 IPv4 地址数量有限,随着互联网的迅速发展,公共可用的 IPv4 地址已趋于枯竭。为解决这个问题,IPv6 协议被引入,提供了更大的地址空间。
    NAT(Network Address Translation):为了应对 IPv4 地址短缺,NAT 技术被广泛应用,允许多个设备共享单个公共 IPv4 地址。这使得内部网络的 IPv4 地址可以与公共互联网上的其他设备通信。
    总结来说,IPv4 是互联网上目前仍然广泛使用的协议版本,但由于地址数量有限和枯竭的问题,逐渐被 IPv6 取代。为了满足不断增长的互联网需求,逐步过渡到 IPv6 已经成为一个重要的发展趋势。

IPv6(Internet Protocol version 6)是下一代互联网协议,旨在解决 IPv4 地址不足的问题。下面是关于 IPv6 的一些基本信息:
1.IPv6 地址格式:
IPv6 地址由 128 位二进制数组成,通常以冒号分隔的十六进制表示(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
IPv6 地址相对于 IPv4 地址具有更大的地址空间,可以提供约 340 万亿亿亿亿个地址。 2.主要特点:
大量地址空间:IPv6 的主要目标之一是提供庞大的地址空间,以满足未来互联网中设备的需求。
简化的地址分配:IPv6 引入了自动地址配置和简化的网络配置,使得设备获得 IPv6 地址更加便捷。
改进的安全性:IPv6 包含一些内建的安全特性,如 IPSec(Internet Protocol Security),通过对数据进行加密和认证提供更好的网络安全。 3.兼容性与过渡:
IPv6 与 IPv4 并存:为了实现平稳过渡,IPv6 被设计为与 IPv4 共存的协议。这样可以使得 IPv6 和 IPv4 设备可以在同一个网络中进行通信。
双协议栈支持:许多操作系统和网络设备支持双协议栈,即同时支持 IPv4 和 IPv6。这样可以逐步过渡到 IPv6,并保持与 IPv4 设备的互通性。 4.推广与采用:
IPv6 的全面采用是一个渐进的过程。尽管已经有一些国家和组织在推动 IPv6 的使用,但在全球范围内,IPv6 的普及仍需时间。
IPv6 的推广涉及到互联网服务提供商、网络设备制造商、软件开发者等各个领域的努力和支持。
总结来说,IPv6 是下一代因特网协议,拥有更大的地址空间和更好的安全性。它被设计为逐渐取代 IPv4,以满足未来互联网中的设备增长和需求。虽然 IPv6 的采用进程需要时间和努力,但它将为互联网的可持续发展提供基础支持。

  1. 动态 IP,静态 IP
    DCHP 动态 Dynamic Host Configuration Protocol
    Static 静态

  2. 127.0.0.1
    回环地址 loop back
    可以 ping 通表示网卡安装正常

  3. 端口 poort
    作用:区分程序
    范围:0-65535
    系统端口:0-10223
    用户端口:1204-49151
    动态端口:49152-65535

  4. 域名 Domain Name
    作用:替代 IP,方便识记
    域名如何转换成 IP:Domian Name System-DNS
    域名和 IP 的数量关系:多对一
    特殊域名:localhost 指向 127.0.0.1

  5. 网络配置文件

文件 作用
/etc/sysconfig/network-scripts/ifcfg-ens33 网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-lo 回环地址配置文件
/etc/hosts 主机名与 IP 的映射
/etc/resolv.conf DNS 配置,由 ens33 自动覆盖
  1. ifconfig(现在 ip 可以向下兼容 ifconfig)
    network InterFaces CONFIGuring
    位于 nei-tools 工具包
    可以动态配置网络参数

10.2 连通性探测

  1. ping
    Packet Internet Groper,因特网包探索器
    ping + 域名/ip

  2. telnet (一直明文传输的协议,现在不怎么用了)
    远程登录 telnet bbs.newsmth.net
    探测端口 talnet 192.168.142.132 80

10.3 查看网络连接

  1. ss (netstat)
    network statistics
    查看程序的网络连接情况:netstat -ap | grep ssh
    查看端口的网络连接情况:netstat -ap | grep 3306
    端口很多默认对应了某些 TCP/UDP,可以查表得知

域名相关

  1. nslookup
    nsloolup baidu.com
    A 记录:IP 地址
    CNAME:域名别名
    MX:邮件服务器

  2. dig(domain information groper)
    dig baidu.com
    dig www.xtu.edu.cn A + noall + answer
    dig www.xtu.edu.cn NS + noall + answer
    dig www.xtu.edu.cn MX + noall + answer

  3. host
    host baidu.com
    host -t MX www.baidu.com

10.4 下载传输

常规方式

Xshell 拖曳 ——上传
xftp ——双向传输,或者 Filezilla FlashFTP
sz file name ——下载
rz 上传 ——上传
vmtools 拖动 ——传入
QQ ——双向传输

wget

(redis 已经下载好了)
wget https://download.redis.io/releass/redis-6.0.9.tar.gzwget -O redis.targz https://downloadredis.io/releases/redis-6.0.9.tar.gz
wget -c 断点续传
wget -b 后台下载
wget -i filelist.txt 同时下载多个 tail -f wget-log 查看下载进度

scp

(Secure Copy)
scp 1.txt root@192.168.142.66 :/tmp
scp -r folder root@192.168.142.66 :/tmp

curl

(Client URL)
curl https.//www.baidu.com > page.html
curl -X POST -da=1&b=nihao’ URL
curl -H “Content-Type: application/json” -X POST -d [“abc”:123,”bcd”.”nihao”}’ URL

10.5 防火墙 Firewall 设置

iptables 工具

查看已开放的端口 firewall-cmd –list-ports
开启 80 端口 firewall-cmd –zone=public –add-port=80/tcp –permanent
开启防火墙 systemctl start firewalld
重启防火墙 firewall-cmd –reload
停止防火墙 systemctl stop firewalld.service
禁止防火墙开机启动 systemctl disable firewalld.service
删除规则 firewall-cmd –zone=public –remove-port=80/tcp –permanent


0x11 系统状态管理

11.1 查看系统信息

11.1.1 日期时间

date 日期
cal 日历
uptime 运行时间

11.1.2 系统版本

cat /etc/redhat-release 使用的发行版本
uname -a 显示内核版本
cat /proc/version


11.2 进程管理

11.2.1 程序、进程

  1. 程序 program 静态的
  2. 进程 process 动态的
  3. 服务 service 有没有在系统中注册
    systemctl list-unit-file | grep mysql
    cat /etc/services | grep mysql

11.2.2 运行程序

前台运行 ./xxx
后台运行 nohup ./xxx &

11.2.3 查看进程

1)top 命令

2)ps 命令

process status
常用:-aux -ef
-a 显示所有进程,包括其他用户的进程
-u 选择有效的用户 id 或者是用户名
-x 显示没有控制终端的进程,同时显示各个命令的具体路径
-e 显示所有的进程,和 -A 的效果一样:
-f 显示更完整;通常与 -e 一起用

3)pstree

一个进程下面会有子进程,单独关闭子进程会被母进程重新自动打开(体现为无法真正关闭)
pstree -p
pstree mysql
pstree -p | grep ssh

11.2.4 服务管理

1)systemctl 命令

systemctl status *.service 查看所有服务状态
systemctl start mysqld.service 启动服务
systemctl restart mysqld.servicesystemctl stop 重启服务
mysqld.servicesystemctl enable 开机启动服务
mysgld.servicesystemctl disable mysqld.service 停止开机启动

2)停止程序

kill -9 +进程号
强制关闭


11.3 内存使用情况

free

显示内存使用情况
free -h (带单位显示,可读)
free -m(全部应用 M 字节单位)

11.4 磁盘使用情况

du

disk usage

11.5 定时任务

工具:crontab

11.5.1 cron table

表达式:参考 https://tool.lu/crontab

crontab -u root -r 删除任务 remove
crontab-u root time.cron 把文件添加到某个用户的任务
crontab -u root -l 列举任务 list
crontab -u root -e 编辑任务 edit

11.5.2 定时文件任务

/etc/crontab 管理文件
/var/spool/cron/ 每个用户包括 root 的 crontab 任务
/etc/cron.d 存放任何要执行的 crontab 文件.脚本