shell简介&&终端
1825 字
9 分钟
shell简介&&终端

shell简介&&终端
[TOC]
编译器
- 工作方式:一次性将整个源代码翻译成目标代码,生成可执行文件
- 执行过程:
编写源代码(如
.c文件) 编译器将其编译为机器码(如 .exe 或 .out 文件) 运行生成的可执行文件
解释器
-
工作方式:逐行读取源代码,边解释边执行,不生成独立的可执行文件
-
执行过程:
- 编写源代码(如
.py文件) - 解释器逐行读取并立即执行
Shell 是一个命令语言解释器
- 编写源代码(如
什么是 Shell?
Shell 是操作系统提供给用户的一个 命令行界面(CLI) ,它允许用户通过输入文本命令与操作系统内核进行交互
Shell 如何工作?
- 用户在终端中输入命令(如
ls -l、echo "Hello"或运行脚本) - Shell 接收这些命令
- 它逐行解析(解释)这些命令:
- 如果是内置命令(如
cd、export),Shell 直接执行 - 如果是外部程序(如
ls、grep),Shell 调用操作系统启动对应程序 - 如果是 Shell 脚本(
.sh文件),Shell 会逐行读取并解释执行其中的语句
- 如果是内置命令(如
- 输出结果返回给用户
这个过程 没有编译步骤 ,完全是“边读边执行”,符合解释器的典型特征
💡 Shell 是用户与操作系统服务之间的接口
数据流向:
用户命令 → Shell解析 → 系统调用(操作系统) → 内核处理 → 硬件执行 → 结果返回图解

这张图展示了计算机系统的经典分层架构,各部分关系如下:
- 硬件 (Hardware) 🟦
- 位置:最底层
- 作用:物理基础(CPU、内存、磁盘等)
- 关系:只与内核直接对话,不直接接受用户指令
- 内核 (Kernel) 🟥
- 位置:操作系统的核心,位于硬件之上
- 作用:管理硬件资源(进程调度、内存管理、驱动)
- 关系:直接控制硬件,通过 系统调用 为上层提供服务
- 操作系统 (Operating System) 🟩
- 位置:包裹着内核
- 作用:包含内核 + 系统库 + 系统工具
- 关系:为 Shell 和软件提供运行环境,内核是操作系统的心脏
- Shell 🟧
- 位置:用户空间,运行在操作系统之上
- 作用:命令行解释器 ,用户的“翻译官”
- 关系:接收用户命令,转化为系统调用请求内核执行
- 软件 (Software/App) 🟪
- 位置:用户空间
- 作用:完成具体任务(如浏览器、编辑器)
- 关系:与 Shell 平级,同样通过系统库请求内核资源
- 用户 (User) ⚪
- 位置:最顶层
- 关系:通过 Shell 或 图形软件 与系统交互
Note
💡 重点
- 隔离性:用户和软件不能直接操作硬件,必须通过 内核
- Shell 的本质:Shell 也是一个 软件(进程),但它是用户与内核交互的接口
- 系统调用:Shell 和 软件 请求内核服务的唯一合法途径是通过 系统库 (System Libraries) 发起系统调用
终端简介

- 多用户、多任务
- 不管哪个终端切进去,操作的都是这一个系统、互不影响
==终端大致分为三种:==
物理终端
指的是 真实存在的、具有硬件实体的终端设备
- 直接通过
硬件进行连接!
root@rocky10:~# ls /dev/console/dev/console# 我们之前网络课,通过console线连接终端!虚拟终端(TTY)
- 指的是 Linux 内核提供的本地多用户文本界面
- 通过 Ctrl+Alt+F1 到 Ctrl+Alt+F6(或更多)切换


-
直接在
VMware上面敲即可! -
这些终端直接由内核管理,与物理显示器和键盘绑定
-
对应设备文件如 /dev/tty1、/dev/tty2 等
root@rocky10:~# ls /dev/tty*/dev/tty /dev/tty16 /dev/tty24 /dev/tty32 /dev/tty40 /dev/tty49 /dev/tty57 /dev/tty8 ....| 快捷键 | 终端编号 (TTY) | 设备文件路径 | 典型默认用途 |
|---|---|---|---|
| Ctrl+Alt+F1 | TTY1 | /dev/tty1 | 文本终端 / 图形界面 |
| Ctrl+Alt+F2 | TTY2 | /dev/tty2 | 文本终端 / 图形界面 |
| Ctrl+Alt+F3 | TTY3 | /dev/tty3 | 纯文本终端 |
Note
如果一个终端的程序卡死,可以切换到其他虚拟终端tty,强制结束对应的进程
Debug Shell
Debug Shell 是一个用于故障排查和系统调试的特殊功能,通常在系统启动过程中出现问题(如无法正常挂载根文件系统)时启用,允许管理员检查硬件、文件系统、内核参数等
RHEL 默认并不会启用 Debug Shell,也不会自动将 Ctrl+Alt+F9 绑定到该 shellroot@rocky10:~# systemctl is-active debug-shell.serviceinactive# 不是活跃的,默认关闭!root@rocky10:~# systemctl start debug-shell.service# 启动激活后,Debug Shell 通常出现在 tty9(Ctrl+Alt+F9)# 调试完成后,应及时关闭服务root@rocky10:~# systemctl stop debug-shell.service
伪终端(PTY)
-
是一种 软件模拟的终端设备
-
用于支持 终端模拟器(如 Xhell)、远程登录(如 SSH)等场景
-
完全虚拟,无硬件依赖
-
设备文件通常位于
/dev/pts/目录下
root@rocky10:~# ls /dev/pts/*/dev/pts/0 /dev/pts/ptmxwho命令
# Xshell远程登陆rocky_linux后:# 在rockylinux 验证:root@rocky10:~# whoroot pts/0 2026-03-03 08:00 (10.0.0.1)# 这个是我们Xshell的伪终端(看IP)# pts/0 远程第一个用户root seat0 2026-03-03 14:24 (login screen)# 这个是我们的屏幕,桌面root tty2 2026-03-03 14:24 (tty2)# 这个是我们虚拟终端,桌面里面打开的终端
'tty终端是本地登录, pts是远程连接'# 其中的“登录时间”指的是本次会话的登录时间w命令

1.也可以用来查看负载 w的第一行等于uptime命令2.查询谁登陆了系统,并且正在干啥
root@rocky10:~# w 16:02:37 up 8:02, 3 users, load average: 0.00, 0.00, 0.00USER TTY LOGIN@ IDLE JCPU PCPU WHATroot 08:00 48:42 0.00s 0.01s sshd-session: root [priv]root 08:00 48:42 0.00s 0.64s /usr/lib/systemd/systemd --userroot tty2 14:24 8:02m 0.02s 0.02s /usr/libexec/gnome-session-binarytty
root@rocky10:~# tty/dev/pts/1# 虚拟终端中查看
root@rocky10:~# tty/dev/pts/0# Xshell中查看,伪终端终端对比
| 对比维度 | **物理终端 ** | 虚拟终端 (TTY) | 伪终端 (PTY) |
|---|---|---|---|
| 英文缩写 | /dev/tty (硬件) | /dev/ttyN | /dev/pts/N |
| 核心定义 | 直接连接计算机的物理设备(键盘+显示器) | 内核提供的本地多用户文本界面,共享同一物理设备 | 是一种 软件模拟的终端设备,模拟终端行为 |
| 设备文件 | /dev/tty0 | /dev/tty1 ~ /dev/tty63 | /dev/pts/0,1,2... |
| 典型设备名 | tty0 (控制台映射) | tty1, tty2, tty3… | pts/0, pts/1, pts/2… |
| 是否依赖硬件 | ✅ 强依赖(物理串口/控制台) | ⚠️ 部分依赖(需物理屏幕输出) | ❌ 不依赖(纯软件模拟) |
| 典型使用场景 | • 服务器本地维护口 (Serial Console) • 嵌入式设备 UART 调试 • 物理机房直连操作 | • Ctrl+Alt+F1~F6 切换多文本终端 • 图形界面崩溃时的救援通道 • 无图形环境的多任务隔离 | • SSH 远程登录 (sshd) • 图形界面终端模拟器 (Xshell) • 自动化测试/脚本控制 |
Important
📌 记忆口诀:
-
物理终端 = 硬件直连 虚拟终端 = 内核分身 伪终端 = 软件模拟
-
现代 Linux 日常交互(SSH/图形终端)99% 使用的是 伪终端 (PTY)
命令参考
| 目的 | 命令 | 说明 |
|---|---|---|
| 查看当前终端类型 | tty | 输出如 /dev/pts/0 (伪终端) 或 /dev/tty2 (虚拟终端) |
| 查看终端设备详情 | ls -l /dev/tty* /dev/pts/* | 列出所有终端设备文件 |
| 查看登录会话 | who 或 w | 显示用户登录的终端类型 (tty/pts) |
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
函数与数组
Shell脚本Shell函数定义与数组操作,涵盖局部/全局变量、递归函数及数组遍历
2
循环与case多分支
Shell脚本Shell循环结构与case多分支语句,涵盖for/while/until循环及实战脚本
3
数值运算与if条件判断
Shell脚本Shell数值运算方法与if条件判断结构,涵盖整数/字符串比较及文件测试
4
Shell编程基础
Shell脚本Shell脚本基础入门,涵盖变量、引号规则、条件测试及脚本调试方法
5
Ansible Docker 动态清单
Ansible自动化讲解Ansible与Docker集成及动态清单机制,涵盖容器化部署与inventory动态管理
随机文章随机推荐



