问题:
我通过串行端口(又名 RS-232)插入设备(即 GSM 调制解调器),我需要查看/dev/该设备与文件系统中的哪个文件绑定,以便能够与其进行通信。不幸的是/dev/,dmesg输出中没有新创建的文件,也看不到任何内容。所以这似乎是一个很难回答的问题。
背景:
我从来没有使用过串口设备,所以昨天,当出现需要时,我尝试谷歌它但找不到任何有用的东西。我花了几个小时寻找,我想分享一个找到的答案,因为它可能对某人有所帮助。
我正在寻找有关按下此组合键以更改当前终端时 Linux 中会发生什么的解释。特别是,什么软件组件拦截了这个组合键并改变了终端?是内核吗?如果是内核,您能否提供处理此问题的源文件的位置?
编辑:我想了解它在图形(X11)和基于文本的环境中是如何工作的。
我正在尝试使用Capistrano设置部署脚本 在一个步骤中,cap deploy:setup脚本正在连接到我的服务器并尝试运行创建目录的命令。然后我看到一个错误:msudo: sorry, you must have a tty to run sudo
有一个建议的解决方案可以在我的服务器上禁用 requiretty。https://unix.stackexchange.com/a/49078/26271
我想知道这样做是否安全?
在谷歌搜索了大约一个小时后,我不敢相信之前没有人真正问过这个问题......
所以我有一个在 TTY1 上运行的脚本。如何让该脚本在 TTY2 上启动一些任意程序?
tty,它会告诉您您当前使用的是哪个 TTY。writevt,它将一行文本写入不同的 TTY。chvt,它改变了当前显示的 TTY。我不想显示TTY2。我只希望主脚本继续正常执行,但是如果我手动切换到 TTY2,我可以与第二个程序进行交互。
如何设置特定 tty(在本例中为串行端口)的波特率?我尝试使用
stty -F /dev/tty.iap ispeed 19200
Run Code Online (Sandbox Code Playgroud)
但是Invalid argument对于我尝试的每个速度(2400、4800 等)都会得到错误,除了 9600(默认值)。我可以使用cfsetspeed. 我是否需要在其他地方进行更改,例如ttys文件?
如果你启动一个终端并调用一个可执行文件(为了简单起见,假设它是面向行的),你会从可执行文件中得到对命令的回复。这如何打印给您(用户)?终端是否做类似的事情pexpect?(轮询等待输出)还是什么?它如何获得要打印输出的通知?终端如何启动程序?(它类似于 python 的 os.fork() 吗?)我很困惑终端是如何工作的,我一直在玩一些终端模拟器,但我仍然不明白所有这些魔法是如何工作的。我正在查看 konsole (kde) 和 yakuake(可能使用 konsole)的来源,但我无法理解所有这些魔法发生的地方。
我的 xorg 会话在 tty1 上,如果我想从 tty 发出命令(因为由于某些原因我无法从 xorg 会话执行此操作),例如,我按Ctrl+ Alt+F2并键入命令。但是我不能从任何 tty 启动图形应用程序,除非首先,因为其中没有 xorg 会话。然后我很好奇如何切换到 xorg 会话正在运行的 tty1 并返回到会话?
在本页提出的第二种方法中,可以使用以下命令获取运行 bash 的 tty:
ps ax | grep $$ | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
我想这肯定有点懒惰,列出所有正在运行的进程只是为了提取其中一个进程。这样做会不会更有效率(我也在问这是否会引入不良影响):
ps -p $$ | tail -n 1 | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
仅供参考,我遇到了这个问题,因为有时第一个命令实际上会产生两行(或更多行)。这会随机发生,当有另一个进程使用包含$$子字符串的 PID 运行时。在第二种方法中,我通过请求我知道我想要的 PID 来避免这种情况。
什么是“回滚”,并在节目像“滚动缓冲区”bash和screen,以及它们如何涉及到TTY,正在运行的程序,标准输入/输出/标准错误?
这是迄今为止我发现的“回滚”的唯一定义(在archlinux wiki 中):
回滚是在文本控制台中实现的一项功能,它允许用户返回查看已滚出屏幕的文本行。这是通过在视频适配器和显示设备之间为此目的创建的缓冲区实现的;回滚缓冲区。
但是,这给我带来了更多的问题:
vim中screen启动的bash启动中ssh启动,这些程序中的哪些正在控制回滚缓冲区?我也用screen,以转储回溯到一个文件中。这个文件的顶部有很多空白,我的终端模拟器显示的“视图”似乎只是缓冲区底部的几行。
vim可以“清除”我的整个终端窗口,因为它可以临时访问父 shell 的回滚缓冲区?vim使用它自己的回滚缓冲区,该缓冲区以某种方式覆盖在父回滚缓冲区之上?