环境
- WSL1 : 不是真正的Linux系统,只是把Linux命令翻译为Windows能理解执行的命令,只是"模拟Linux的环境"
- WSL2(Windows System for Linux 2) : WSL2 的 Linux 内核是原生的、功能几乎完整的,但它的运行载体是 Windows 的轻量虚拟化层,并非独立的硬件环境
- CMD : Windows中基础的命令行工具
- PowerShell : Windows中比CMD更加强大的命令行工具
- Windows Terminal : 终端模拟器,能同时运行多个终端设备
Linux命令怎么被执行
- 1 预处理 : 解析 去重 替换
- 2 判断类型 : Shell会通过type命令的逻辑,判断是内置命令/外部命令/函数
内置命令 : Shell自身集成的命令,无需查找,直接执行
外部命令 : 由独立的可执行文件
函数 : 用户自定义的Shell函数,直接执行 - 3 查找可执行文件(仅外部命令需要) : Shell在PATH环境变量记录的路径中顺序查找,找到与命令名一致的二进制可执行文件(找到一个就停止)
- 4 创建子进程,执行命令 : Shell本身是一个用户态进程,不会直接执行命令,而是通过内核系统调用创建子进程,让子进程执行命令
外部命令:fork创建子进程后,通过exec系统调用,将子进程的程序替换为步骤 4 找到的二进制可执行文件,由子进程执行该文件,内核负责调度 CPU / 内存 / 磁盘等资源完成实际操
内置命令:无需创建子进程,由 Shell 进程自身直接执行(因为内置命令是 Shell 的一部分,无独立可执行文件,创建子进程无意义) - 5 返回执行结果,回收子进程(外部命令)
总结 : 终端是界面,Shell是命令解释器,内核是实际执行者
命令执行的核心 : Shell先预处理和判断命令类型,内置命令自身直接执行,外部命令在$PATH中查找可执行文件后创建子进程,最终由内核调度资源完成操作,结果返回到终端
子网掩码
子网掩码的作用就是<确定一个IP的网络位 和主机位 >
网络位一样代表在同一个网段(若两个IP的网络位相同,不需要网关,直接通信,否则需要把数据先发送给网关)
主机位用来表示一个网段中的不同主机
apt(advanced package tool)
- apt update # 刷新本地软件包索引数据库,同步镜像源的最新软件信息(可装包,新版本,依赖关系),仅仅是更新索引,不下载,不安装,不升级
- apt install 包名 # 从镜像源下载并安装指定软件包,自动下载软件包本体+所有依赖包,并自动解决依赖问题
- apt remove 包名 # 仅仅删除软件包本体,保留所有配置文件
- apt purge 包名 # 删除软件包本体+所有配置文件
- apt autoremove # 清除无用的依赖包
- apt upgrade # 将系统中所有已经安装的软件包,更新到本地索引中记录的最新版本
- apt search 关键词 # 在本地软件包索引中,搜索所有可安装的软件包
- apt show 包名 # 查看指定软件包的下详细信息
- apt list --installed # 列出系统中所有已经安装的软件包
- apt install --only-upgrade 包名 # 更新系统中单个软件包
apt install 包名 的执行过程
- apt 首先解析命令的包名,检查本地索引数据库中是否存在该包的记录
- 全自动解析依赖关系
- 生成安装列表,弹出用户确认提示
- 从镜像源下载所有待安装包
- 校验包的完整性和安全性
- 调用dpkg更具执行实际安装
- 执行软件包的配置脚本
- 清理临时文件,返回安装结果
which whereis type 命令
- type命令查找命令的类型,别名/内置/外置命令
- which查找命令的可执行文件(只取第一个)
- whereis查找命令的所有关联文件(所有可执行文件,帮助手册文件,源码文件)
lsattr chattr
lsattr file01.txt
chattr +a file01.txt
top
系统资源监控
bash
# -p PID # 只显示PID的进程信息
# -d 时间 # 设置刷新时间