Console-terminal-tty-shell-kernel
Console-terminal-tty-shell-kernel
1. 先看图表
1.1 简表
1.2 shell与内核的示意图
1.3 Console-terminal-tty-shell-kernel示意图
2. console控制台有2类
3. console及terminal操作
3.1 切换控制台
3.2 查看有那些用户登录,分别占用了那些tty*?
3.3 发送文字到其他控制台终端
3.4 查看当前控制台终端
3.5 关闭一个虚拟终端
4. shell是运行在tty之上的命令行解释器。
4.1 查看可用shell
4.2 查看系统默认的shell
4.3 查找用户的默认shell
4.4 查看当前使用的shell
5. 小节
6. Q&A
6.1 还没看懂? 返回第一页重新看一边。
6.2 还没看懂? 写的太简单了,请看如下更详细的解释:
6.3 上文如有错误,还请不吝赐教,在评论区帮忙指正。
Linux世界,如何理解这几个关键字: Console, terminal, tty, shell, kernel???
console和terminal在功能上没什么区别。
tty和terminal是同义词。
shell是内核kernel的外壳。
Huh?
1. 先看图表
1.1 简表
|
关键字
|
中文
|
文件
|
描述
|
简单说是
|
| console | 控制台 | /dev/console | 物理控制台,(显示器,键盘) | 硬件设备 |
| ctrl + alt [F2,F7] 切换 | 支持独立登录会话的虚拟控制台 | 虚拟终端 | ||
| terminal | 终端 | /dev/pts/* /dev/tty* |
文本输入/输出会话 | 会话session |
| tty | TTY | 特殊类型的设备文件, | 伪设备 | |
| shell | 外壳 | /bin/bash | 命令行解释器, | 程序 |
| Kernel | 内核 | /boot/vmlinuz* | Linux操作系统内核 | 内核 |
1.2 shell与内核的示意图

古老的单用户单任务系统,大概就这个结构。
1.3 Console-terminal-tty-shell-kernel示意图
现代的系统都是多用户,多任务,图形界面的复杂结构,就需要多个控制台,多个终端同时登录。
如上示意图,假设了4个用户同时登录,2个本机用户,2个远程用户
| 地点 | 界面 | 用户 | console | terminal > tty | shell |
| 本机 | GUI | User01 | 本机GUI | tty7 (/dev/pts/0,1,2…) | /bin/sh;/bin/bash… |
| 本机 | ctl | User02 | 本机ctl | tty2 (ctrl + alt [F2|F7]切换) | /bin/sh |
| 远程 | ctl | User03 | ssh | tty3 | /usr//bin/fish |
| 远程 | ctl | User04 | ssh | tty4 | /usr//bin/zsh |
2. console控制台有2类
console,控制台(/dev/console),有2类,
- 物理控制台: (比如键盘,显示器);也叫物理终端
- 虚拟控制台: 每个控制台都支持独立的登录会话
3. console及terminal操作
3.1 切换控制台
Ctrl + Alt + [F2...F7]
查看当前用户:
$ whoami
toma
3.2 查看有那些用户登录,分别占用了那些tty*?
$ who
toma tty7 2019-07-20 20:20 (:0)
root tty2 2019-07-25 23:22
$ w
23:22:26 up 5 days, 3:02, 2 users, load average: 0.48, 0.84, 1.14
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
toma tty7 Sat20 5days 5:49m 0.01s /bin/sh /etc/xdg/xfce4/xinitrc
root tty2 23:22 18.00s 1.46s 1.31s cmatrix
注: tty7是当前用户登录的xfce4图像界面,其他是通过(Ctrl + Alt [F2])登录的命令行界面。
3.3 发送文字到其他控制台终端
$ echo "hello" > /dev/tty2
3.4 查看当前控制台终端
Ctrl + Alt [F2] 切换到tty2,查看当前控制台终端
$ tty
/dev/tty2
Ctrl + Alt [F7] 切换到tty7,查看当前控制台终端
$ tty
/dev/pts/0
注: 这个tty不是直接在tty7的sh上运行的,是在tty7之上的图形界面之上,通过xfce4-terminal软件建立的虚拟终端会话。
多开一个xfce4-terminal软件界面,就多出一个这样的会话。
$ tty
/dev/pts/1
3.5 关闭一个虚拟终端
$ ls /dev/pts/
0 1 2 ptmx
exit退出或关掉任意一个xfce4-terminal界面,这里也会少一个文件。
至于tty2,需要切换到tty2,再exit退出。
4. shell是运行在tty之上的命令行解释器。
4.1 查看可用shell
$ chsh -l
/bin/sh
/bin/bash
/usr/bin/git-shell
/usr/bin/fish
$ cat /etc/shells
# Pathnames of valid login shells.
# See shells(5) for details.
/bin/sh
/bin/bash
/usr/bin/git-shell
/usr/bin/fish
4.2 查看系统默认的shell
$ echo $SHELL
/usr/bin/fish
通过环境变量
$ env | grep SHELL
SHELL=/usr/bin/fish
4.3 查找用户的默认shell
$ cat /etc/passwd | grep toma
toma:x:1001:985::/home/toma:/usr/bin/fish
4.4 查看当前使用的shell
$ ps
PID TTY TIME CMD
17333 pts/0 00:00:00 fish
28228 pts/0 00:00:00 ps
$ bash
$ ps
PID TTY TIME CMD
17333 pts/0 00:00:00 fish
28235 pts/0 00:00:00 bash
28241 pts/0 00:00:00 ps
// bash 可用如下方式,其他sh不一定有效。
$ ps -p $$
PID TTY TIME CMD
28235 pts/0 00:00:00 bash
$ echo $0
bash
5. 小节
console主要指物理终端,硬件设备键盘等;terminal提供文本输入的会话,/dev/下的体现都是字符类设备文件。
GUI下创建虚拟终端terminal会话的程序比如:/usr/bin/xfce4-terminal。
terminal = tty 是文本输入/输出的会话。
terminal 是统称概念,每个terminal都有具体的tty编号对应,且在/dev/下以字符文件形式存在。
shell是运行在tty之上的程序。内核的外壳,用户的命令提示符。比如bash,zsh,fish等。
shell通过控制tty与用户交互,并向用户提供启动其他程序的方式。
6. Q&A
6.1 还没看懂? 返回第一页重新看一边。
6.2 还没看懂? 写的太简单了,请看如下更详细的解释:
What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?
https://unix.stackexchange.com/questions/4126/what-is-the-exact-difference-between-a-terminal-a-shell-a-tty-and-a-con
https://www.zhihu.com/question/21711307
The TTY demystified 解密TTY
http://www.linusakesson.net/programming/tty/
中文翻译:https://www.cnblogs.com/liqiuhao/p/9031803.html
还有疑问?console, terminal, tty的概念模糊不清,其实问题不大,这有历史的原因。
普通用户只要知道命令在终端里输入,其实是终端的shell里输入。打开终端就会运行默认的shell。会用基本的shell命令即可。
6.3 上文如有错误,还请不吝赐教,在评论区帮忙指正。
Console-terminal-tty-shell-kernel的更多相关文章
- terminal(终端),shell,tty,console(控制台)区别
原文地址 stackexchange:What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'con ...
- 命令行界面 (CLI)、终端 (Terminal)、Shell、TTY的区别
虽然这个话题已是老生常谈,搜索一下应该也能找到大把的相关文章.不过难得提到了这方面,就趁此机会把我的理解写下来,一来看看我是不是真正理解了,二来看看我能不能把它们之间的区别讲得更加简明易懂. 0. 太 ...
- linux - console/terminal/virtual console/pseudo terminal ...
http://en.wikipedia.org/wiki/System_console System console Knoppix system console showing the boot p ...
- terminal、Shell、tty和console
最早的电脑有带很多开关和指示灯的面板——console(概念来自管风琴),一台电脑通常一个Console,化为主机一部分,和CPU共享机柜. 一台大型主机往往支持多用户,每个用户使用的终端——term ...
- shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?
原文链接 终端(terminal,或者叫物理终端):是一种设备,不是一个程序,一般说的就是能提供命令行用户界面的设备,典型的是屏幕和键盘,或其他的一些物理终端.虚拟终端:屏幕和键盘只是一个终端,可能不 ...
- (Linux基础学习)第三章:terminal与shell的简介和修改命令提示符颜色
第1节:terminal终端设备终端:键盘.鼠标.显示器物理终端(/dev/console):控制台console虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6]) ...
- python反弹tty shell
linux环境下进行内外渗透需要反弹shell连接内网ssh,Telnet等,就需要tty层的shell了.python代码转过来的,备用. #!/usr/bin/python import sys ...
- Linux 控制台/终端/tty/shell
一.简介 使用linux已经有一段时间,却一直弄不明白这几个概念之间的区别.这些概念本身有着非常浓厚的历史气息,随着时代的发展,他们的含义也在发生改变,它们有些已经失去了最初的含义,但是它们的名字却被 ...
- linux terminal 日常shell
1 ubuntu中如何将终端添加到右键 /home/cui/.local/share/nautilus/scripts #!/bin/bash #cd $NAUTILUS_SCRIPT_CURRENT ...
随机推荐
- springboot集成过滤器
封装自定义接口filter 包含两个方法,第一个过滤的路径数组,第二个为过滤器执行的顺序.spring boot 会按照order值的大小,从小到大的顺序来依次过滤. package com.thee ...
- python 的参数总结
一.形参和实参 函数参数的作用是传递数据给函数使用 在使用的过程中,参数有两种形式:形式参数和实际参数 形参: 定义函数的参数 实参: 调用函数时的参数 根据实际参数类型不同,将实际参数传递给形参的方 ...
- 融资拿钱----HHR计划---第四课
第一节:开始学习 1,预热思考题: (1)投资人愿意投你?你想过你的投资逻辑是什么吗?(赚钱=行业天花板*成功的概率=细分行业天花板*集中度*whynow*whyme) (2)融资就是为了拿钱吗?你了 ...
- 在spring boot中使用jasypt对配置文件中的敏感字符串加密
在spring boot的配置文件application.property(application.yml)文件中常常配置一些密码类的字符,如果用明文则很容易被盗用,可以使用jasypt在配置密码的地 ...
- Linux命令:ss命令
ss功能:用来显示套接字信息的,类似于netstat,可以显示更多的信息,用于替代netstat. ss常用选项 ss -t:tcp协议的连接 -u:udp协议的链接 -w:裸套接字相关 -x:uni ...
- IP地址规划
IP地址(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址.它为互联网上的每一个网络 ...
- 解题报告:luogu P1196 [NOI2002]银河英雄传说
由于并查集让我很自闭(其实是我太弱了),所以学习了加权并查集,这是例题: 题目链接:P1196 [NOI2002]银河英雄传说 不是很简单,但对于大佬还是签到题. 合并与路径压缩时直接维护\(dis[ ...
- 学习SpringMVC 文件上传 遇到的问题,403:returned a response status of 403 Forbidden ,409文件夹未找到
问题一: 409:文件夹没有创建好,找不到指定的文件夹,创建了即可. 问题二: 403:returned a response status of 403 Forbidden 我出现这个错误的原因是因 ...
- PyCharm破解安装方法
1.在3322下载站下好压缩包之后,直接点击安装文件“pycharm-professional-2018.1.exe”进行安装,默认点击“next”下一步进行操作2.选择文件所创建的位置.位置可以选择 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:条纹表格
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...